From 116293b448984379db95c266ddfa81319b8c5c7b Mon Sep 17 00:00:00 2001 From: Fabio Beltramini Date: Fri, 11 Aug 2023 15:15:55 -0400 Subject: [PATCH 1/5] feat: generate SDKs for Looker 23.14 Release-As: 23.14.0 --- csharp/rtl/Constants.cs | 4 +- csharp/sdk/3.1/methods.cs | 50 +- csharp/sdk/3.1/models.cs | 6 +- csharp/sdk/4.0/methods.cs | 56 +- csharp/sdk/4.0/models.cs | 74 +- kotlin/src/main/com/looker/sdk/Constants.kt | 4 +- packages/sdk/src/3.1/funcs.ts | 48 +- packages/sdk/src/3.1/methods.ts | 48 +- packages/sdk/src/3.1/methodsInterface.ts | 48 +- packages/sdk/src/3.1/models.ts | 8 +- packages/sdk/src/3.1/streams.ts | 48 +- packages/sdk/src/4.0/funcs.ts | 54 +- packages/sdk/src/4.0/methods.ts | 54 +- packages/sdk/src/4.0/methodsInterface.ts | 54 +- packages/sdk/src/4.0/models.ts | 108 +- packages/sdk/src/4.0/streams.ts | 54 +- packages/sdk/src/constants.ts | 2 +- python/looker_sdk/sdk/api31/methods.py | 50 +- python/looker_sdk/sdk/api31/models.py | 10 +- python/looker_sdk/sdk/api40/methods.py | 56 +- python/looker_sdk/sdk/api40/models.py | 140 +- python/looker_sdk/sdk/constants.py | 2 +- spec/Looker.3.1.json | 31 +- spec/Looker.3.1.oas.json | 31 +- spec/Looker.4.0.json | 163 +- spec/Looker.4.0.oas.json | 157 +- swift/looker/rtl/constants.swift | 4 +- swift/looker/sdk/methods.swift | 9140 ++++----- swift/looker/sdk/models.swift | 18129 +++++++----------- swift/looker/sdk/streams.swift | 7328 +++---- 30 files changed, 13657 insertions(+), 22304 deletions(-) diff --git a/csharp/rtl/Constants.cs b/csharp/rtl/Constants.cs index ac2269dfa..e0cff6cf6 100644 --- a/csharp/rtl/Constants.cs +++ b/csharp/rtl/Constants.cs @@ -59,9 +59,9 @@ public struct Constants internal static readonly Regex ContentPatternBinary = new Regex(MatchModeBinary, RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Compiled); - public const string DefaultApiVersion = "4.0"; + public const string DefaultApiVersion = "3.1"; public const string AgentPrefix = "CS-SDK"; - public const string LookerVersion = "23.12"; + public const string LookerVersion = "23.14"; public const string Bearer = "Bearer"; public const string LookerAppiId = "x-looker-appid"; diff --git a/csharp/sdk/3.1/methods.cs b/csharp/sdk/3.1/methods.cs index 47d60f9db..f79996918 100644 --- a/csharp/sdk/3.1/methods.cs +++ b/csharp/sdk/3.1/methods.cs @@ -136,35 +136,39 @@ public async Task> logout( #region Auth: Manage User Authentication Configuration - /// ### Create SSO Embed URL + /// ### Create Signed Embed URL /// - /// Creates an SSO embed URL and cryptographically signs it with an embed secret. + /// Creates a signed embed URL and cryptographically signs it with an embed secret. /// This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - /// Do not make any modifications to this URL - any change may invalidate the signature and + /// Do not make any modifications to the returned URL - any change may invalidate the signature and /// cause the URL to fail to load a Looker embed session. /// - /// A signed SSO embed URL can only be used once. After it has been used to request a page from the - /// Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + /// A signed embed URL can only be **used once**. After the URL has been used to request a page from the + /// Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent /// 'replay attacks'. /// /// The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. /// To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - /// The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - /// copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + /// The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + /// to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. /// - /// Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + /// Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) /// and the lists of models and permissions assigned to the embed user. - /// At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + /// At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. /// These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. /// - /// The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + /// The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. /// /// This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - /// SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + /// embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + /// /// To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. /// /// The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - /// if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + /// if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + /// a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + /// + /// The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. /// /// #### Security Note /// Protect this signed URL as you would an access token or password credentials - do not write @@ -176,7 +180,7 @@ public async Task> logout( /// /// POST /embed/sso_url -> EmbedUrlResponse /// - /// EmbedUrlResponse Signed SSO URL (application/json) + /// EmbedUrlResponse Signed Embed URL (application/json) /// public async Task> create_sso_embed_url( EmbedSsoParams body, @@ -194,7 +198,7 @@ public async Task> create_sso_embed_url /// /// Configuring LDAP impacts authentication for all users. This configuration should be done carefully. /// - /// Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + /// Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). /// /// LDAP is enabled or disabled for Looker using the **enabled** field. /// @@ -273,9 +277,9 @@ public async Task> test_ldap_config /// ### Test the connection authentication settings for an LDAP configuration. /// - /// This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + /// This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. /// - /// **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + /// **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. /// /// Example: /// ```json @@ -288,7 +292,7 @@ public async Task> test_ldap_config /// } /// ``` /// - /// Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + /// Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. /// /// The active LDAP settings are not modified. /// @@ -307,9 +311,9 @@ public async Task> test_ldap_config /// ### Test the user authentication settings for an LDAP configuration without authenticating the user. /// - /// This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + /// This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. /// - /// This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + /// This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. /// /// **test_ldap_user** is required. /// @@ -330,9 +334,9 @@ public async Task> test_ldap_config /// ### Test the user authentication settings for an LDAP configuration. /// - /// This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + /// This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. /// - /// Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + /// Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. /// /// **test_ldap_user** and **test_ldap_password** are required. /// @@ -360,7 +364,7 @@ public async Task> test_ldap_config /// /// Configuring OIDC impacts authentication for all users. This configuration should be done carefully. /// - /// Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + /// Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). /// /// OIDC is enabled or disabled for Looker using the **enabled** field. /// @@ -500,7 +504,7 @@ public async Task> force_password_reset_at_next_l /// /// Configuring SAML impacts authentication for all users. This configuration should be done carefully. /// - /// Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + /// Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). /// /// SAML is enabled or disabled for Looker using the **enabled** field. /// diff --git a/csharp/sdk/3.1/models.cs b/csharp/sdk/3.1/models.cs index 7d7d0020d..966b042e7 100644 --- a/csharp/sdk/3.1/models.cs +++ b/csharp/sdk/3.1/models.cs @@ -1427,11 +1427,11 @@ public class EmbedSsoParams : SdkModel { /// The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. public Url target_url { get; set; } = ""; - /// Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + /// 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). public long? session_length { get; set; } = null; /// 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. public bool? force_logout_login { get; set; } = null; - /// A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + /// A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. public string? external_user_id { get; set; } = null; /// First name of the embed user. Defaults to 'Embed' if not specified public string? first_name { get; set; } = null; @@ -1451,6 +1451,8 @@ public class EmbedSsoParams : SdkModel public StringDictionary? user_attributes { get; set; } = null; /// 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. public long? secret_id { get; set; } = null; + /// 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 + public string? embed_domain { get; set; } = null; } public class EmbedUrlResponse : SdkModel diff --git a/csharp/sdk/4.0/methods.cs b/csharp/sdk/4.0/methods.cs index 1a1d1068d..db336c348 100644 --- a/csharp/sdk/4.0/methods.cs +++ b/csharp/sdk/4.0/methods.cs @@ -645,35 +645,39 @@ public async Task> delete_embed_secret( return await AuthRequest(HttpMethod.Delete, $"/embed_config/secrets/{embed_secret_id}", null,null,options); } - /// ### Create SSO Embed URL + /// ### Create Signed Embed URL /// - /// Creates an SSO embed URL and cryptographically signs it with an embed secret. + /// Creates a signed embed URL and cryptographically signs it with an embed secret. /// This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - /// Do not make any modifications to this URL - any change may invalidate the signature and + /// Do not make any modifications to the returned URL - any change may invalidate the signature and /// cause the URL to fail to load a Looker embed session. /// - /// A signed SSO embed URL can only be used once. After it has been used to request a page from the - /// Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + /// A signed embed URL can only be **used once**. After the URL has been used to request a page from the + /// Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent /// 'replay attacks'. /// /// The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. /// To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - /// The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - /// copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + /// The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + /// to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. /// - /// Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + /// Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) /// and the lists of models and permissions assigned to the embed user. - /// At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + /// At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. /// These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. /// - /// The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + /// The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. /// /// This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - /// SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + /// embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + /// /// To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. /// /// The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - /// if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + /// if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + /// a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + /// + /// The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. /// /// #### Security Note /// Protect this signed URL as you would an access token or password credentials - do not write @@ -685,7 +689,7 @@ public async Task> delete_embed_secret( /// /// POST /embed/sso_url -> EmbedUrlResponse /// - /// EmbedUrlResponse Signed SSO URL (application/json) + /// EmbedUrlResponse Signed Embed URL (application/json) /// public async Task> create_sso_embed_url( EmbedSsoParams body, @@ -829,7 +833,7 @@ public async Task> test_ldap_config /// ### Test the connection authentication settings for an LDAP configuration. /// - /// This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + /// This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. /// - /// **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + /// **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. /// /// Example: /// ```json @@ -923,7 +927,7 @@ public async Task> test_ldap_config /// } /// ``` /// - /// Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + /// Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. /// /// The active LDAP settings are not modified. /// @@ -942,9 +946,9 @@ public async Task> test_ldap_config /// ### Test the user authentication settings for an LDAP configuration without authenticating the user. /// - /// This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + /// This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. /// - /// This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + /// This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. /// /// **test_ldap_user** is required. /// @@ -965,9 +969,9 @@ public async Task> test_ldap_config /// ### Test the user authentication settings for an LDAP configuration. /// - /// This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + /// This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. /// - /// Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + /// Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. /// /// **test_ldap_user** and **test_ldap_password** are required. /// @@ -1226,7 +1230,7 @@ public async Task> deactivate_app_user( /// /// Configuring OIDC impacts authentication for all users. This configuration should be done carefully. /// - /// Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + /// Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). /// /// OIDC is enabled or disabled for Looker using the **enabled** field. /// @@ -1366,7 +1370,7 @@ public async Task> force_password_reset_at_next_l /// /// Configuring SAML impacts authentication for all users. This configuration should be done carefully. /// - /// Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + /// Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). /// /// SAML is enabled or disabled for Looker using the **enabled** field. /// @@ -2473,8 +2477,10 @@ public async Task> mobile_settings( /// - extension_framework_enabled /// - extension_load_url_enabled /// - marketplace_auto_install_enabled + /// - marketplace_automation /// - marketplace_terms_accepted /// - marketplace_enabled + /// - marketplace_site /// - onboarding_enabled /// - privatelabel_configuration /// - timezone @@ -2482,6 +2488,7 @@ public async Task> mobile_settings( /// - email_domain_allowlist /// - embed_cookieless_v2 /// - embed_enabled + /// - embed_config /// /// GET /setting -> Setting /// @@ -2505,8 +2512,10 @@ public async Task> get_setting( /// - extension_framework_enabled /// - extension_load_url_enabled /// - marketplace_auto_install_enabled + /// - marketplace_automation /// - marketplace_terms_accepted /// - marketplace_enabled + /// - marketplace_site /// - onboarding_enabled /// - privatelabel_configuration /// - timezone @@ -2514,6 +2523,7 @@ public async Task> get_setting( /// - email_domain_allowlist /// - embed_cookieless_v2 /// - embed_enabled + /// - embed_config /// /// See the `Setting` type for more information on the specific values that can be configured. /// diff --git a/csharp/sdk/4.0/models.cs b/csharp/sdk/4.0/models.cs index 86c85ecad..88ad7525e 100644 --- a/csharp/sdk/4.0/models.cs +++ b/csharp/sdk/4.0/models.cs @@ -21,7 +21,7 @@ /// SOFTWARE. /// -/// 327 API models: 245 Spec, 0 Request, 60 Write, 22 Enum +/// 329 API models: 247 Spec, 0 Request, 60 Write, 22 Enum #nullable enable using System; @@ -1922,13 +1922,39 @@ public class EgressIpAddresses : SdkModel public string[]? egress_ip_addresses { get; set; } = null; } +public class EmbedConfig : SdkModel +{ + /// List of domains to allow for embedding + public string[]? domain_allowlist { get; set; } = null; + /// List of base urls to allow for alert/schedule + public string[]? alert_url_allowlist { get; set; } = null; + /// Owner of who defines the alert/schedule params on the base url + public string? alert_url_param_owner { get; set; } = null; + /// Label for the alert/schedule url + public string? alert_url_label { get; set; } = null; + /// Is SSO embedding enabled for this Looker + public bool? sso_auth_enabled { get; set; } = null; + /// Is Cookieless embedding enabled for this Looker + public bool? embed_cookieless_v2 { get; set; } = null; + /// Is embed content navigation enabled for this looker + public bool? embed_content_navigation { get; set; } = null; + /// Is embed content management enabled for this Looker + public bool? embed_content_management { get; set; } = null; + /// 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. + public bool? strict_sameorigin_for_login { get; set; } = null; + /// When true, filters are enabled on embedded Looks + public bool? look_filters { get; set; } = null; + /// When true, removes navigation to Looks from embedded dashboards and explores. + public bool? hide_look_navigation { get; set; } = null; +} + public class EmbedCookielessSessionAcquire : SdkModel { - /// Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + /// 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). public long? session_length { get; set; } = null; /// 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. public bool? force_logout_login { get; set; } = null; - /// A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + /// A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. public string? external_user_id { get; set; } = null; /// First name of the embed user. Defaults to 'Embed' if not specified public string? first_name { get; set; } = null; @@ -1946,10 +1972,10 @@ public class EmbedCookielessSessionAcquire : SdkModel public string? external_group_id { get; set; } = null; /// A dictionary of name-value pairs associating a Looker user attribute name with a value. public StringDictionary? user_attributes { get; set; } = null; - /// Token referencing the embed session and is used to generate new authentication, navigation and api tokens. - public string? session_reference_token { get; set; } = null; /// 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. public string? embed_domain { get; set; } = null; + /// Token referencing the embed session and is used to generate new authentication, navigation and api tokens. + public string? session_reference_token { get; set; } = null; } public class EmbedCookielessSessionAcquireResponse : SdkModel @@ -2002,7 +2028,7 @@ public class EmbedParams : SdkModel { /// The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. public string target_url { get; set; } = ""; - /// Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + /// 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). public long? session_length { get; set; } = null; /// 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. public bool? force_logout_login { get; set; } = null; @@ -2031,11 +2057,11 @@ public class EmbedSsoParams : SdkModel { /// The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. public string target_url { get; set; } = ""; - /// Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + /// 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). public long? session_length { get; set; } = null; /// 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. public bool? force_logout_login { get; set; } = null; - /// A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + /// A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. public string? external_user_id { get; set; } = null; /// First name of the embed user. Defaults to 'Embed' if not specified public string? first_name { get; set; } = null; @@ -2055,6 +2081,8 @@ public class EmbedSsoParams : SdkModel public StringDictionary? user_attributes { get; set; } = null; /// 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. public string? secret_id { get; set; } = null; + /// 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 + public string? embed_domain { get; set; } = null; } public class EmbedUrlResponse : SdkModel @@ -3478,6 +3506,16 @@ public class Manifest : SdkModel public LocalizationSettings? localization_settings { get; set; } } +public class MarketplaceAutomation : SdkModel +{ + /// Whether marketplace auto installation is enabled + public bool? install_enabled { get; set; } = null; + /// Whether marketplace auto update is enabled for looker extensions + public bool? update_looker_enabled { get; set; } = null; + /// Whether marketplace auto update is enabled for third party extensions + public bool? update_third_party_enabled { get; set; } = null; +} + public class MaterializePDT : SdkModel { /// The ID of the enqueued materialization task (read-only) @@ -4735,12 +4773,15 @@ public class Setting : SdkModel { /// Toggle extension framework on or off public bool? extension_framework_enabled { get; set; } = null; - /// (DEPRECATED) Toggle extension extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. + /// (DEPRECATED) Toggle extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. public bool? extension_load_url_enabled { get; set; } = null; - /// Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled. + /// (DEPRECATED) Toggle marketplace auto install on or off. Deprecated - do not use. Auto install can now be enabled via marketplace automation settings public bool? marketplace_auto_install_enabled { get; set; } = null; + public MarketplaceAutomation? marketplace_automation { get; set; } /// Toggle marketplace on or off public bool? marketplace_enabled { get; set; } = null; + /// Location of Looker marketplace CDN (read-only) + public string? marketplace_site { get; set; } = null; /// 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. public bool? marketplace_terms_accepted { get; set; } = null; public PrivatelabelConfiguration? privatelabel_configuration { get; set; } @@ -4759,10 +4800,11 @@ public class Setting : SdkModel public bool? override_warnings { get; set; } = null; /// An array of Email Domain Allowlist of type string for Scheduled Content public string[]? email_domain_allowlist { get; set; } = null; - /// Toggle cookieless embed setting + /// (DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value. public bool? embed_cookieless_v2 { get; set; } = null; /// True if embedding is enabled https://cloud.google.com/looker/docs/r/looker-core-feature-embed, false otherwise (read-only) public bool? embed_enabled { get; set; } = null; + public EmbedConfig? embed_config { get; set; } } public class SmtpNodeStatus : SdkModel @@ -6704,15 +6746,16 @@ public class WriteSessionConfig : SdkModel } /// Dynamic writeable type for Setting removes: -/// embed_enabled +/// marketplace_site, embed_enabled public class WriteSetting : SdkModel { /// Toggle extension framework on or off public bool? extension_framework_enabled { get; set; } = null; - /// (DEPRECATED) Toggle extension extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. + /// (DEPRECATED) Toggle extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. public bool? extension_load_url_enabled { get; set; } = null; - /// Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled. + /// (DEPRECATED) Toggle marketplace auto install on or off. Deprecated - do not use. Auto install can now be enabled via marketplace automation settings public bool? marketplace_auto_install_enabled { get; set; } = null; + public MarketplaceAutomation? marketplace_automation { get; set; } /// Toggle marketplace on or off public bool? marketplace_enabled { get; set; } = null; /// 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. @@ -6737,8 +6780,9 @@ public class WriteSetting : SdkModel public bool? override_warnings { get; set; } = null; /// An array of Email Domain Allowlist of type string for Scheduled Content public string[]? email_domain_allowlist { get; set; } = null; - /// Toggle cookieless embed setting + /// (DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value. public bool? embed_cookieless_v2 { get; set; } = null; + public EmbedConfig? embed_config { get; set; } } /// Dynamic writeable type for SshServer removes: diff --git a/kotlin/src/main/com/looker/sdk/Constants.kt b/kotlin/src/main/com/looker/sdk/Constants.kt index 19261afb7..d5dc3ad76 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 = "23.12" -const val API_VERSION = "4.0" +const val LOOKER_VERSION = "23.14" +const val API_VERSION = "3.1" const val AGENT_TAG = "$SDK_TAG $LOOKER_VERSION" const val LOOKER_APPID = "x-looker-appid" diff --git a/packages/sdk/src/3.1/funcs.ts b/packages/sdk/src/3.1/funcs.ts index 0cdce07ae..a57181824 100644 --- a/packages/sdk/src/3.1/funcs.ts +++ b/packages/sdk/src/3.1/funcs.ts @@ -375,35 +375,39 @@ export const logout = async ( //#region Auth: Manage User Authentication Configuration /** - * ### Create SSO Embed URL + * ### Create Signed Embed URL * - * Creates an SSO embed URL and cryptographically signs it with an embed secret. + * Creates a signed embed URL and cryptographically signs it with an embed secret. * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to this URL - any change may invalidate the signature and + * Do not make any modifications to the returned URL - any change may invalidate the signature and * cause the URL to fail to load a Looker embed session. * - * A signed SSO embed URL can only be used once. After it has been used to request a page from the - * Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent * 'replay attacks'. * * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. * - * Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. * - * The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. * * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. * * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. * * #### Security Note * Protect this signed URL as you would an access token or password credentials - do not write @@ -443,7 +447,7 @@ export const create_sso_embed_url = async ( * * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * LDAP is enabled or disabled for Looker using the **enabled** field. * @@ -546,9 +550,9 @@ export const test_ldap_config_connection = async ( /** * ### Test the connection authentication settings for an LDAP configuration. * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. * * Example: * ```json @@ -561,7 +565,7 @@ export const test_ldap_config_connection = async ( * } * ``` * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * The active LDAP settings are not modified. * @@ -590,9 +594,9 @@ export const test_ldap_config_auth = async ( /** * ### Test the user authentication settings for an LDAP configuration without authenticating the user. * - * This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. * - * This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. * * **test_ldap_user** is required. * @@ -623,9 +627,9 @@ export const test_ldap_config_user_info = async ( /** * ### Test the user authentication settings for an LDAP configuration. * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * **test_ldap_user** and **test_ldap_password** are required. * @@ -663,7 +667,7 @@ export const test_ldap_config_user_auth = async ( * * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * OIDC is enabled or disabled for Looker using the **enabled** field. * @@ -873,7 +877,7 @@ export const force_password_reset_at_next_login_for_all_users = async ( * * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * SAML is enabled or disabled for Looker using the **enabled** field. * diff --git a/packages/sdk/src/3.1/methods.ts b/packages/sdk/src/3.1/methods.ts index 20eefb130..eb980bfdc 100644 --- a/packages/sdk/src/3.1/methods.ts +++ b/packages/sdk/src/3.1/methods.ts @@ -370,35 +370,39 @@ export class Looker31SDK extends APIMethods implements ILooker31SDK { //#region Auth: Manage User Authentication Configuration /** - * ### Create SSO Embed URL + * ### Create Signed Embed URL * - * Creates an SSO embed URL and cryptographically signs it with an embed secret. + * Creates a signed embed URL and cryptographically signs it with an embed secret. * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to this URL - any change may invalidate the signature and + * Do not make any modifications to the returned URL - any change may invalidate the signature and * cause the URL to fail to load a Looker embed session. * - * A signed SSO embed URL can only be used once. After it has been used to request a page from the - * Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent * 'replay attacks'. * * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. * - * Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. * - * The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. * * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. * * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. * * #### Security Note * Protect this signed URL as you would an access token or password credentials - do not write @@ -436,7 +440,7 @@ export class Looker31SDK extends APIMethods implements ILooker31SDK { * * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * LDAP is enabled or disabled for Looker using the **enabled** field. * @@ -533,9 +537,9 @@ export class Looker31SDK extends APIMethods implements ILooker31SDK { /** * ### Test the connection authentication settings for an LDAP configuration. * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. * * Example: * ```json @@ -548,7 +552,7 @@ export class Looker31SDK extends APIMethods implements ILooker31SDK { * } * ``` * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * The active LDAP settings are not modified. * @@ -575,9 +579,9 @@ export class Looker31SDK extends APIMethods implements ILooker31SDK { /** * ### Test the user authentication settings for an LDAP configuration without authenticating the user. * - * This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. * - * This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. * * **test_ldap_user** is required. * @@ -606,9 +610,9 @@ export class Looker31SDK extends APIMethods implements ILooker31SDK { /** * ### Test the user authentication settings for an LDAP configuration. * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * **test_ldap_user** and **test_ldap_password** are required. * @@ -644,7 +648,7 @@ export class Looker31SDK extends APIMethods implements ILooker31SDK { * * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * OIDC is enabled or disabled for Looker using the **enabled** field. * @@ -838,7 +842,7 @@ export class Looker31SDK extends APIMethods implements ILooker31SDK { * * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * SAML is enabled or disabled for Looker using the **enabled** field. * diff --git a/packages/sdk/src/3.1/methodsInterface.ts b/packages/sdk/src/3.1/methodsInterface.ts index 0d184fa82..1ae6779b1 100644 --- a/packages/sdk/src/3.1/methodsInterface.ts +++ b/packages/sdk/src/3.1/methodsInterface.ts @@ -341,35 +341,39 @@ export interface ILooker31SDK extends IAPIMethods { //#region Auth: Manage User Authentication Configuration /** - * ### Create SSO Embed URL + * ### Create Signed Embed URL * - * Creates an SSO embed URL and cryptographically signs it with an embed secret. + * Creates a signed embed URL and cryptographically signs it with an embed secret. * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to this URL - any change may invalidate the signature and + * Do not make any modifications to the returned URL - any change may invalidate the signature and * cause the URL to fail to load a Looker embed session. * - * A signed SSO embed URL can only be used once. After it has been used to request a page from the - * Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent * 'replay attacks'. * * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. * - * Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. * - * The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. * * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. * * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. * * #### Security Note * Protect this signed URL as you would an access token or password credentials - do not write @@ -400,7 +404,7 @@ export interface ILooker31SDK extends IAPIMethods { * * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * LDAP is enabled or disabled for Looker using the **enabled** field. * @@ -481,9 +485,9 @@ export interface ILooker31SDK extends IAPIMethods { /** * ### Test the connection authentication settings for an LDAP configuration. * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. * * Example: * ```json @@ -496,7 +500,7 @@ export interface ILooker31SDK extends IAPIMethods { * } * ``` * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * The active LDAP settings are not modified. * @@ -516,9 +520,9 @@ export interface ILooker31SDK extends IAPIMethods { /** * ### Test the user authentication settings for an LDAP configuration without authenticating the user. * - * This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. * - * This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. * * **test_ldap_user** is required. * @@ -540,9 +544,9 @@ export interface ILooker31SDK extends IAPIMethods { /** * ### Test the user authentication settings for an LDAP configuration. * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * **test_ldap_user** and **test_ldap_password** are required. * @@ -571,7 +575,7 @@ export interface ILooker31SDK extends IAPIMethods { * * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * OIDC is enabled or disabled for Looker using the **enabled** field. * @@ -712,7 +716,7 @@ export interface ILooker31SDK extends IAPIMethods { * * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * SAML is enabled or disabled for Looker using the **enabled** field. * diff --git a/packages/sdk/src/3.1/models.ts b/packages/sdk/src/3.1/models.ts index 1c861092d..433fae991 100644 --- a/packages/sdk/src/3.1/models.ts +++ b/packages/sdk/src/3.1/models.ts @@ -2393,7 +2393,7 @@ export interface IEmbedSsoParams { */ target_url: Url /** - * Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + * 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). */ session_length?: number | null /** @@ -2401,7 +2401,7 @@ export interface IEmbedSsoParams { */ force_logout_login?: boolean /** - * A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + * A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. */ external_user_id?: string | null /** @@ -2440,6 +2440,10 @@ export interface IEmbedSsoParams { * 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. */ secret_id?: number | null + /** + * 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 + */ + embed_domain?: string | null } export interface IEmbedUrlResponse { diff --git a/packages/sdk/src/3.1/streams.ts b/packages/sdk/src/3.1/streams.ts index 86a94b129..c3fa5ae8d 100644 --- a/packages/sdk/src/3.1/streams.ts +++ b/packages/sdk/src/3.1/streams.ts @@ -386,35 +386,39 @@ export class Looker31SDKStream extends APIMethods { //#region Auth: Manage User Authentication Configuration /** - * ### Create SSO Embed URL + * ### Create Signed Embed URL * - * Creates an SSO embed URL and cryptographically signs it with an embed secret. + * Creates a signed embed URL and cryptographically signs it with an embed secret. * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to this URL - any change may invalidate the signature and + * Do not make any modifications to the returned URL - any change may invalidate the signature and * cause the URL to fail to load a Looker embed session. * - * A signed SSO embed URL can only be used once. After it has been used to request a page from the - * Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent * 'replay attacks'. * * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. * - * Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. * - * The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. * * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. * * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. * * #### Security Note * Protect this signed URL as you would an access token or password credentials - do not write @@ -456,7 +460,7 @@ export class Looker31SDKStream extends APIMethods { * * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * LDAP is enabled or disabled for Looker using the **enabled** field. * @@ -570,9 +574,9 @@ export class Looker31SDKStream extends APIMethods { /** * ### Test the connection authentication settings for an LDAP configuration. * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. * * Example: * ```json @@ -585,7 +589,7 @@ export class Looker31SDKStream extends APIMethods { * } * ``` * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * The active LDAP settings are not modified. * @@ -616,9 +620,9 @@ export class Looker31SDKStream extends APIMethods { /** * ### Test the user authentication settings for an LDAP configuration without authenticating the user. * - * This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. * - * This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. * * **test_ldap_user** is required. * @@ -651,9 +655,9 @@ export class Looker31SDKStream extends APIMethods { /** * ### Test the user authentication settings for an LDAP configuration. * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * **test_ldap_user** and **test_ldap_password** are required. * @@ -693,7 +697,7 @@ export class Looker31SDKStream extends APIMethods { * * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * OIDC is enabled or disabled for Looker using the **enabled** field. * @@ -924,7 +928,7 @@ export class Looker31SDKStream extends APIMethods { * * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * SAML is enabled or disabled for Looker using the **enabled** field. * diff --git a/packages/sdk/src/4.0/funcs.ts b/packages/sdk/src/4.0/funcs.ts index 9998d0a40..8614f6764 100644 --- a/packages/sdk/src/4.0/funcs.ts +++ b/packages/sdk/src/4.0/funcs.ts @@ -1078,35 +1078,39 @@ export const delete_embed_secret = async ( } /** - * ### Create SSO Embed URL + * ### Create Signed Embed URL * - * Creates an SSO embed URL and cryptographically signs it with an embed secret. + * Creates a signed embed URL and cryptographically signs it with an embed secret. * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to this URL - any change may invalidate the signature and + * Do not make any modifications to the returned URL - any change may invalidate the signature and * cause the URL to fail to load a Looker embed session. * - * A signed SSO embed URL can only be used once. After it has been used to request a page from the - * Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent * 'replay attacks'. * * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. * - * Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. * - * The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. * * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. * * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. * * #### Security Note * Protect this signed URL as you would an access token or password credentials - do not write @@ -1314,7 +1318,7 @@ export const generate_tokens_for_cookieless_session = async ( * * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * LDAP is enabled or disabled for Looker using the **enabled** field. * @@ -1417,9 +1421,9 @@ export const test_ldap_config_connection = async ( /** * ### Test the connection authentication settings for an LDAP configuration. * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. * * Example: * ```json @@ -1432,7 +1436,7 @@ export const test_ldap_config_connection = async ( * } * ``` * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * The active LDAP settings are not modified. * @@ -1461,9 +1465,9 @@ export const test_ldap_config_auth = async ( /** * ### Test the user authentication settings for an LDAP configuration without authenticating the user. * - * This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. * - * This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. * * **test_ldap_user** is required. * @@ -1494,9 +1498,9 @@ export const test_ldap_config_user_info = async ( /** * ### Test the user authentication settings for an LDAP configuration. * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * **test_ldap_user** and **test_ldap_password** are required. * @@ -1858,7 +1862,7 @@ export const deactivate_app_user = async ( * * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * OIDC is enabled or disabled for Looker using the **enabled** field. * @@ -2068,7 +2072,7 @@ export const force_password_reset_at_next_login_for_all_users = async ( * * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * SAML is enabled or disabled for Looker using the **enabled** field. * @@ -3658,8 +3662,10 @@ export const mobile_settings = async ( * - extension_framework_enabled * - extension_load_url_enabled * - marketplace_auto_install_enabled + * - marketplace_automation * - marketplace_terms_accepted * - marketplace_enabled + * - marketplace_site * - onboarding_enabled * - privatelabel_configuration * - timezone @@ -3667,6 +3673,7 @@ export const mobile_settings = async ( * - email_domain_allowlist * - embed_cookieless_v2 * - embed_enabled + * - embed_config * * GET /setting -> ISetting * @@ -3698,8 +3705,10 @@ export const get_setting = async ( * - extension_framework_enabled * - extension_load_url_enabled * - marketplace_auto_install_enabled + * - marketplace_automation * - marketplace_terms_accepted * - marketplace_enabled + * - marketplace_site * - onboarding_enabled * - privatelabel_configuration * - timezone @@ -3707,6 +3716,7 @@ export const get_setting = async ( * - email_domain_allowlist * - embed_cookieless_v2 * - embed_enabled + * - embed_config * * See the `Setting` type for more information on the specific values that can be configured. * diff --git a/packages/sdk/src/4.0/methods.ts b/packages/sdk/src/4.0/methods.ts index bd560d861..226f43c90 100644 --- a/packages/sdk/src/4.0/methods.ts +++ b/packages/sdk/src/4.0/methods.ts @@ -1031,35 +1031,39 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { } /** - * ### Create SSO Embed URL + * ### Create Signed Embed URL * - * Creates an SSO embed URL and cryptographically signs it with an embed secret. + * Creates a signed embed URL and cryptographically signs it with an embed secret. * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to this URL - any change may invalidate the signature and + * Do not make any modifications to the returned URL - any change may invalidate the signature and * cause the URL to fail to load a Looker embed session. * - * A signed SSO embed URL can only be used once. After it has been used to request a page from the - * Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent * 'replay attacks'. * * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. * - * Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. * - * The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. * * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. * * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. * * #### Security Note * Protect this signed URL as you would an access token or password credentials - do not write @@ -1260,7 +1264,7 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * LDAP is enabled or disabled for Looker using the **enabled** field. * @@ -1357,9 +1361,9 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { /** * ### Test the connection authentication settings for an LDAP configuration. * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. * * Example: * ```json @@ -1372,7 +1376,7 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * } * ``` * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * The active LDAP settings are not modified. * @@ -1399,9 +1403,9 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { /** * ### Test the user authentication settings for an LDAP configuration without authenticating the user. * - * This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. * - * This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. * * **test_ldap_user** is required. * @@ -1430,9 +1434,9 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { /** * ### Test the user authentication settings for an LDAP configuration. * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * **test_ldap_user** and **test_ldap_password** are required. * @@ -1770,7 +1774,7 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * OIDC is enabled or disabled for Looker using the **enabled** field. * @@ -1964,7 +1968,7 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * SAML is enabled or disabled for Looker using the **enabled** field. * @@ -3442,8 +3446,10 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * - extension_framework_enabled * - extension_load_url_enabled * - marketplace_auto_install_enabled + * - marketplace_automation * - marketplace_terms_accepted * - marketplace_enabled + * - marketplace_site * - onboarding_enabled * - privatelabel_configuration * - timezone @@ -3451,6 +3457,7 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * - email_domain_allowlist * - embed_cookieless_v2 * - embed_enabled + * - embed_config * * GET /setting -> ISetting * @@ -3480,8 +3487,10 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * - extension_framework_enabled * - extension_load_url_enabled * - marketplace_auto_install_enabled + * - marketplace_automation * - marketplace_terms_accepted * - marketplace_enabled + * - marketplace_site * - onboarding_enabled * - privatelabel_configuration * - timezone @@ -3489,6 +3498,7 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * - email_domain_allowlist * - embed_cookieless_v2 * - embed_enabled + * - embed_config * * See the `Setting` type for more information on the specific values that can be configured. * diff --git a/packages/sdk/src/4.0/methodsInterface.ts b/packages/sdk/src/4.0/methodsInterface.ts index 6c1e51a7f..7da0edb36 100644 --- a/packages/sdk/src/4.0/methodsInterface.ts +++ b/packages/sdk/src/4.0/methodsInterface.ts @@ -825,35 +825,39 @@ export interface ILooker40SDK extends IAPIMethods { ): Promise> /** - * ### Create SSO Embed URL + * ### Create Signed Embed URL * - * Creates an SSO embed URL and cryptographically signs it with an embed secret. + * Creates a signed embed URL and cryptographically signs it with an embed secret. * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to this URL - any change may invalidate the signature and + * Do not make any modifications to the returned URL - any change may invalidate the signature and * cause the URL to fail to load a Looker embed session. * - * A signed SSO embed URL can only be used once. After it has been used to request a page from the - * Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent * 'replay attacks'. * * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. * - * Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. * - * The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. * * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. * * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. * * #### Security Note * Protect this signed URL as you would an access token or password credentials - do not write @@ -1022,7 +1026,7 @@ export interface ILooker40SDK extends IAPIMethods { * * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * LDAP is enabled or disabled for Looker using the **enabled** field. * @@ -1103,9 +1107,9 @@ export interface ILooker40SDK extends IAPIMethods { /** * ### Test the connection authentication settings for an LDAP configuration. * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. * * Example: * ```json @@ -1118,7 +1122,7 @@ export interface ILooker40SDK extends IAPIMethods { * } * ``` * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * The active LDAP settings are not modified. * @@ -1138,9 +1142,9 @@ export interface ILooker40SDK extends IAPIMethods { /** * ### Test the user authentication settings for an LDAP configuration without authenticating the user. * - * This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. * - * This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. * * **test_ldap_user** is required. * @@ -1162,9 +1166,9 @@ export interface ILooker40SDK extends IAPIMethods { /** * ### Test the user authentication settings for an LDAP configuration. * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * **test_ldap_user** and **test_ldap_password** are required. * @@ -1407,7 +1411,7 @@ export interface ILooker40SDK extends IAPIMethods { * * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * OIDC is enabled or disabled for Looker using the **enabled** field. * @@ -1548,7 +1552,7 @@ export interface ILooker40SDK extends IAPIMethods { * * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * SAML is enabled or disabled for Looker using the **enabled** field. * @@ -2565,8 +2569,10 @@ export interface ILooker40SDK extends IAPIMethods { * - extension_framework_enabled * - extension_load_url_enabled * - marketplace_auto_install_enabled + * - marketplace_automation * - marketplace_terms_accepted * - marketplace_enabled + * - marketplace_site * - onboarding_enabled * - privatelabel_configuration * - timezone @@ -2574,6 +2580,7 @@ export interface ILooker40SDK extends IAPIMethods { * - email_domain_allowlist * - embed_cookieless_v2 * - embed_enabled + * - embed_config * * GET /setting -> ISetting * @@ -2596,8 +2603,10 @@ export interface ILooker40SDK extends IAPIMethods { * - extension_framework_enabled * - extension_load_url_enabled * - marketplace_auto_install_enabled + * - marketplace_automation * - marketplace_terms_accepted * - marketplace_enabled + * - marketplace_site * - onboarding_enabled * - privatelabel_configuration * - timezone @@ -2605,6 +2614,7 @@ export interface ILooker40SDK extends IAPIMethods { * - email_domain_allowlist * - embed_cookieless_v2 * - embed_enabled + * - embed_config * * See the `Setting` type for more information on the specific values that can be configured. * diff --git a/packages/sdk/src/4.0/models.ts b/packages/sdk/src/4.0/models.ts index 7f40f5cd9..e94cb2194 100644 --- a/packages/sdk/src/4.0/models.ts +++ b/packages/sdk/src/4.0/models.ts @@ -25,7 +25,7 @@ */ /** - * 387 API models: 245 Spec, 60 Request, 60 Write, 22 Enum + * 389 API models: 247 Spec, 60 Request, 60 Write, 22 Enum */ import type { IDictionary, DelimArray } from '@looker/sdk-rtl' @@ -3211,9 +3211,56 @@ export interface IEgressIpAddresses { egress_ip_addresses?: string[] | null } +export interface IEmbedConfig { + /** + * List of domains to allow for embedding + */ + domain_allowlist?: string[] | null + /** + * List of base urls to allow for alert/schedule + */ + alert_url_allowlist?: string[] | null + /** + * Owner of who defines the alert/schedule params on the base url + */ + alert_url_param_owner?: string | null + /** + * Label for the alert/schedule url + */ + alert_url_label?: string | null + /** + * Is SSO embedding enabled for this Looker + */ + sso_auth_enabled?: boolean + /** + * Is Cookieless embedding enabled for this Looker + */ + embed_cookieless_v2?: boolean + /** + * Is embed content navigation enabled for this looker + */ + embed_content_navigation?: boolean + /** + * Is embed content management enabled for this Looker + */ + embed_content_management?: boolean + /** + * 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. + */ + strict_sameorigin_for_login?: boolean + /** + * When true, filters are enabled on embedded Looks + */ + look_filters?: boolean + /** + * When true, removes navigation to Looks from embedded dashboards and explores. + */ + hide_look_navigation?: boolean +} + export interface IEmbedCookielessSessionAcquire { /** - * Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + * 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). */ session_length?: number | null /** @@ -3221,7 +3268,7 @@ export interface IEmbedCookielessSessionAcquire { */ force_logout_login?: boolean /** - * A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + * A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. */ external_user_id?: string | null /** @@ -3256,14 +3303,14 @@ export interface IEmbedCookielessSessionAcquire { * A dictionary of name-value pairs associating a Looker user attribute name with a value. */ user_attributes?: IDictionary | null - /** - * Token referencing the embed session and is used to generate new authentication, navigation and api tokens. - */ - session_reference_token?: string | null /** * 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. */ embed_domain?: string | null + /** + * Token referencing the embed session and is used to generate new authentication, navigation and api tokens. + */ + session_reference_token?: string | null } export interface IEmbedCookielessSessionAcquireResponse { @@ -3349,7 +3396,7 @@ export interface IEmbedParams { */ target_url: string /** - * Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + * 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). */ session_length?: number | null /** @@ -3395,7 +3442,7 @@ export interface IEmbedSsoParams { */ target_url: string /** - * Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + * 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). */ session_length?: number | null /** @@ -3403,7 +3450,7 @@ export interface IEmbedSsoParams { */ force_logout_login?: boolean /** - * A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + * A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. */ external_user_id?: string | null /** @@ -3442,6 +3489,10 @@ export interface IEmbedSsoParams { * 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. */ secret_id?: string | null + /** + * 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 + */ + embed_domain?: string | null } export interface IEmbedUrlResponse { @@ -5927,6 +5978,21 @@ export interface IManifest { localization_settings?: ILocalizationSettings } +export interface IMarketplaceAutomation { + /** + * Whether marketplace auto installation is enabled + */ + install_enabled?: boolean + /** + * Whether marketplace auto update is enabled for looker extensions + */ + update_looker_enabled?: boolean + /** + * Whether marketplace auto update is enabled for third party extensions + */ + update_third_party_enabled?: boolean +} + export interface IMaterializePDT { /** * The ID of the enqueued materialization task (read-only) @@ -10094,17 +10160,22 @@ export interface ISetting { */ extension_framework_enabled?: boolean /** - * (DEPRECATED) Toggle extension extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. + * (DEPRECATED) Toggle extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. */ extension_load_url_enabled?: boolean /** - * Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled. + * (DEPRECATED) Toggle marketplace auto install on or off. Deprecated - do not use. Auto install can now be enabled via marketplace automation settings */ marketplace_auto_install_enabled?: boolean + marketplace_automation?: IMarketplaceAutomation /** * Toggle marketplace on or off */ marketplace_enabled?: boolean + /** + * Location of Looker marketplace CDN (read-only) + */ + marketplace_site?: string /** * 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. */ @@ -10140,13 +10211,14 @@ export interface ISetting { */ email_domain_allowlist?: string[] /** - * Toggle cookieless embed setting + * (DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value. */ embed_cookieless_v2?: boolean /** * True if embedding is enabled https://cloud.google.com/looker/docs/r/looker-core-feature-embed, false otherwise (read-only) */ embed_enabled?: boolean + embed_config?: IEmbedConfig } export interface ISmtpNodeStatus { @@ -13366,7 +13438,7 @@ export interface IWriteSessionConfig { /** * Dynamic writeable type for Setting removes: - * embed_enabled + * marketplace_site, embed_enabled */ export interface IWriteSetting { /** @@ -13374,13 +13446,14 @@ export interface IWriteSetting { */ extension_framework_enabled?: boolean /** - * (DEPRECATED) Toggle extension extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. + * (DEPRECATED) Toggle extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. */ extension_load_url_enabled?: boolean /** - * Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled. + * (DEPRECATED) Toggle marketplace auto install on or off. Deprecated - do not use. Auto install can now be enabled via marketplace automation settings */ marketplace_auto_install_enabled?: boolean + marketplace_automation?: IMarketplaceAutomation | null /** * Toggle marketplace on or off */ @@ -13424,9 +13497,10 @@ export interface IWriteSetting { */ email_domain_allowlist?: string[] | null /** - * Toggle cookieless embed setting + * (DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value. */ embed_cookieless_v2?: boolean + embed_config?: IEmbedConfig | null } /** diff --git a/packages/sdk/src/4.0/streams.ts b/packages/sdk/src/4.0/streams.ts index 60fe0e9d7..63defaa02 100644 --- a/packages/sdk/src/4.0/streams.ts +++ b/packages/sdk/src/4.0/streams.ts @@ -1141,35 +1141,39 @@ export class Looker40SDKStream extends APIMethods { } /** - * ### Create SSO Embed URL + * ### Create Signed Embed URL * - * Creates an SSO embed URL and cryptographically signs it with an embed secret. + * Creates a signed embed URL and cryptographically signs it with an embed secret. * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to this URL - any change may invalidate the signature and + * Do not make any modifications to the returned URL - any change may invalidate the signature and * cause the URL to fail to load a Looker embed session. * - * A signed SSO embed URL can only be used once. After it has been used to request a page from the - * Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent * 'replay attacks'. * * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. * - * Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. * - * The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. * * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. * * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. * * #### Security Note * Protect this signed URL as you would an access token or password credentials - do not write @@ -1388,7 +1392,7 @@ export class Looker40SDKStream extends APIMethods { * * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * LDAP is enabled or disabled for Looker using the **enabled** field. * @@ -1502,9 +1506,9 @@ export class Looker40SDKStream extends APIMethods { /** * ### Test the connection authentication settings for an LDAP configuration. * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. * * Example: * ```json @@ -1517,7 +1521,7 @@ export class Looker40SDKStream extends APIMethods { * } * ``` * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * The active LDAP settings are not modified. * @@ -1548,9 +1552,9 @@ export class Looker40SDKStream extends APIMethods { /** * ### Test the user authentication settings for an LDAP configuration without authenticating the user. * - * This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. * - * This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. * * **test_ldap_user** is required. * @@ -1583,9 +1587,9 @@ export class Looker40SDKStream extends APIMethods { /** * ### Test the user authentication settings for an LDAP configuration. * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * **test_ldap_user** and **test_ldap_password** are required. * @@ -1971,7 +1975,7 @@ export class Looker40SDKStream extends APIMethods { * * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * OIDC is enabled or disabled for Looker using the **enabled** field. * @@ -2202,7 +2206,7 @@ export class Looker40SDKStream extends APIMethods { * * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * SAML is enabled or disabled for Looker using the **enabled** field. * @@ -3935,8 +3939,10 @@ export class Looker40SDKStream extends APIMethods { * - extension_framework_enabled * - extension_load_url_enabled * - marketplace_auto_install_enabled + * - marketplace_automation * - marketplace_terms_accepted * - marketplace_enabled + * - marketplace_site * - onboarding_enabled * - privatelabel_configuration * - timezone @@ -3944,6 +3950,7 @@ export class Looker40SDKStream extends APIMethods { * - email_domain_allowlist * - embed_cookieless_v2 * - embed_enabled + * - embed_config * * GET /setting -> ISetting * @@ -3977,8 +3984,10 @@ export class Looker40SDKStream extends APIMethods { * - extension_framework_enabled * - extension_load_url_enabled * - marketplace_auto_install_enabled + * - marketplace_automation * - marketplace_terms_accepted * - marketplace_enabled + * - marketplace_site * - onboarding_enabled * - privatelabel_configuration * - timezone @@ -3986,6 +3995,7 @@ export class Looker40SDKStream extends APIMethods { * - email_domain_allowlist * - embed_cookieless_v2 * - embed_enabled + * - embed_config * * See the `Setting` type for more information on the specific values that can be configured. * diff --git a/packages/sdk/src/constants.ts b/packages/sdk/src/constants.ts index 5230e8c50..b84c8de8f 100644 --- a/packages/sdk/src/constants.ts +++ b/packages/sdk/src/constants.ts @@ -24,5 +24,5 @@ */ -export const sdkVersion = '23.12' +export const sdkVersion = '23.14' export const environmentPrefix = 'LOOKERSDK' diff --git a/python/looker_sdk/sdk/api31/methods.py b/python/looker_sdk/sdk/api31/methods.py index cd76f3bc8..09b1aed74 100644 --- a/python/looker_sdk/sdk/api31/methods.py +++ b/python/looker_sdk/sdk/api31/methods.py @@ -150,35 +150,39 @@ def logout( #region Auth: Manage User Authentication Configuration - # ### Create SSO Embed URL + # ### Create Signed Embed URL # - # Creates an SSO embed URL and cryptographically signs it with an embed secret. + # Creates a signed embed URL and cryptographically signs it with an embed secret. # This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - # Do not make any modifications to this URL - any change may invalidate the signature and + # Do not make any modifications to the returned URL - any change may invalidate the signature and # cause the URL to fail to load a Looker embed session. # - # A signed SSO embed URL can only be used once. After it has been used to request a page from the - # Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + # A signed embed URL can only be **used once**. After the URL has been used to request a page from the + # Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent # 'replay attacks'. # # The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. # To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - # The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - # copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + # The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + # to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. # - # Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + # Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) # and the lists of models and permissions assigned to the embed user. - # At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + # At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. # These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. # - # The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + # The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. # # This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - # SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + # embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + # # To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. # # The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - # if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + # if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + # a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + # + # The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. # # #### Security Note # Protect this signed URL as you would an access token or password credentials - do not write @@ -194,7 +198,7 @@ def create_sso_embed_url( body: mdls.EmbedSsoParams, transport_options: Optional[transport.TransportOptions] = None, ) -> mdls.EmbedUrlResponse: - """Create SSO Embed Url""" + """Create Signed Embed Url""" response = cast( mdls.EmbedUrlResponse, self.post( @@ -215,7 +219,7 @@ def create_sso_embed_url( # # Configuring LDAP impacts authentication for all users. This configuration should be done carefully. # - # Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + # Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). # # LDAP is enabled or disabled for Looker using the **enabled** field. # @@ -314,9 +318,9 @@ def test_ldap_config_connection( # ### Test the connection authentication settings for an LDAP configuration. # - # This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + # This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. # - # **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + # **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. # # Example: # ```json @@ -329,7 +333,7 @@ def test_ldap_config_connection( # } # ``` # - # Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + # Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. # # The active LDAP settings are not modified. # @@ -355,9 +359,9 @@ def test_ldap_config_auth( # ### Test the user authentication settings for an LDAP configuration without authenticating the user. # - # This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + # This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. # - # This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + # This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. # # **test_ldap_user** is required. # @@ -385,9 +389,9 @@ def test_ldap_config_user_info( # ### Test the user authentication settings for an LDAP configuration. # - # This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + # This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. # - # Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + # Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. # # **test_ldap_user** and **test_ldap_password** are required. # @@ -422,7 +426,7 @@ def test_ldap_config_user_auth( # # Configuring OIDC impacts authentication for all users. This configuration should be done carefully. # - # Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + # Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). # # OIDC is enabled or disabled for Looker using the **enabled** field. # @@ -613,7 +617,7 @@ def force_password_reset_at_next_login_for_all_users( # # Configuring SAML impacts authentication for all users. This configuration should be done carefully. # - # Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + # Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). # # SAML is enabled or disabled for Looker using the **enabled** field. # diff --git a/python/looker_sdk/sdk/api31/models.py b/python/looker_sdk/sdk/api31/models.py index a17f0e21c..92095fcfb 100644 --- a/python/looker_sdk/sdk/api31/models.py +++ b/python/looker_sdk/sdk/api31/models.py @@ -2929,9 +2929,9 @@ class EmbedSsoParams(model.Model): """ Attributes: target_url: The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. - session_length: Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + 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. - external_user_id: A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + external_user_id: A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. first_name: First name of the embed user. Defaults to 'Embed' if not specified last_name: Last name of the embed user. Defaults to 'User' if not specified user_timezone: Sets the user timezone for the embed user session, if the User Specific Timezones setting is enabled in the Looker admin settings. A value of `null` forces the embed user to use the Looker Application Default Timezone. You MUST omit this property from the request if the User Specific Timezones setting is disabled. Timezone values are validated against the IANA Timezone standard and can be seen in the Application Time Zone dropdown list on the Looker General Settings admin page. @@ -2941,6 +2941,7 @@ class EmbedSsoParams(model.Model): external_group_id: A unique value identifying an embed-exclusive group. Multiple embed users using the same `external_group_id` value will be able to share Looker content with each other. Content and embed users associated with the `external_group_id` will not be accessible to normal Looker users or embed users not associated with this `external_group_id`. user_attributes: A dictionary of name-value pairs associating a Looker user attribute name with a value. 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 @@ -2955,6 +2956,7 @@ class EmbedSsoParams(model.Model): external_group_id: Optional[str] = None user_attributes: Optional[MutableMapping[str, Any]] = None secret_id: Optional[int] = None + embed_domain: Optional[str] = None def __init__(self, *, target_url: str, @@ -2969,7 +2971,8 @@ def __init__(self, *, group_ids: Optional[Sequence[int]] = None, external_group_id: Optional[str] = None, user_attributes: Optional[MutableMapping[str, Any]] = None, - secret_id: Optional[int] = None): + secret_id: Optional[int] = None, + embed_domain: Optional[str] = None): self.target_url = target_url self.session_length = session_length self.force_logout_login = force_logout_login @@ -2983,6 +2986,7 @@ def __init__(self, *, self.external_group_id = external_group_id self.user_attributes = user_attributes self.secret_id = secret_id + self.embed_domain = embed_domain @attr.s(auto_attribs=True, init=False) diff --git a/python/looker_sdk/sdk/api40/methods.py b/python/looker_sdk/sdk/api40/methods.py index a2c2e6cd6..65b0f9a01 100644 --- a/python/looker_sdk/sdk/api40/methods.py +++ b/python/looker_sdk/sdk/api40/methods.py @@ -769,35 +769,39 @@ def delete_embed_secret( ) return response - # ### Create SSO Embed URL + # ### Create Signed Embed URL # - # Creates an SSO embed URL and cryptographically signs it with an embed secret. + # Creates a signed embed URL and cryptographically signs it with an embed secret. # This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - # Do not make any modifications to this URL - any change may invalidate the signature and + # Do not make any modifications to the returned URL - any change may invalidate the signature and # cause the URL to fail to load a Looker embed session. # - # A signed SSO embed URL can only be used once. After it has been used to request a page from the - # Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + # A signed embed URL can only be **used once**. After the URL has been used to request a page from the + # Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent # 'replay attacks'. # # The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. # To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - # The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - # copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + # The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + # to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. # - # Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + # Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) # and the lists of models and permissions assigned to the embed user. - # At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + # At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. # These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. # - # The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + # The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. # # This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - # SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + # embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + # # To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. # # The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - # if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + # if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + # a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + # + # The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. # # #### Security Note # Protect this signed URL as you would an access token or password credentials - do not write @@ -813,7 +817,7 @@ def create_sso_embed_url( body: mdls.EmbedSsoParams, transport_options: Optional[transport.TransportOptions] = None, ) -> mdls.EmbedUrlResponse: - """Create SSO Embed Url""" + """Create Signed Embed Url""" response = cast( mdls.EmbedUrlResponse, self.post( @@ -987,7 +991,7 @@ def generate_tokens_for_cookieless_session( # # Configuring LDAP impacts authentication for all users. This configuration should be done carefully. # - # Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + # Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). # # LDAP is enabled or disabled for Looker using the **enabled** field. # @@ -1086,9 +1090,9 @@ def test_ldap_config_connection( # ### Test the connection authentication settings for an LDAP configuration. # - # This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + # This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. # - # **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + # **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. # # Example: # ```json @@ -1101,7 +1105,7 @@ def test_ldap_config_connection( # } # ``` # - # Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + # Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. # # The active LDAP settings are not modified. # @@ -1127,9 +1131,9 @@ def test_ldap_config_auth( # ### Test the user authentication settings for an LDAP configuration without authenticating the user. # - # This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + # This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. # - # This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + # This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. # # **test_ldap_user** is required. # @@ -1157,9 +1161,9 @@ def test_ldap_config_user_info( # ### Test the user authentication settings for an LDAP configuration. # - # This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + # This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. # - # Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + # Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. # # **test_ldap_user** and **test_ldap_password** are required. # @@ -1491,7 +1495,7 @@ def deactivate_app_user( # # Configuring OIDC impacts authentication for all users. This configuration should be done carefully. # - # Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + # Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). # # OIDC is enabled or disabled for Looker using the **enabled** field. # @@ -1682,7 +1686,7 @@ def force_password_reset_at_next_login_for_all_users( # # Configuring SAML impacts authentication for all users. This configuration should be done carefully. # - # Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + # Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). # # SAML is enabled or disabled for Looker using the **enabled** field. # @@ -3149,8 +3153,10 @@ def mobile_settings( # - extension_framework_enabled # - extension_load_url_enabled # - marketplace_auto_install_enabled + # - marketplace_automation # - marketplace_terms_accepted # - marketplace_enabled + # - marketplace_site # - onboarding_enabled # - privatelabel_configuration # - timezone @@ -3158,6 +3164,7 @@ def mobile_settings( # - email_domain_allowlist # - embed_cookieless_v2 # - embed_enabled + # - embed_config # # GET /setting -> mdls.Setting def get_setting( @@ -3187,8 +3194,10 @@ def get_setting( # - extension_framework_enabled # - extension_load_url_enabled # - marketplace_auto_install_enabled + # - marketplace_automation # - marketplace_terms_accepted # - marketplace_enabled + # - marketplace_site # - onboarding_enabled # - privatelabel_configuration # - timezone @@ -3196,6 +3205,7 @@ def get_setting( # - email_domain_allowlist # - embed_cookieless_v2 # - embed_enabled + # - embed_config # # See the `Setting` type for more information on the specific values that can be configured. # diff --git a/python/looker_sdk/sdk/api40/models.py b/python/looker_sdk/sdk/api40/models.py index c0064f392..97f8e7d32 100644 --- a/python/looker_sdk/sdk/api40/models.py +++ b/python/looker_sdk/sdk/api40/models.py @@ -21,7 +21,7 @@ # SOFTWARE. # -# 327 API models: 245 Spec, 0 Request, 60 Write, 22 Enum +# 329 API models: 247 Spec, 0 Request, 60 Write, 22 Enum # NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0 @@ -3954,13 +3954,66 @@ def __init__(self, *, self.egress_ip_addresses = egress_ip_addresses +@attr.s(auto_attribs=True, init=False) +class EmbedConfig(model.Model): + """ + 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 + 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 + self.alert_url_label = alert_url_label + self.sso_auth_enabled = sso_auth_enabled + self.embed_cookieless_v2 = embed_cookieless_v2 + self.embed_content_navigation = embed_content_navigation + self.embed_content_management = embed_content_management + self.strict_sameorigin_for_login = strict_sameorigin_for_login + self.look_filters = look_filters + self.hide_look_navigation = hide_look_navigation + + @attr.s(auto_attribs=True, init=False) class EmbedCookielessSessionAcquire(model.Model): """ Attributes: - session_length: Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + 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. - external_user_id: A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + external_user_id: A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. first_name: First name of the embed user. Defaults to 'Embed' if not specified last_name: Last name of the embed user. Defaults to 'User' if not specified user_timezone: Sets the user timezone for the embed user session, if the User Specific Timezones setting is enabled in the Looker admin settings. A value of `null` forces the embed user to use the Looker Application Default Timezone. You MUST omit this property from the request if the User Specific Timezones setting is disabled. Timezone values are validated against the IANA Timezone standard and can be seen in the Application Time Zone dropdown list on the Looker General Settings admin page. @@ -3969,8 +4022,8 @@ class EmbedCookielessSessionAcquire(model.Model): group_ids: List of Looker group ids in which to enroll the embed user external_group_id: A unique value identifying an embed-exclusive group. Multiple embed users using the same `external_group_id` value will be able to share Looker content with each other. Content and embed users associated with the `external_group_id` will not be accessible to normal Looker users or embed users not associated with this `external_group_id`. user_attributes: A dictionary of name-value pairs associating a Looker user attribute name with a value. - session_reference_token: Token referencing the embed session and is used to generate new authentication, navigation and api tokens. 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 @@ -3983,8 +4036,8 @@ class EmbedCookielessSessionAcquire(model.Model): group_ids: Optional[Sequence[str]] = None external_group_id: Optional[str] = None user_attributes: Optional[MutableMapping[str, Any]] = None - session_reference_token: Optional[str] = None embed_domain: Optional[str] = None + session_reference_token: Optional[str] = None def __init__(self, *, session_length: Optional[int] = None, @@ -3998,8 +4051,8 @@ def __init__(self, *, group_ids: Optional[Sequence[str]] = None, external_group_id: Optional[str] = None, user_attributes: Optional[MutableMapping[str, Any]] = None, - session_reference_token: Optional[str] = None, - embed_domain: Optional[str] = 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 @@ -4011,8 +4064,8 @@ def __init__(self, *, self.group_ids = group_ids self.external_group_id = external_group_id self.user_attributes = user_attributes - self.session_reference_token = session_reference_token self.embed_domain = embed_domain + self.session_reference_token = session_reference_token @attr.s(auto_attribs=True, init=False) @@ -4115,7 +4168,7 @@ class EmbedParams(model.Model): """ Attributes: target_url: The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. - session_length: Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + 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 @@ -4173,9 +4226,9 @@ class EmbedSsoParams(model.Model): """ Attributes: target_url: The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. - session_length: Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + 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. - external_user_id: A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + external_user_id: A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. first_name: First name of the embed user. Defaults to 'Embed' if not specified last_name: Last name of the embed user. Defaults to 'User' if not specified user_timezone: Sets the user timezone for the embed user session, if the User Specific Timezones setting is enabled in the Looker admin settings. A value of `null` forces the embed user to use the Looker Application Default Timezone. You MUST omit this property from the request if the User Specific Timezones setting is disabled. Timezone values are validated against the IANA Timezone standard and can be seen in the Application Time Zone dropdown list on the Looker General Settings admin page. @@ -4185,6 +4238,7 @@ class EmbedSsoParams(model.Model): external_group_id: A unique value identifying an embed-exclusive group. Multiple embed users using the same `external_group_id` value will be able to share Looker content with each other. Content and embed users associated with the `external_group_id` will not be accessible to normal Looker users or embed users not associated with this `external_group_id`. user_attributes: A dictionary of name-value pairs associating a Looker user attribute name with a value. 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 @@ -4199,6 +4253,7 @@ class EmbedSsoParams(model.Model): 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, @@ -4213,7 +4268,8 @@ def __init__(self, *, group_ids: Optional[Sequence[str]] = None, external_group_id: Optional[str] = None, user_attributes: Optional[MutableMapping[str, Any]] = None, - secret_id: Optional[str] = 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 @@ -4227,6 +4283,7 @@ def __init__(self, *, self.external_group_id = external_group_id self.user_attributes = user_attributes self.secret_id = secret_id + self.embed_domain = embed_domain @attr.s(auto_attribs=True, init=False) @@ -7136,6 +7193,27 @@ def __init__(self, *, self.localization_settings = localization_settings +@attr.s(auto_attribs=True, init=False) +class MarketplaceAutomation(model.Model): + """ + Attributes: + install_enabled: Whether marketplace auto installation is enabled + 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): + self.install_enabled = install_enabled + self.update_looker_enabled = update_looker_enabled + self.update_third_party_enabled = update_third_party_enabled + + @attr.s(auto_attribs=True, init=False) class MaterializePDT(model.Model): """ @@ -9650,9 +9728,11 @@ class Setting(model.Model): """ Attributes: extension_framework_enabled: Toggle extension framework on or off - extension_load_url_enabled: (DEPRECATED) Toggle extension 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: Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled. + 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_site: Location of Looker marketplace CDN 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: custom_welcome_email: @@ -9663,13 +9743,16 @@ class Setting(model.Model): 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: Toggle cookieless embed setting + embed_cookieless_v2: (DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value. embed_enabled: True if embedding is enabled https://cloud.google.com/looker/docs/r/looker-core-feature-embed, false otherwise + embed_config: """ 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 @@ -9682,12 +9765,15 @@ class Setting(model.Model): email_domain_allowlist: Optional[Sequence[str]] = None embed_cookieless_v2: Optional[bool] = None embed_enabled: Optional[bool] = None + embed_config: Optional["EmbedConfig"] = 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_site: Optional[str] = None, marketplace_terms_accepted: Optional[bool] = None, privatelabel_configuration: Optional["PrivatelabelConfiguration"] = None, custom_welcome_email: Optional["CustomWelcomeEmail"] = None, @@ -9699,11 +9785,14 @@ def __init__(self, *, override_warnings: Optional[bool] = None, email_domain_allowlist: Optional[Sequence[str]] = None, embed_cookieless_v2: Optional[bool] = None, - embed_enabled: Optional[bool] = None): + embed_enabled: Optional[bool] = None, + embed_config: Optional["EmbedConfig"] = 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 + self.marketplace_automation = marketplace_automation self.marketplace_enabled = marketplace_enabled + self.marketplace_site = marketplace_site self.marketplace_terms_accepted = marketplace_terms_accepted self.privatelabel_configuration = privatelabel_configuration self.custom_welcome_email = custom_welcome_email @@ -9716,6 +9805,7 @@ def __init__(self, *, self.email_domain_allowlist = email_domain_allowlist self.embed_cookieless_v2 = embed_cookieless_v2 self.embed_enabled = embed_enabled + self.embed_config = embed_config @attr.s(auto_attribs=True, init=False) @@ -13505,12 +13595,13 @@ def __init__(self, *, class WriteSetting(model.Model): """ Dynamic writeable type for Setting removes: -embed_enabled +marketplace_site, embed_enabled Attributes: extension_framework_enabled: Toggle extension framework on or off - extension_load_url_enabled: (DEPRECATED) Toggle extension 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: Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled. + 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: @@ -13523,11 +13614,13 @@ class WriteSetting(model.Model): 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: Toggle cookieless embed setting + 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: """ 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 @@ -13540,11 +13633,13 @@ class WriteSetting(model.Model): override_warnings: Optional[bool] = None email_domain_allowlist: Optional[Sequence[str]] = None embed_cookieless_v2: Optional[bool] = None + embed_config: Optional["EmbedConfig"] = 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, @@ -13556,10 +13651,12 @@ def __init__(self, *, host_url: Optional[str] = None, override_warnings: Optional[bool] = None, email_domain_allowlist: Optional[Sequence[str]] = None, - embed_cookieless_v2: Optional[bool] = None): + embed_cookieless_v2: Optional[bool] = None, + embed_config: Optional["EmbedConfig"] = 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 + self.marketplace_automation = marketplace_automation self.marketplace_enabled = marketplace_enabled self.marketplace_terms_accepted = marketplace_terms_accepted self.privatelabel_configuration = privatelabel_configuration @@ -13572,6 +13669,7 @@ def __init__(self, *, self.override_warnings = override_warnings self.email_domain_allowlist = email_domain_allowlist self.embed_cookieless_v2 = embed_cookieless_v2 + self.embed_config = embed_config @attr.s(auto_attribs=True, init=False) diff --git a/python/looker_sdk/sdk/constants.py b/python/looker_sdk/sdk/constants.py index 1cfa17383..58095a2f3 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 = "23.12" +sdk_version = "23.14" environment_prefix = "LOOKERSDK" diff --git a/spec/Looker.3.1.json b/spec/Looker.3.1.json index 437ea5ea1..a1259a504 100644 --- a/spec/Looker.3.1.json +++ b/spec/Looker.3.1.json @@ -2,7 +2,7 @@ "swagger": "2.0", "info": { "version": "3.1.0", - "x-looker-release-version": "23.12.5", + "x-looker-release-version": "23.14.9", "title": "Looker API 3.1 Reference", "description": "### 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://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://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://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://cloud.google.com/looker/docs/r/api/versioning).\n\n\n### 3.1 Legacy API\n\nAPI 3.1 is now **deprecated**. API 4.0 should be used instead.\n\nThe text below is retained for reference purposes.\n\nThe following are a few examples of noteworthy items that have changed between API 3.0 and API 3.1.\nFor more comprehensive coverage of API changes, please see the release notes for your Looker release.\n\n### Examples of new things added in API 3.1 (compared to API 3.0):\n\n* [Dashboard construction](#!/3.1/Dashboard/) APIs\n* [Themes](#!/3.1/Theme/) and [custom color collections](#!/3.1/ColorCollection) APIs\n* Create and run [SQL Runner](#!/3.1/Query/run_sql_query) queries\n* Create and run [merged results](#!/3.1/Query/create_merge_query) queries\n* Create and modify [dashboard filters](#!/3.1/Dashboard/create_dashboard_filter)\n* Create and modify [password requirements](#!/3.1/Auth/password_config)\n\n### Deprecated in API 3.0\n\nThe following functions and properties have been deprecated in API 3.0. They continue to exist and work in API 3.0\nfor the next several Looker releases but they have not been carried forward to API 3.1:\n\n* Dashboard Prefetch functions\n* User access_filter functions\n* User API 1.0 credentials functions\n* Space.is_root and Space.is_user_root properties. Use Space.is_shared_root and Space.is_users_root instead.\n\n### Semantic changes in API 3.1:\n\n* [all_looks()](#!/3.1/Look/all_looks) no longer includes soft-deleted looks, matching [all_dashboards()](#!/3.1/Dashboard/all_dashboards) behavior.\nYou can find soft-deleted looks using [search_looks()](#!/3.1/Look/search_looks) with the `deleted` param set to True.\n* [all_spaces()](#!/3.1/Space/all_spaces) no longer includes duplicate items\n* [search_users()](#!/3.1/User/search_users) no longer accepts Y,y,1,0,N,n for Boolean params, only \"true\" and \"false\".\n* For greater client and network compatibility, [render_task_results](#!/3.1/RenderTask/render_task_results) now returns\nHTTP status **202 Accepted** instead of HTTP status **102 Processing**\n* [all_running_queries()](#!/3.1/Query/all_running_queries) and [kill_query](#!/3.1/Query/kill_query) functions have moved into the [Query](#!/3.1/Query/) function group.\n\nThe API Explorer can be used to [interactively compare](https://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://cloud.google.com/looker/docs/r/api/support-policy) for more information.\n\n\n", "contact": { @@ -5748,13 +5748,13 @@ "Auth" ], "operationId": "create_sso_embed_url", - "summary": "Create SSO Embed Url", - "description": "### Create SSO Embed URL\n\nCreates an SSO embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to this URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed SSO embed URL can only be used once. After it has been used to request a page from the\nLooker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (group_ids property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the group_ids property, or both the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the group_ids, models, and permissions properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nSSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the newest active secret defined in the Looker instance.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n\n\nCalls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled\n", + "summary": "Create Signed Embed Url", + "description": "### Create Signed Embed URL\n\nCreates a signed embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to the returned URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed embed URL can only be **used once**. After the URL has been used to request a page from the\nLooker server, it is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the \"Get embed URL\" menu option\nto copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nembed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\n\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls,\na default secret will be created. This default secret is encrypted using HMAC/SHA-256.\n\nThe `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n\n\nCalls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled\n", "parameters": [ { "name": "body", "in": "body", - "description": "SSO parameters", + "description": "Signed Embed URL parameters", "required": true, "schema": { "$ref": "#/definitions/EmbedSsoParams" @@ -5763,7 +5763,7 @@ ], "responses": { "200": { - "description": "Signed SSO URL", + "description": "Signed Embed URL", "schema": { "$ref": "#/definitions/EmbedUrlResponse" } @@ -8812,7 +8812,7 @@ ], "operationId": "ldap_config", "summary": "Get LDAP Configuration", - "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "LDAP Configuration.", @@ -8952,7 +8952,7 @@ ], "operationId": "test_ldap_config_auth", "summary": "Test LDAP Auth", - "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "parameters": [ { "name": "body", @@ -9007,7 +9007,7 @@ ], "operationId": "test_ldap_config_user_info", "summary": "Test LDAP User Info", - "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "parameters": [ { "name": "body", @@ -9062,7 +9062,7 @@ ], "operationId": "test_ldap_config_user_auth", "summary": "Test LDAP User Auth", - "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "parameters": [ { "name": "body", @@ -10658,7 +10658,7 @@ ], "operationId": "oidc_config", "summary": "Get OIDC Configuration", - "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "OIDC Configuration.", @@ -14046,7 +14046,7 @@ ], "operationId": "saml_config", "summary": "Get SAML Configuration", - "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "SAML Configuration.", @@ -25382,7 +25382,7 @@ "session_length": { "type": "integer", "format": "int64", - "description": "Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days).", + "description": "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).", "x-looker-nullable": true }, "force_logout_login": { @@ -25392,7 +25392,7 @@ }, "external_user_id": { "type": "string", - "description": "A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions.", + "description": "A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session.", "x-looker-nullable": true }, "first_name": { @@ -25454,6 +25454,11 @@ "format": "int64", "description": "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.", "x-looker-nullable": true + }, + "embed_domain": { + "type": "string", + "description": "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", + "x-looker-nullable": true } }, "x-looker-status": "stable", diff --git a/spec/Looker.3.1.oas.json b/spec/Looker.3.1.oas.json index df017864e..bc1163424 100644 --- a/spec/Looker.3.1.oas.json +++ b/spec/Looker.3.1.oas.json @@ -2,7 +2,7 @@ "openapi": "3.0.0", "info": { "version": "3.1.0", - "x-looker-release-version": "23.12.5", + "x-looker-release-version": "23.14.9", "title": "Looker API 3.1 Reference", "description": "### 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://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://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://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://cloud.google.com/looker/docs/r/api/versioning).\n\n\n### 3.1 Legacy API\n\nAPI 3.1 is now **deprecated**. API 4.0 should be used instead.\n\nThe text below is retained for reference purposes.\n\nThe following are a few examples of noteworthy items that have changed between API 3.0 and API 3.1.\nFor more comprehensive coverage of API changes, please see the release notes for your Looker release.\n\n### Examples of new things added in API 3.1 (compared to API 3.0):\n\n* [Dashboard construction](#!/3.1/Dashboard/) APIs\n* [Themes](#!/3.1/Theme/) and [custom color collections](#!/3.1/ColorCollection) APIs\n* Create and run [SQL Runner](#!/3.1/Query/run_sql_query) queries\n* Create and run [merged results](#!/3.1/Query/create_merge_query) queries\n* Create and modify [dashboard filters](#!/3.1/Dashboard/create_dashboard_filter)\n* Create and modify [password requirements](#!/3.1/Auth/password_config)\n\n### Deprecated in API 3.0\n\nThe following functions and properties have been deprecated in API 3.0. They continue to exist and work in API 3.0\nfor the next several Looker releases but they have not been carried forward to API 3.1:\n\n* Dashboard Prefetch functions\n* User access_filter functions\n* User API 1.0 credentials functions\n* Space.is_root and Space.is_user_root properties. Use Space.is_shared_root and Space.is_users_root instead.\n\n### Semantic changes in API 3.1:\n\n* [all_looks()](#!/3.1/Look/all_looks) no longer includes soft-deleted looks, matching [all_dashboards()](#!/3.1/Dashboard/all_dashboards) behavior.\nYou can find soft-deleted looks using [search_looks()](#!/3.1/Look/search_looks) with the `deleted` param set to True.\n* [all_spaces()](#!/3.1/Space/all_spaces) no longer includes duplicate items\n* [search_users()](#!/3.1/User/search_users) no longer accepts Y,y,1,0,N,n for Boolean params, only \"true\" and \"false\".\n* For greater client and network compatibility, [render_task_results](#!/3.1/RenderTask/render_task_results) now returns\nHTTP status **202 Accepted** instead of HTTP status **102 Processing**\n* [all_running_queries()](#!/3.1/Query/all_running_queries) and [kill_query](#!/3.1/Query/kill_query) functions have moved into the [Query](#!/3.1/Query/) function group.\n\nThe API Explorer can be used to [interactively compare](https://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://cloud.google.com/looker/docs/r/api/support-policy) for more information.\n\n\n", "contact": { @@ -7962,11 +7962,11 @@ "Auth" ], "operationId": "create_sso_embed_url", - "summary": "Create SSO Embed Url", - "description": "### Create SSO Embed URL\n\nCreates an SSO embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to this URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed SSO embed URL can only be used once. After it has been used to request a page from the\nLooker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (group_ids property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the group_ids property, or both the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the group_ids, models, and permissions properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nSSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the newest active secret defined in the Looker instance.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n\n\nCalls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled\n", + "summary": "Create Signed Embed Url", + "description": "### Create Signed Embed URL\n\nCreates a signed embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to the returned URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed embed URL can only be **used once**. After the URL has been used to request a page from the\nLooker server, it is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the \"Get embed URL\" menu option\nto copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nembed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\n\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls,\na default secret will be created. This default secret is encrypted using HMAC/SHA-256.\n\nThe `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n\n\nCalls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled\n", "responses": { "200": { - "description": "Signed SSO URL", + "description": "Signed Embed URL", "content": { "application/json": { "schema": { @@ -8036,7 +8036,7 @@ } } }, - "description": "SSO parameters", + "description": "Signed Embed URL parameters", "required": true } } @@ -12105,7 +12105,7 @@ ], "operationId": "ldap_config", "summary": "Get LDAP Configuration", - "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "LDAP Configuration.", @@ -12297,7 +12297,7 @@ ], "operationId": "test_ldap_config_auth", "summary": "Test LDAP Auth", - "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "Result info.", @@ -12372,7 +12372,7 @@ ], "operationId": "test_ldap_config_user_info", "summary": "Test LDAP User Info", - "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "Result info.", @@ -12447,7 +12447,7 @@ ], "operationId": "test_ldap_config_user_auth", "summary": "Test LDAP User Auth", - "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "Result info.", @@ -14674,7 +14674,7 @@ ], "operationId": "oidc_config", "summary": "Get OIDC Configuration", - "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "OIDC Configuration.", @@ -19316,7 +19316,7 @@ ], "operationId": "saml_config", "summary": "Get SAML Configuration", - "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "SAML Configuration.", @@ -33115,7 +33115,7 @@ "session_length": { "type": "integer", "format": "int64", - "description": "Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days).", + "description": "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).", "nullable": true }, "force_logout_login": { @@ -33125,7 +33125,7 @@ }, "external_user_id": { "type": "string", - "description": "A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions.", + "description": "A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session.", "nullable": true }, "first_name": { @@ -33187,6 +33187,11 @@ "format": "int64", "description": "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.", "nullable": true + }, + "embed_domain": { + "type": "string", + "description": "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", + "nullable": true } }, "x-looker-status": "stable", diff --git a/spec/Looker.4.0.json b/spec/Looker.4.0.json index bdf976e74..bce241737 100644 --- a/spec/Looker.4.0.json +++ b/spec/Looker.4.0.json @@ -1,8 +1,8 @@ { "swagger": "2.0", "info": { - "version": "4.0.23.12", - "x-looker-release-version": "23.12.5", + "version": "4.0.23.14", + "x-looker-release-version": "23.14.9", "title": "Looker API 4.0 Reference", "description": "\nAPI 4.0 is the current release of the Looker API. API 3.1 is deprecated.\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://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://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://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://cloud.google.com/looker/docs/r/api/versioning).\n\n\n### In This Release\n\nAPI 4.0 version was introduced to make adjustments to API functions, parameters, and response types to\nfix bugs and inconsistencies. These changes fall outside the bounds of non-breaking additive changes we can\nmake to the previous API 3.1.\n\nOne benefit of these type adjustments in API 4.0 is dramatically better support for strongly\ntyped 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://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://cloud.google.com/looker/docs/r/api/support-policy) for more information.\n\n\n", "contact": { @@ -7556,13 +7556,13 @@ "Auth" ], "operationId": "create_sso_embed_url", - "summary": "Create SSO Embed Url", - "description": "### Create SSO Embed URL\n\nCreates an SSO embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to this URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed SSO embed URL can only be used once. After it has been used to request a page from the\nLooker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (group_ids property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the group_ids property, or both the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the group_ids, models, and permissions properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nSSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the newest active secret defined in the Looker instance.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n\n\nCalls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled\n", + "summary": "Create Signed Embed Url", + "description": "### Create Signed Embed URL\n\nCreates a signed embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to the returned URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed embed URL can only be **used once**. After the URL has been used to request a page from the\nLooker server, it is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the \"Get embed URL\" menu option\nto copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nembed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\n\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls,\na default secret will be created. This default secret is encrypted using HMAC/SHA-256.\n\nThe `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n\n\nCalls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled\n", "parameters": [ { "name": "body", "in": "body", - "description": "SSO parameters", + "description": "Signed Embed URL parameters", "required": true, "schema": { "$ref": "#/definitions/EmbedSsoParams" @@ -7571,7 +7571,7 @@ ], "responses": { "200": { - "description": "Signed SSO URL", + "description": "Signed Embed URL", "schema": { "$ref": "#/definitions/EmbedUrlResponse" } @@ -11276,7 +11276,7 @@ ], "operationId": "ldap_config", "summary": "Get LDAP Configuration", - "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "LDAP Configuration.", @@ -11416,7 +11416,7 @@ ], "operationId": "test_ldap_config_auth", "summary": "Test LDAP Auth", - "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "parameters": [ { "name": "body", @@ -11471,7 +11471,7 @@ ], "operationId": "test_ldap_config_user_info", "summary": "Test LDAP User Info", - "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "parameters": [ { "name": "body", @@ -11526,7 +11526,7 @@ ], "operationId": "test_ldap_config_user_auth", "summary": "Test LDAP User Auth", - "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "parameters": [ { "name": "body", @@ -14570,7 +14570,7 @@ ], "operationId": "oidc_config", "summary": "Get OIDC Configuration", - "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "OIDC Configuration.", @@ -18020,7 +18020,7 @@ ], "operationId": "saml_config", "summary": "Get SAML Configuration", - "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "SAML Configuration.", @@ -19173,7 +19173,7 @@ ], "operationId": "set_setting", "summary": "Set Setting", - "description": "### Configure Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - custom_welcome_email\n - data_connector_default_enabled\n - extension_framework_enabled\n - extension_load_url_enabled\n - marketplace_auto_install_enabled\n - marketplace_terms_accepted\n - marketplace_enabled\n - onboarding_enabled\n - privatelabel_configuration\n - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\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 - custom_welcome_email\n - data_connector_default_enabled\n - extension_framework_enabled\n - extension_load_url_enabled\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 - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n - embed_config\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", @@ -19245,7 +19245,7 @@ ], "operationId": "get_setting", "summary": "Get Setting", - "description": "### Get Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - custom_welcome_email\n - data_connector_default_enabled\n - extension_framework_enabled\n - extension_load_url_enabled\n - marketplace_auto_install_enabled\n - marketplace_terms_accepted\n - marketplace_enabled\n - onboarding_enabled\n - privatelabel_configuration\n - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n\n", + "description": "### Get Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - custom_welcome_email\n - data_connector_default_enabled\n - extension_framework_enabled\n - extension_load_url_enabled\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 - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n - embed_config\n\n", "parameters": [ { "name": "fields", @@ -30721,6 +30721,72 @@ }, "x-looker-status": "stable" }, + "EmbedConfig": { + "properties": { + "domain_allowlist": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of domains to allow for embedding", + "x-looker-nullable": true + }, + "alert_url_allowlist": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of base urls to allow for alert/schedule", + "x-looker-nullable": true + }, + "alert_url_param_owner": { + "type": "string", + "description": "Owner of who defines the alert/schedule params on the base url", + "x-looker-nullable": true + }, + "alert_url_label": { + "type": "string", + "description": "Label for the alert/schedule url", + "x-looker-nullable": true + }, + "sso_auth_enabled": { + "type": "boolean", + "description": "Is SSO embedding enabled for this Looker", + "x-looker-nullable": false + }, + "embed_cookieless_v2": { + "type": "boolean", + "description": "Is Cookieless embedding enabled for this Looker", + "x-looker-nullable": false + }, + "embed_content_navigation": { + "type": "boolean", + "description": "Is embed content navigation enabled for this looker", + "x-looker-nullable": false + }, + "embed_content_management": { + "type": "boolean", + "description": "Is embed content management enabled for this Looker", + "x-looker-nullable": false + }, + "strict_sameorigin_for_login": { + "type": "boolean", + "description": "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.", + "x-looker-nullable": false + }, + "look_filters": { + "type": "boolean", + "description": "When true, filters are enabled on embedded Looks", + "x-looker-nullable": false + }, + "hide_look_navigation": { + "type": "boolean", + "description": "When true, removes navigation to Looks from embedded dashboards and explores.", + "x-looker-nullable": false + } + }, + "x-looker-status": "stable" + }, "EmbedParams": { "properties": { "target_url": { @@ -30732,7 +30798,7 @@ "session_length": { "type": "integer", "format": "int64", - "description": "Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days).", + "description": "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).", "x-looker-nullable": true }, "force_logout_login": { @@ -30757,7 +30823,7 @@ "session_length": { "type": "integer", "format": "int64", - "description": "Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days).", + "description": "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).", "x-looker-nullable": true }, "force_logout_login": { @@ -30767,7 +30833,7 @@ }, "external_user_id": { "type": "string", - "description": "A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions.", + "description": "A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session.", "x-looker-nullable": true }, "first_name": { @@ -30827,6 +30893,11 @@ "type": "string", "description": "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.", "x-looker-nullable": true + }, + "embed_domain": { + "type": "string", + "description": "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", + "x-looker-nullable": true } }, "x-looker-status": "stable", @@ -30839,7 +30910,7 @@ "session_length": { "type": "integer", "format": "int64", - "description": "Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days).", + "description": "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).", "x-looker-nullable": true }, "force_logout_login": { @@ -30849,7 +30920,7 @@ }, "external_user_id": { "type": "string", - "description": "A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions.", + "description": "A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session.", "x-looker-nullable": true }, "first_name": { @@ -30905,14 +30976,14 @@ "description": "A dictionary of name-value pairs associating a Looker user attribute name with a value.", "x-looker-nullable": true }, - "session_reference_token": { + "embed_domain": { "type": "string", - "description": "Token referencing the embed session and is used to generate new authentication, navigation and api tokens.", + "description": "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.", "x-looker-nullable": true }, - "embed_domain": { + "session_reference_token": { "type": "string", - "description": "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.", + "description": "Token referencing the embed session and is used to generate new authentication, navigation and api tokens.", "x-looker-nullable": true } }, @@ -34991,6 +35062,26 @@ }, "x-looker-status": "stable" }, + "MarketplaceAutomation": { + "properties": { + "install_enabled": { + "type": "boolean", + "description": "Whether marketplace auto installation is enabled", + "x-looker-nullable": false + }, + "update_looker_enabled": { + "type": "boolean", + "description": "Whether marketplace auto update is enabled for looker extensions", + "x-looker-nullable": false + }, + "update_third_party_enabled": { + "type": "boolean", + "description": "Whether marketplace auto update is enabled for third party extensions", + "x-looker-nullable": false + } + }, + "x-looker-status": "stable" + }, "MaterializePDT": { "properties": { "materialization_id": { @@ -38553,12 +38644,19 @@ "extension_load_url_enabled": { "type": "boolean", "x-looker-deprecated": true, - "description": "(DEPRECATED) Toggle extension extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted.", + "description": "(DEPRECATED) Toggle extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted.", "x-looker-nullable": false }, "marketplace_auto_install_enabled": { "type": "boolean", - "description": "Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled.", + "x-looker-deprecated": true, + "description": "(DEPRECATED) Toggle marketplace auto install on or off. Deprecated - do not use. Auto install can now be enabled via marketplace automation settings", + "x-looker-nullable": false + }, + "marketplace_automation": { + "$ref": "#/definitions/MarketplaceAutomation", + "readOnly": true, + "description": "Marketplace automation settings.", "x-looker-nullable": false }, "marketplace_enabled": { @@ -38566,6 +38664,12 @@ "description": "Toggle marketplace on or off", "x-looker-nullable": false }, + "marketplace_site": { + "type": "string", + "readOnly": true, + "description": "Location of Looker marketplace CDN", + "x-looker-nullable": false + }, "marketplace_terms_accepted": { "type": "boolean", "description": "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.", @@ -38624,7 +38728,8 @@ }, "embed_cookieless_v2": { "type": "boolean", - "description": "Toggle cookieless embed setting", + "x-looker-deprecated": true, + "description": "(DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value.", "x-looker-nullable": false }, "embed_enabled": { @@ -38632,6 +38737,12 @@ "readOnly": true, "description": "True if embedding is enabled https://cloud.google.com/looker/docs/r/looker-core-feature-embed, false otherwise", "x-looker-nullable": false + }, + "embed_config": { + "$ref": "#/definitions/EmbedConfig", + "readOnly": true, + "description": "Embed configuration. Requires embedding to be enabled https://cloud.google.com/looker/docs/r/looker-core-feature-embed", + "x-looker-nullable": false } }, "x-looker-status": "stable" diff --git a/spec/Looker.4.0.oas.json b/spec/Looker.4.0.oas.json index a976e8449..8a19e8ed1 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.23.12", - "x-looker-release-version": "23.12.5", + "version": "4.0.23.14", + "x-looker-release-version": "23.14.9", "title": "Looker API 4.0 Reference", "description": "\nAPI 4.0 is the current release of the Looker API. API 3.1 is deprecated.\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://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://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://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://cloud.google.com/looker/docs/r/api/versioning).\n\n\n### In This Release\n\nAPI 4.0 version was introduced to make adjustments to API functions, parameters, and response types to\nfix bugs and inconsistencies. These changes fall outside the bounds of non-breaking additive changes we can\nmake to the previous API 3.1.\n\nOne benefit of these type adjustments in API 4.0 is dramatically better support for strongly\ntyped 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://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://cloud.google.com/looker/docs/r/api/support-policy) for more information.\n\n\n", "contact": { @@ -10424,11 +10424,11 @@ "Auth" ], "operationId": "create_sso_embed_url", - "summary": "Create SSO Embed Url", - "description": "### Create SSO Embed URL\n\nCreates an SSO embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to this URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed SSO embed URL can only be used once. After it has been used to request a page from the\nLooker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (group_ids property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the group_ids property, or both the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the group_ids, models, and permissions properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nSSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the newest active secret defined in the Looker instance.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n\n\nCalls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled\n", + "summary": "Create Signed Embed Url", + "description": "### Create Signed Embed URL\n\nCreates a signed embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to the returned URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed embed URL can only be **used once**. After the URL has been used to request a page from the\nLooker server, it is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the \"Get embed URL\" menu option\nto copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nembed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\n\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls,\na default secret will be created. This default secret is encrypted using HMAC/SHA-256.\n\nThe `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n\n\nCalls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled\n", "responses": { "200": { - "description": "Signed SSO URL", + "description": "Signed Embed URL", "content": { "application/json": { "schema": { @@ -10498,7 +10498,7 @@ } } }, - "description": "SSO parameters", + "description": "Signed Embed URL parameters", "required": true } } @@ -15465,7 +15465,7 @@ ], "operationId": "ldap_config", "summary": "Get LDAP Configuration", - "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "LDAP Configuration.", @@ -15657,7 +15657,7 @@ ], "operationId": "test_ldap_config_auth", "summary": "Test LDAP Auth", - "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "Result info.", @@ -15732,7 +15732,7 @@ ], "operationId": "test_ldap_config_user_info", "summary": "Test LDAP User Info", - "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "Result info.", @@ -15807,7 +15807,7 @@ ], "operationId": "test_ldap_config_user_auth", "summary": "Test LDAP User Auth", - "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "Result info.", @@ -20020,7 +20020,7 @@ ], "operationId": "oidc_config", "summary": "Get OIDC Configuration", - "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "OIDC Configuration.", @@ -24748,7 +24748,7 @@ ], "operationId": "saml_config", "summary": "Get SAML Configuration", - "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", + "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nCalls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).\n", "responses": { "200": { "description": "SAML Configuration.", @@ -26307,7 +26307,7 @@ ], "operationId": "set_setting", "summary": "Set Setting", - "description": "### Configure Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - custom_welcome_email\n - data_connector_default_enabled\n - extension_framework_enabled\n - extension_load_url_enabled\n - marketplace_auto_install_enabled\n - marketplace_terms_accepted\n - marketplace_enabled\n - onboarding_enabled\n - privatelabel_configuration\n - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\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 - custom_welcome_email\n - data_connector_default_enabled\n - extension_framework_enabled\n - extension_load_url_enabled\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 - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n - embed_config\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", @@ -26411,7 +26411,7 @@ ], "operationId": "get_setting", "summary": "Get Setting", - "description": "### Get Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - custom_welcome_email\n - data_connector_default_enabled\n - extension_framework_enabled\n - extension_load_url_enabled\n - marketplace_auto_install_enabled\n - marketplace_terms_accepted\n - marketplace_enabled\n - onboarding_enabled\n - privatelabel_configuration\n - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n\n", + "description": "### Get Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - custom_welcome_email\n - data_connector_default_enabled\n - extension_framework_enabled\n - extension_load_url_enabled\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 - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n - embed_config\n\n", "parameters": [ { "name": "fields", @@ -40195,6 +40195,72 @@ }, "x-looker-status": "stable" }, + "EmbedConfig": { + "properties": { + "domain_allowlist": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of domains to allow for embedding", + "nullable": true + }, + "alert_url_allowlist": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of base urls to allow for alert/schedule", + "nullable": true + }, + "alert_url_param_owner": { + "type": "string", + "description": "Owner of who defines the alert/schedule params on the base url", + "nullable": true + }, + "alert_url_label": { + "type": "string", + "description": "Label for the alert/schedule url", + "nullable": true + }, + "sso_auth_enabled": { + "type": "boolean", + "description": "Is SSO embedding enabled for this Looker", + "nullable": false + }, + "embed_cookieless_v2": { + "type": "boolean", + "description": "Is Cookieless embedding enabled for this Looker", + "nullable": false + }, + "embed_content_navigation": { + "type": "boolean", + "description": "Is embed content navigation enabled for this looker", + "nullable": false + }, + "embed_content_management": { + "type": "boolean", + "description": "Is embed content management enabled for this Looker", + "nullable": false + }, + "strict_sameorigin_for_login": { + "type": "boolean", + "description": "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.", + "nullable": false + }, + "look_filters": { + "type": "boolean", + "description": "When true, filters are enabled on embedded Looks", + "nullable": false + }, + "hide_look_navigation": { + "type": "boolean", + "description": "When true, removes navigation to Looks from embedded dashboards and explores.", + "nullable": false + } + }, + "x-looker-status": "stable" + }, "EmbedParams": { "properties": { "target_url": { @@ -40206,7 +40272,7 @@ "session_length": { "type": "integer", "format": "int64", - "description": "Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days).", + "description": "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).", "nullable": true }, "force_logout_login": { @@ -40231,7 +40297,7 @@ "session_length": { "type": "integer", "format": "int64", - "description": "Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days).", + "description": "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).", "nullable": true }, "force_logout_login": { @@ -40241,7 +40307,7 @@ }, "external_user_id": { "type": "string", - "description": "A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions.", + "description": "A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session.", "nullable": true }, "first_name": { @@ -40301,6 +40367,11 @@ "type": "string", "description": "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.", "nullable": true + }, + "embed_domain": { + "type": "string", + "description": "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", + "nullable": true } }, "x-looker-status": "stable", @@ -40313,7 +40384,7 @@ "session_length": { "type": "integer", "format": "int64", - "description": "Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days).", + "description": "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).", "nullable": true }, "force_logout_login": { @@ -40323,7 +40394,7 @@ }, "external_user_id": { "type": "string", - "description": "A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions.", + "description": "A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session.", "nullable": true }, "first_name": { @@ -40379,14 +40450,14 @@ "description": "A dictionary of name-value pairs associating a Looker user attribute name with a value.", "nullable": true }, - "session_reference_token": { + "embed_domain": { "type": "string", - "description": "Token referencing the embed session and is used to generate new authentication, navigation and api tokens.", + "description": "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.", "nullable": true }, - "embed_domain": { + "session_reference_token": { "type": "string", - "description": "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.", + "description": "Token referencing the embed session and is used to generate new authentication, navigation and api tokens.", "nullable": true } }, @@ -44429,6 +44500,26 @@ }, "x-looker-status": "stable" }, + "MarketplaceAutomation": { + "properties": { + "install_enabled": { + "type": "boolean", + "description": "Whether marketplace auto installation is enabled", + "nullable": false + }, + "update_looker_enabled": { + "type": "boolean", + "description": "Whether marketplace auto update is enabled for looker extensions", + "nullable": false + }, + "update_third_party_enabled": { + "type": "boolean", + "description": "Whether marketplace auto update is enabled for third party extensions", + "nullable": false + } + }, + "x-looker-status": "stable" + }, "MaterializePDT": { "properties": { "materialization_id": { @@ -47952,19 +48043,29 @@ "extension_load_url_enabled": { "type": "boolean", "deprecated": true, - "description": "(DEPRECATED) Toggle extension extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted.", + "description": "(DEPRECATED) Toggle extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted.", "nullable": false }, "marketplace_auto_install_enabled": { "type": "boolean", - "description": "Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled.", + "deprecated": true, + "description": "(DEPRECATED) Toggle marketplace auto install on or off. Deprecated - do not use. Auto install can now be enabled via marketplace automation settings", "nullable": false }, + "marketplace_automation": { + "$ref": "#/components/schemas/MarketplaceAutomation" + }, "marketplace_enabled": { "type": "boolean", "description": "Toggle marketplace on or off", "nullable": false }, + "marketplace_site": { + "type": "string", + "readOnly": true, + "description": "Location of Looker marketplace CDN", + "nullable": false + }, "marketplace_terms_accepted": { "type": "boolean", "description": "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.", @@ -48017,7 +48118,8 @@ }, "embed_cookieless_v2": { "type": "boolean", - "description": "Toggle cookieless embed setting", + "deprecated": true, + "description": "(DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value.", "nullable": false }, "embed_enabled": { @@ -48025,6 +48127,9 @@ "readOnly": true, "description": "True if embedding is enabled https://cloud.google.com/looker/docs/r/looker-core-feature-embed, false otherwise", "nullable": false + }, + "embed_config": { + "$ref": "#/components/schemas/EmbedConfig" } }, "x-looker-status": "stable" diff --git a/swift/looker/rtl/constants.swift b/swift/looker/rtl/constants.swift index 87ce48c58..16bbdc82d 100644 --- a/swift/looker/rtl/constants.swift +++ b/swift/looker/rtl/constants.swift @@ -51,8 +51,8 @@ extension String { } public struct Constants { - public static let lookerVersion = "23.12" - public static let apiVersion = "4.0" + public static let lookerVersion = "23.14" + public static let apiVersion = "3.1" public static let defaultApiVersion = "4.0" // Swift requires API 4.0 public static let sdkVersion = #"\#(apiVersion).\#(lookerVersion)"# public static let environmentPrefix = "LOOKERSDK" diff --git a/swift/looker/sdk/methods.swift b/swift/looker/sdk/methods.swift index e7838bdce..04d6c0ca5 100644 --- a/swift/looker/sdk/methods.swift +++ b/swift/looker/sdk/methods.swift @@ -25,11 +25,11 @@ */ /** - * 461 API methods + * 382 API methods */ -/// NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0 +/// NOTE: Do not edit this file generated by Looker SDK Codegen for API 3.1 import Foundation @@ -38,289 +38,6 @@ open class LookerSDK: APIMethods { public lazy var stream = LookerSDKStream(authSession) - // MARK Alert: Alert - - /** - * Follow an alert. - * - * POST /alerts/{alert_id}/follow -> Voidable - */ - public func follow_alert( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.post("/alerts/\(path_alert_id)/follow", nil, nil, options) - return result - } - - /** - * Unfollow an alert. - * - * DELETE /alerts/{alert_id}/follow -> Voidable - */ - public func unfollow_alert( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.delete("/alerts/\(path_alert_id)/follow", nil, nil, options) - return result - } - - /** - * ### Search Alerts - * - * GET /alerts/search -> [Alert] - */ - public func search_alerts( - /** - * @param {Int64} limit (Optional) Number of results to return (used with `offset`). - */ - limit: Int64? = nil, - /** - * @param {Int64} offset (Optional) Number of results to skip before returning any (used with `limit`). - */ - offset: Int64? = nil, - /** - * @param {String} group_by (Optional) Dimension by which to order the results(`dashboard` | `owner`) - */ - group_by: String? = nil, - /** - * @param {String} fields (Optional) Requested fields. - */ - fields: String? = nil, - /** - * @param {Bool} disabled (Optional) Filter on returning only enabled or disabled alerts. - */ - disabled: Bool? = nil, - /** - * @param {String} frequency (Optional) Filter on alert frequency, such as: monthly, weekly, daily, hourly, minutes - */ - frequency: String? = nil, - /** - * @param {Bool} condition_met (Optional) Filter on whether the alert has met its condition when it last executed - */ - condition_met: Bool? = nil, - /** - * @param {String} last_run_start (Optional) Filter on the start range of the last time the alerts were run. Example: 2021-01-01T01:01:01-08:00. - */ - last_run_start: String? = nil, - /** - * @param {String} last_run_end (Optional) Filter on the start range of the last time the alerts were run. Example: 2021-01-01T01:01:01-08:00. - */ - last_run_end: String? = nil, - /** - * @param {Bool} all_owners (Admin only) (Optional) Filter for all owners. - */ - all_owners: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[Alert], SDKError> { - let result: SDKResponse<[Alert], SDKError> = self.get("/alerts/search", - ["limit": limit, "offset": offset, "group_by": group_by, "fields": fields, "disabled": disabled as Any?, "frequency": frequency, "condition_met": condition_met as Any?, "last_run_start": last_run_start, "last_run_end": last_run_end, "all_owners": all_owners as Any?], nil, options) - return result - } - - /** - * ### Get an alert by a given alert ID - * - * GET /alerts/{alert_id} -> Alert - */ - public func get_alert( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.get("/alerts/\(path_alert_id)", nil, nil, options) - return result - } - - /** - * ### Update an alert - * # Required fields: `owner_id`, `field`, `destinations`, `comparison_type`, `threshold`, `cron` - * # - * - * PUT /alerts/{alert_id} -> Alert - */ - public func update_alert( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - /** - * @param {WriteAlert} body - */ - _ body: WriteAlert, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.put("/alerts/\(path_alert_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Update select alert fields - * # Available fields: `owner_id`, `is_disabled`, `disabled_reason`, `is_public`, `threshold` - * # - * - * PATCH /alerts/{alert_id} -> Alert - */ - public func update_alert_field( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - /** - * @param {AlertPatch} body - */ - _ body: AlertPatch, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.patch("/alerts/\(path_alert_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete an alert by a given alert ID - * - * DELETE /alerts/{alert_id} -> Voidable - */ - public func delete_alert( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.delete("/alerts/\(path_alert_id)", nil, nil, options) - return result - } - - /** - * ### Create a new alert and return details of the newly created object - * - * Required fields: `field`, `destinations`, `comparison_type`, `threshold`, `cron` - * - * Example Request: - * Run alert on dashboard element '103' at 5am every day. Send an email to 'test@test.com' if inventory for Los Angeles (using dashboard filter `Warehouse Name`) is lower than 1,000 - * ``` - * { - * "cron": "0 5 * * *", - * "custom_title": "Alert when LA inventory is low", - * "dashboard_element_id": 103, - * "applied_dashboard_filters": [ - * { - * "filter_title": "Warehouse Name", - * "field_name": "distribution_centers.name", - * "filter_value": "Los Angeles CA", - * "filter_description": "is Los Angeles CA" - * } - * ], - * "comparison_type": "LESS_THAN", - * "destinations": [ - * { - * "destination_type": "EMAIL", - * "email_address": "test@test.com" - * } - * ], - * "field": { - * "title": "Number on Hand", - * "name": "inventory_items.number_on_hand" - * }, - * "is_disabled": false, - * "is_public": true, - * "threshold": 1000 - * } - * ``` - * - * POST /alerts -> Alert - */ - public func create_alert( - /** - * @param {WriteAlert} body - */ - _ body: WriteAlert, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/alerts", nil, try! self.encode(body), options) - return result - } - - /** - * ### Enqueue an Alert by ID - * - * POST /alerts/{alert_id}/enqueue -> Voidable - */ - public func enqueue_alert( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - /** - * @param {Bool} force Whether to enqueue an alert again if its already running. - */ - force: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.post("/alerts/\(path_alert_id)/enqueue", - ["force": force as Any?], nil, options) - return result - } - - /** - * # Alert Notifications. - * The endpoint returns all the alert notifications received by the user on email in the past 7 days. It also returns whether the notifications have been read by the user. - * - * GET /alert_notifications -> [AlertNotifications] - */ - public func alert_notifications( - /** - * @param {Int64} limit (Optional) Number of results to return (used with `offset`). - */ - limit: Int64? = nil, - /** - * @param {Int64} offset (Optional) Number of results to skip before returning any (used with `limit`). - */ - offset: Int64? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[AlertNotifications], SDKError> { - let result: SDKResponse<[AlertNotifications], SDKError> = self.get("/alert_notifications", - ["limit": limit, "offset": offset], nil, options) - return result - } - - /** - * # Reads a Notification - * The endpoint marks a given alert notification as read by the user, in case it wasn't already read. The AlertNotification model is updated for this purpose. It returns the notification as a response. - * - * PATCH /alert_notifications/{alert_notification_id} -> AlertNotifications - */ - public func read_alert_notification( - /** - * @param {String} alert_notification_id ID of a notification - */ - _ alert_notification_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_notification_id = encodeParam(alert_notification_id) - let result: SDKResponse = self.patch("/alert_notifications/\(path_alert_notification_id)", nil, nil, options) - return result - } - - - // MARK ApiAuth: API Authentication /** @@ -395,9 +112,9 @@ open class LookerSDK: APIMethods { */ public func login_user( /** - * @param {String} user_id Id of user. + * @param {Int64} user_id Id of user. */ - _ user_id: String, + _ user_id: Int64, /** * @param {Bool} associative When true (default), API calls using the returned access_token are attributed to the admin user who created the access_token. When false, API activity is attributed to the user the access_token runs as. False requires a looker license. */ @@ -424,1535 +141,1420 @@ open class LookerSDK: APIMethods { - // MARK Artifact: Artifact Storage + // MARK Auth: Manage User Authentication Configuration /** - * Get the maximum configured size of the entire artifact store, and the currently used storage in bytes. + * ### Create Signed Embed URL + * + * Creates a signed embed URL and cryptographically signs it with an embed secret. + * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. + * Do not make any modifications to the returned URL - any change may invalidate the signature and + * cause the URL to fail to load a Looker embed session. + * + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent + * 'replay attacks'. + * + * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. + * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. + * + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) + * and the lists of models and permissions assigned to the embed user. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. + * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. + * + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. + * + * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * + * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. + * + * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. + * + * #### Security Note + * Protect this signed URL as you would an access token or password credentials - do not write + * it to disk, do not pass it to a third party, and only pass it through a secure HTTPS + * encrypted transport. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * GET /artifact/usage -> ArtifactUsage + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * POST /embed/sso_url -> EmbedUrlResponse */ - public func artifact_usage( + public func create_sso_embed_url( /** - * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields + * @param {EmbedSsoParams} body */ - fields: String? = nil, + _ body: EmbedSsoParams, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/artifact/usage", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/embed/sso_url", nil, try! self.encode(body), options) return result } /** - * Get all artifact namespaces and the count of artifacts in each namespace + * ### Get the LDAP configuration. + * + * Looker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server. + * LDAP setup requires coordination with an administrator of that directory server. + * + * Only Looker administrators can read and update the LDAP configuration. + * + * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. + * + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * + * LDAP is enabled or disabled for Looker using the **enabled** field. + * + * Looker will never return an **auth_password** field. That value can be set, but never retrieved. + * + * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /artifact/namespaces -> [ArtifactNamespace] + * GET /ldap_config -> LDAPConfig */ - public func artifact_namespaces( - /** - * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields - */ - fields: String? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit) - */ - offset: Int64? = nil, + public func ldap_config( options: ITransportSettings? = nil - ) -> SDKResponse<[ArtifactNamespace], SDKError> { - let result: SDKResponse<[ArtifactNamespace], SDKError> = self.get("/artifact/namespaces", - ["fields": fields, "limit": limit, "offset": offset], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/ldap_config", nil, nil, options) return result } /** - * ### Return the value of an artifact + * ### Update the LDAP configuration. + * + * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. + * + * Only Looker administrators can read and update the LDAP configuration. + * + * LDAP is enabled or disabled for Looker using the **enabled** field. * - * The MIME type for the API response is set to the `content_type` of the value + * It is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally. + * + * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /artifact/{namespace}/value -> String + * PATCH /ldap_config -> LDAPConfig */ - public func artifact_value( - /** - * @param {String} namespace Artifact storage namespace - */ - _ namespace: String, + public func update_ldap_config( /** - * @param {String} key Artifact storage key. Namespace + Key must be unique + * @param {WriteLDAPConfig} body */ - key: String? = nil, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_namespace = encodeParam(namespace) - let result: SDKResponse = self.get("/artifact/\(path_namespace)/value", - ["key": key], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/ldap_config", nil, try! self.encode(body), options) return result } /** - * Remove *all* artifacts from a namespace. Purged artifacts are permanently deleted + * ### Test the connection settings for an LDAP configuration. + * + * This tests that the connection is possible given a connection_host and connection_port. + * + * **connection_host** and **connection_port** are required. **connection_tls** is optional. + * + * Example: + * ```json + * { + * "connection_host": "ldap.example.com", + * "connection_port": "636", + * "connection_tls": true + * } + * ``` + * + * No authentication to the LDAP server is attempted. + * + * The active LDAP settings are not modified. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * DELETE /artifact/{namespace}/purge -> Voidable + * PUT /ldap_config/test_connection -> LDAPConfigTestResult */ - public func purge_artifacts( + public func test_ldap_config_connection( /** - * @param {String} namespace Artifact storage namespace + * @param {WriteLDAPConfig} body */ - _ namespace: String, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_namespace = encodeParam(namespace) - let result: SDKResponse = self.delete("/artifact/\(path_namespace)/purge", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/ldap_config/test_connection", nil, try! self.encode(body), options) return result } /** - * ### Search all key/value pairs in a namespace for matching criteria. + * ### Test the connection authentication settings for an LDAP configuration. * - * Returns an array of artifacts matching the specified search criteria. + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. * - * Key search patterns use case-insensitive matching and can contain `%` and `_` as SQL LIKE pattern match wildcard expressions. + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. * - * The parameters `min_size` and `max_size` can be used individually or together. - * - * - `min_size` finds artifacts with sizes greater than or equal to its value - * - `max_size` finds artifacts with sizes less than or equal to its value - * - using both parameters restricts the minimum and maximum size range for artifacts + * Example: + * ```json + * { + * "connection_host": "ldap.example.com", + * "connection_port": "636", + * "connection_tls": true, + * "auth_username": "cn=looker,dc=example,dc=com", + * "auth_password": "secret" + * } + * ``` * - * **NOTE**: Artifacts are always returned in alphanumeric order by key. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * - * Get a **single artifact** by namespace and key with [`artifact`](#!/Artifact/artifact) + * The active LDAP settings are not modified. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /artifact/{namespace}/search -> [Artifact] + * PUT /ldap_config/test_auth -> LDAPConfigTestResult */ - public func search_artifacts( - /** - * @param {String} namespace Artifact storage namespace - */ - _ namespace: String, - /** - * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields - */ - fields: String? = nil, - /** - * @param {String} key Key pattern to match - */ - key: String? = nil, - /** - * @param {String} user_ids Ids of users who created or updated the artifact (comma-delimited list) - */ - user_ids: String? = nil, - /** - * @param {Int64} min_size Minimum storage size of the artifact - */ - min_size: Int64? = nil, - /** - * @param {Int64} max_size Maximum storage size of the artifact - */ - max_size: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset) - */ - limit: Int64? = nil, + public func test_ldap_config_auth( /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit) + * @param {WriteLDAPConfig} body */ - offset: Int64? = nil, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil - ) -> SDKResponse<[Artifact], SDKError> { - let path_namespace = encodeParam(namespace) - let result: SDKResponse<[Artifact], SDKError> = self.get("/artifact/\(path_namespace)/search", - ["fields": fields, "key": key, "user_ids": user_ids, "min_size": min_size, "max_size": max_size, "limit": limit, "offset": offset], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/ldap_config/test_auth", nil, try! self.encode(body), options) return result } /** - * ### Get one or more artifacts + * ### Test the user authentication settings for an LDAP configuration without authenticating the user. + * + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. * - * Returns an array of artifacts matching the specified key value(s). + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * **test_ldap_user** is required. + * + * The active LDAP settings are not modified. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /artifact/{namespace} -> [Artifact] + * PUT /ldap_config/test_user_info -> LDAPConfigTestResult */ - public func artifact( - /** - * @param {String} namespace Artifact storage namespace - */ - _ namespace: String, - /** - * @param {String} key Comma-delimited list of keys. Wildcards not allowed. - */ - _ key: String, - /** - * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields - */ - fields: String? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset) - */ - limit: Int64? = nil, + public func test_ldap_config_user_info( /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit) + * @param {WriteLDAPConfig} body */ - offset: Int64? = nil, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil - ) -> SDKResponse<[Artifact], SDKError> { - let path_namespace = encodeParam(namespace) - let result: SDKResponse<[Artifact], SDKError> = self.get("/artifact/\(path_namespace)", - ["key": key, "fields": fields, "limit": limit, "offset": offset], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/ldap_config/test_user_info", nil, try! self.encode(body), options) return result } /** - * ### Delete one or more artifacts + * ### Test the user authentication settings for an LDAP configuration. + * + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * - * To avoid rate limiting on deletion requests, multiple artifacts can be deleted at the same time by using a comma-delimited list of artifact keys. + * **test_ldap_user** and **test_ldap_password** are required. + * + * The active LDAP settings are not modified. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * DELETE /artifact/{namespace} -> Voidable + * PUT /ldap_config/test_user_auth -> LDAPConfigTestResult */ - public func delete_artifact( - /** - * @param {String} namespace Artifact storage namespace - */ - _ namespace: String, + public func test_ldap_config_user_auth( /** - * @param {String} key Comma-delimited list of keys. Wildcards not allowed. + * @param {WriteLDAPConfig} body */ - _ key: String, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_namespace = encodeParam(namespace) - let result: SDKResponse = self.delete("/artifact/\(path_namespace)", - ["key": key], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/ldap_config/test_user_auth", nil, try! self.encode(body), options) return result } /** - * ### Create or update one or more artifacts - * - * Only `key` and `value` are required to _create_ an artifact. - * To _update_ an artifact, its current `version` value must be provided. + * ### Get the OIDC configuration. * - * In the following example `body` payload, `one` and `two` are existing artifacts, and `three` is new: + * Looker can be optionally configured to authenticate users against an OpenID Connect (OIDC) + * authentication server. OIDC setup requires coordination with an administrator of that server. * - * ```json - * [ - * { "key": "one", "value": "[ \"updating\", \"existing\", \"one\" ]", "version": 10, "content_type": "application/json" }, - * { "key": "two", "value": "updating existing two", "version": 20 }, - * { "key": "three", "value": "creating new three" }, - * ] - * ``` + * Only Looker administrators can read and update the OIDC configuration. * - * Notes for this body: + * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * - The `value` for `key` **one** is a JSON payload, so a `content_type` override is needed. This override must be done **every** time a JSON value is set. - * - The `version` values for **one** and **two** mean they have been saved 10 and 20 times, respectively. - * - If `version` is **not** provided for an existing artifact, the entire request will be refused and a `Bad Request` response will be sent. - * - If `version` is provided for an artifact, it is only used for helping to prevent inadvertent data overwrites. It cannot be used to **set** the version of an artifact. The Looker server controls `version`. - * - We suggest encoding binary values as base64. Because the MIME content type for base64 is detected as plain text, also provide `content_type` to correctly indicate the value's type for retrieval and client-side processing. + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * - * Because artifacts are stored encrypted, the same value can be written multiple times (provided the correct `version` number is used). Looker does not examine any values stored in the artifact store, and only decrypts when sending artifacts back in an API response. + * OIDC is enabled or disabled for Looker using the **enabled** field. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /artifacts/{namespace} -> [Artifact] + * GET /oidc_config -> OIDCConfig */ - public func update_artifacts( - /** - * @param {String} namespace Artifact storage namespace - */ - _ namespace: String, - /** - * @param {[UpdateArtifact]} body - */ - _ body: [UpdateArtifact], - /** - * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields - */ - fields: String? = nil, + public func oidc_config( options: ITransportSettings? = nil - ) -> SDKResponse<[Artifact], SDKError> { - let path_namespace = encodeParam(namespace) - let result: SDKResponse<[Artifact], SDKError> = self.put("/artifacts/\(path_namespace)", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/oidc_config", nil, nil, options) return result } - - - // MARK Auth: Manage User Authentication Configuration - /** - * ### Create an embed secret using the specified information. + * ### Update the OIDC configuration. * - * The value of the `secret` field will be set by Looker and returned. + * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Only Looker administrators can read and update the OIDC configuration. * - * POST /embed_config/secrets -> EmbedSecret + * OIDC is enabled or disabled for Looker using the **enabled** field. + * + * It is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * PATCH /oidc_config -> OIDCConfig */ - public func create_embed_secret( + public func update_oidc_config( /** - * @param {WriteEmbedSecret} body + * @param {WriteOIDCConfig} body */ - body: WriteEmbedSecret?, + _ body: WriteOIDCConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/embed_config/secrets", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/oidc_config", nil, try! self.encode(body), options) return result } /** - * ### Delete an embed secret. + * ### Get a OIDC test configuration by test_slug. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * DELETE /embed_config/secrets/{embed_secret_id} -> String + * GET /oidc_test_configs/{test_slug} -> OIDCConfig */ - public func delete_embed_secret( + public func oidc_test_config( /** - * @param {String} embed_secret_id Id of Embed Secret + * @param {String} test_slug Slug of test config */ - _ embed_secret_id: String, + _ test_slug: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_embed_secret_id = encodeParam(embed_secret_id) - let result: SDKResponse = self.delete("/embed_config/secrets/\(path_embed_secret_id)", nil, nil, options) + ) -> SDKResponse { + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.get("/oidc_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Create SSO Embed URL - * - * Creates an SSO embed URL and cryptographically signs it with an embed secret. - * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to this URL - any change may invalidate the signature and - * cause the URL to fail to load a Looker embed session. - * - * A signed SSO embed URL can only be used once. After it has been used to request a page from the - * Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent - * 'replay attacks'. - * - * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. - * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. - * - * Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) - * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. - * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. - * - * The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. - * - * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. - * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. - * - * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the newest active secret defined in the Looker instance. - * - * #### Security Note - * Protect this signed URL as you would an access token or password credentials - do not write - * it to disk, do not pass it to a third party, and only pass it through a secure HTTPS - * encrypted transport. - * + * ### Delete a OIDC test configuration. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /embed/sso_url -> EmbedUrlResponse + * DELETE /oidc_test_configs/{test_slug} -> String */ - public func create_sso_embed_url( + public func delete_oidc_test_config( /** - * @param {EmbedSsoParams} body + * @param {String} test_slug Slug of test config */ - _ body: EmbedSsoParams, + _ test_slug: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/embed/sso_url", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.delete("/oidc_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Create an Embed URL - * - * Creates an embed URL that runs as the Looker user making this API call. ("Embed as me") - * This embed URL can then be used to instantiate a Looker embed session in a - * "Powered by Looker" (PBL) web application. - * - * This is similar to Private Embedding (https://cloud.google.com/looker/docs/r/admin/embed/private-embed). Instead of - * of logging into the Web UI to authenticate, the user has already authenticated against the API to be able to - * make this call. However, unlike Private Embed where the user has access to any other part of the Looker UI, - * the embed web session created by requesting the EmbedUrlResponse.url in a browser only has access to - * content visible under the `/embed` context. - * - * An embed URL can only be used once, and must be used within 5 minutes of being created. After it - * has been used to request a page from the Looker server, the URL is invalid. Future requests using - * the same URL will fail. This is to prevent 'replay attacks'. - * - * The `target_url` property must be a complete URL of a Looker Embedded UI page - scheme, hostname, path starting with "/embed" and query params. - * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker Embed URL would look like `https://myname.looker.com/embed/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar, insert "/embed" after the host/port, and paste it into the `target_url` property as a quoted string value in this API request. - * - * #### Security Note - * Protect this signed URL as you would an access token or password credentials - do not write - * it to disk, do not pass it to a third party, and only pass it through a secure HTTPS - * encrypted transport. - * + * ### Create a OIDC test configuration. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /embed/token_url/me -> EmbedUrlResponse + * POST /oidc_test_configs -> OIDCConfig */ - public func create_embed_url_as_me( + public func create_oidc_test_config( /** - * @param {EmbedParams} body + * @param {WriteOIDCConfig} body */ - _ body: EmbedParams, + _ body: WriteOIDCConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/embed/token_url/me", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/oidc_test_configs", nil, try! self.encode(body), options) return result } /** - * ### Acquire a cookieless embed session. - * - * The acquire session endpoint negates the need for signing the embed url and passing it as a parameter - * to the embed login. This endpoint accepts an embed user definition and creates or updates it. This is - * similar behavior to the embed SSO login as they both can create and update embed user data. - * - * The endpoint also accepts an optional `session_reference_token`. If present and the session has not expired - * and the credentials match the credentials for the embed session, a new authentication token will be - * generated. This allows the embed session to attach a new embedded IFRAME to the embed session. Note that - * the session is NOT extended in this scenario. In other words the session_length parameter is ignored. - * - * **IMPORTANT:** If the `session_reference_token` is provided and the session has NOT expired, the embed user - * is NOT updated. This is done for performance reasons and to support the embed SSO usecase where the - * first IFRAME created on a page uses a signed url and subsequently created IFRAMEs do not. - * - * If the `session_reference_token` is provided but the session has expired, the token will be ignored and a - * new embed session will be created. Note that the embed user definition will be updated in this scenario. - * - * If the credentials do not match the credentials associated with an exisiting session_reference_token, a - * 404 will be returned. - * - * The endpoint returns the following: - * - Authentication token - a token that is passed to `/embed/login` endpoint that creates or attaches to the - * embed session. This token can be used once and has a lifetime of 30 seconds. - * - Session reference token - a token that lives for the length of the session. This token is used to - * generate new api and navigation tokens OR create new embed IFRAMEs. - * - Api token - lives for 10 minutes. The Looker client will ask for this token once it is loaded into the - * iframe. - * - Navigation token - lives for 10 minutes. The Looker client will ask for this token once it is loaded into - * the iframe. + * ### Get password config. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /embed/cookieless_session/acquire -> EmbedCookielessSessionAcquireResponse + * GET /password_config -> PasswordConfig */ - public func acquire_embed_cookieless_session( - /** - * @param {EmbedCookielessSessionAcquire} body - */ - _ body: EmbedCookielessSessionAcquire, + public func password_config( options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/embed/cookieless_session/acquire", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/password_config", nil, nil, options) return result } /** - * ### Delete cookieless embed session - * - * This will delete the session associated with the given session reference token. Calling this endpoint will result - * in the session and session reference data being cleared from the system. This endpoint can be used to log an embed - * user out of the Looker instance. + * ### Update password config. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * DELETE /embed/cookieless_session/{session_reference_token} -> String + * PATCH /password_config -> PasswordConfig */ - public func delete_embed_cookieless_session( + public func update_password_config( /** - * @param {String} session_reference_token Embed session reference token + * @param {WritePasswordConfig} body */ - _ session_reference_token: String, + _ body: WritePasswordConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_session_reference_token = encodeParam(session_reference_token) - let result: SDKResponse = self.delete("/embed/cookieless_session/\(path_session_reference_token)", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/password_config", nil, try! self.encode(body), options) return result } /** - * ### Generate api and navigation tokens for a cookieless embed session - * - * The generate tokens endpoint is used to create new tokens of type: - * - Api token. - * - Navigation token. - * The generate tokens endpoint should be called every time the Looker client asks for a token (except for the - * first time when the tokens returned by the acquire_session endpoint should be used). + * ### Force all credentials_email users to reset their login passwords upon their next login. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /embed/cookieless_session/generate_tokens -> EmbedCookielessSessionGenerateTokensResponse + * PUT /password_config/force_password_reset_at_next_login_for_all_users -> String */ - public func generate_tokens_for_cookieless_session( - /** - * @param {EmbedCookielessSessionGenerateTokens} body - */ - _ body: EmbedCookielessSessionGenerateTokens, + public func force_password_reset_at_next_login_for_all_users( options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/embed/cookieless_session/generate_tokens", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/password_config/force_password_reset_at_next_login_for_all_users", nil, nil, options) return result } /** - * ### Get the LDAP configuration. - * - * Looker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server. - * LDAP setup requires coordination with an administrator of that directory server. - * - * Only Looker administrators can read and update the LDAP configuration. + * ### Get the SAML configuration. * - * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. + * Looker can be optionally configured to authenticate users against a SAML authentication server. + * SAML setup requires coordination with an administrator of that server. * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Only Looker administrators can read and update the SAML configuration. * - * LDAP is enabled or disabled for Looker using the **enabled** field. + * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * Looker will never return an **auth_password** field. That value can be set, but never retrieved. + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * - * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. + * SAML is enabled or disabled for Looker using the **enabled** field. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /ldap_config -> LDAPConfig + * GET /saml_config -> SamlConfig */ - public func ldap_config( + public func saml_config( options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/ldap_config", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/saml_config", nil, nil, options) return result } /** - * ### Update the LDAP configuration. + * ### Update the SAML configuration. * - * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. - * - * Only Looker administrators can read and update the LDAP configuration. + * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * LDAP is enabled or disabled for Looker using the **enabled** field. + * Only Looker administrators can read and update the SAML configuration. * - * It is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally. + * SAML is enabled or disabled for Looker using the **enabled** field. * - * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. + * It is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PATCH /ldap_config -> LDAPConfig + * PATCH /saml_config -> SamlConfig */ - public func update_ldap_config( + public func update_saml_config( /** - * @param {WriteLDAPConfig} body + * @param {WriteSamlConfig} body */ - _ body: WriteLDAPConfig, + _ body: WriteSamlConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/ldap_config", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/saml_config", nil, try! self.encode(body), options) return result } /** - * ### Test the connection settings for an LDAP configuration. - * - * This tests that the connection is possible given a connection_host and connection_port. - * - * **connection_host** and **connection_port** are required. **connection_tls** is optional. - * - * Example: - * ```json - * { - * "connection_host": "ldap.example.com", - * "connection_port": "636", - * "connection_tls": true - * } - * ``` - * - * No authentication to the LDAP server is attempted. - * - * The active LDAP settings are not modified. + * ### Get a SAML test configuration by test_slug. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /ldap_config/test_connection -> LDAPConfigTestResult + * GET /saml_test_configs/{test_slug} -> SamlConfig */ - public func test_ldap_config_connection( + public func saml_test_config( /** - * @param {WriteLDAPConfig} body + * @param {String} test_slug Slug of test config */ - _ body: WriteLDAPConfig, + _ test_slug: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_connection", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.get("/saml_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Test the connection authentication settings for an LDAP configuration. - * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. - * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. - * - * Example: - * ```json - * { - * "connection_host": "ldap.example.com", - * "connection_port": "636", - * "connection_tls": true, - * "auth_username": "cn=looker,dc=example,dc=com", - * "auth_password": "secret" - * } - * ``` - * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. - * - * The active LDAP settings are not modified. + * ### Delete a SAML test configuration. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /ldap_config/test_auth -> LDAPConfigTestResult + * DELETE /saml_test_configs/{test_slug} -> String */ - public func test_ldap_config_auth( + public func delete_saml_test_config( /** - * @param {WriteLDAPConfig} body + * @param {String} test_slug Slug of test config */ - _ body: WriteLDAPConfig, + _ test_slug: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_auth", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.delete("/saml_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Test the user authentication settings for an LDAP configuration without authenticating the user. - * - * This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. - * - * This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. - * - * **test_ldap_user** is required. - * - * The active LDAP settings are not modified. + * ### Create a SAML test configuration. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /ldap_config/test_user_info -> LDAPConfigTestResult + * POST /saml_test_configs -> SamlConfig */ - public func test_ldap_config_user_info( + public func create_saml_test_config( /** - * @param {WriteLDAPConfig} body + * @param {WriteSamlConfig} body */ - _ body: WriteLDAPConfig, + _ body: WriteSamlConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_user_info", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/saml_test_configs", nil, try! self.encode(body), options) return result } /** - * ### Test the user authentication settings for an LDAP configuration. - * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. - * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. - * - * **test_ldap_user** and **test_ldap_password** are required. - * - * The active LDAP settings are not modified. + * ### Parse the given xml as a SAML IdP metadata document and return the result. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /ldap_config/test_user_auth -> LDAPConfigTestResult + * POST /parse_saml_idp_metadata -> SamlMetadataParseResult */ - public func test_ldap_config_user_auth( + public func parse_saml_idp_metadata( /** - * @param {WriteLDAPConfig} body + * @param {String} body */ - _ body: WriteLDAPConfig, + _ body: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_user_auth", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/parse_saml_idp_metadata", nil, try! self.encode(body), options) return result } /** - * ### Registers a mobile device. - * # Required fields: [:device_token, :device_type] + * ### Fetch the given url and parse it as a SAML IdP metadata document and return the result. + * Note that this requires that the url be public or at least at a location where the Looker instance + * can fetch it without requiring any special authentication. * - * POST /mobile/device -> MobileToken + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * POST /fetch_and_parse_saml_idp_metadata -> SamlMetadataParseResult */ - public func register_mobile_device( + public func fetch_and_parse_saml_idp_metadata( /** - * @param {WriteMobileToken} body + * @param {String} body */ - _ body: WriteMobileToken, + _ body: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/mobile/device", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/fetch_and_parse_saml_idp_metadata", nil, try! self.encode(body), options) return result } /** - * ### Updates the mobile device registration + * ### Get session config. * - * PATCH /mobile/device/{device_id} -> MobileToken + * GET /session_config -> SessionConfig */ - public func update_mobile_device_registration( - /** - * @param {String} device_id Unique id of the device. - */ - _ device_id: String, + public func session_config( options: ITransportSettings? = nil - ) -> SDKResponse { - let path_device_id = encodeParam(device_id) - let result: SDKResponse = self.patch("/mobile/device/\(path_device_id)", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/session_config", nil, nil, options) return result } /** - * ### Deregister a mobile device. + * ### Update session config. * - * DELETE /mobile/device/{device_id} -> Voidable + * PATCH /session_config -> SessionConfig */ - public func deregister_mobile_device( + public func update_session_config( /** - * @param {String} device_id Unique id of the device. + * @param {WriteSessionConfig} body */ - _ device_id: String, + _ body: WriteSessionConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_device_id = encodeParam(device_id) - let result: SDKResponse = self.delete("/mobile/device/\(path_device_id)", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/session_config", nil, try! self.encode(body), options) return result } /** - * ### List All OAuth Client Apps - * - * Lists all applications registered to use OAuth2 login with this Looker instance, including - * enabled and disabled apps. - * - * Results are filtered to include only the apps that the caller (current user) - * has permission to see. + * ### Get currently locked-out users. * - * GET /oauth_client_apps -> [OauthClientApp] + * GET /user_login_lockouts -> [UserLoginLockout] */ - public func all_oauth_client_apps( + public func all_user_login_lockouts( /** - * @param {String} fields Requested fields. + * @param {String} fields Include only these fields in the response */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[OauthClientApp], SDKError> { - let result: SDKResponse<[OauthClientApp], SDKError> = self.get("/oauth_client_apps", + ) -> SDKResponse<[UserLoginLockout], SDKError> { + let result: SDKResponse<[UserLoginLockout], SDKError> = self.get("/user_login_lockouts", ["fields": fields], nil, options) return result } /** - * ### Get Oauth Client App - * - * Returns the registered app client with matching client_guid. + * ### Search currently locked-out users. * - * GET /oauth_client_apps/{client_guid} -> OauthClientApp + * GET /user_login_lockouts/search -> [UserLoginLockout] */ - public func oauth_client_app( + public func search_user_login_lockouts( /** - * @param {String} client_guid The unique id of this application + * @param {String} fields Include only these fields in the response */ - _ client_guid: String, + fields: String? = nil, /** - * @param {String} fields Requested fields. + * @param {Int64} page Return only page N of paginated results */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let result: SDKResponse = self.get("/oauth_client_apps/\(path_client_guid)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Register an OAuth2 Client App - * - * Registers details identifying an external web app or native app as an OAuth2 login client of the Looker instance. - * The app registration must provide a unique client_guid and redirect_uri that the app will present - * in OAuth login requests. If the client_guid and redirect_uri parameters in the login request do not match - * the app details registered with the Looker instance, the request is assumed to be a forgery and is rejected. - * - * POST /oauth_client_apps/{client_guid} -> OauthClientApp - */ - public func register_oauth_client_app( + page: Int64? = nil, /** - * @param {String} client_guid The unique id of this application + * @param {Int64} per_page Return N rows of data per page */ - _ client_guid: String, + per_page: Int64? = nil, /** - * @param {WriteOauthClientApp} body + * @param {String} sorts Fields to sort by. */ - _ body: WriteOauthClientApp, + sorts: String? = nil, /** - * @param {String} fields Requested fields. + * @param {String} auth_type Auth type user is locked out for (email, ldap, totp, api) */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let result: SDKResponse = self.post("/oauth_client_apps/\(path_client_guid)", - ["fields": fields], try! self.encode(body), options) - return result - } - - /** - * ### Update OAuth2 Client App Details - * - * Modifies the details a previously registered OAuth2 login client app. - * - * PATCH /oauth_client_apps/{client_guid} -> OauthClientApp - */ - public func update_oauth_client_app( + auth_type: String? = nil, /** - * @param {String} client_guid The unique id of this application + * @param {String} full_name Match name */ - _ client_guid: String, + full_name: String? = nil, /** - * @param {WriteOauthClientApp} body + * @param {String} email Match email */ - _ body: WriteOauthClientApp, + email: String? = nil, /** - * @param {String} fields Requested fields. + * @param {String} remote_id Match remote LDAP ID */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let result: SDKResponse = self.patch("/oauth_client_apps/\(path_client_guid)", - ["fields": fields], try! self.encode(body), options) - return result - } - - /** - * ### Delete OAuth Client App - * - * Deletes the registration info of the app with the matching client_guid. - * All active sessions and tokens issued for this app will immediately become invalid. - * - * As with most REST DELETE operations, this endpoint does not return an error if the - * indicated resource does not exist. - * - * ### Note: this deletion cannot be undone. - * - * DELETE /oauth_client_apps/{client_guid} -> String - */ - public func delete_oauth_client_app( + remote_id: String? = nil, /** - * @param {String} client_guid The unique id of this application + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression */ - _ client_guid: String, + filter_or: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let result: SDKResponse = self.delete("/oauth_client_apps/\(path_client_guid)", nil, nil, options) + ) -> SDKResponse<[UserLoginLockout], SDKError> { + let result: SDKResponse<[UserLoginLockout], SDKError> = self.get("/user_login_lockouts/search", + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "auth_type": auth_type, "full_name": full_name, "email": email, "remote_id": remote_id, "filter_or": filter_or as Any?], nil, options) return result } /** - * ### Invalidate All Issued Tokens - * - * Immediately invalidates all auth codes, sessions, access tokens and refresh tokens issued for - * this app for ALL USERS of this app. + * ### Removes login lockout for the associated user. * - * DELETE /oauth_client_apps/{client_guid}/tokens -> String + * DELETE /user_login_lockout/{key} -> String */ - public func invalidate_tokens( + public func delete_user_login_lockout( /** - * @param {String} client_guid The unique id of the application + * @param {String} key The key associated with the locked user */ - _ client_guid: String, + _ key: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let result: SDKResponse = self.delete("/oauth_client_apps/\(path_client_guid)/tokens", nil, nil, options) + let path_key = encodeParam(key) + let result: SDKResponse = self.delete("/user_login_lockout/\(path_key)", nil, nil, options) return result } + + + // MARK ColorCollection: Manage Color Collections + /** - * ### Activate an app for a user + * ### Get an array of all existing Color Collections + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * Activates a user for a given oauth client app. This indicates the user has been informed that - * the app will have access to the user's looker data, and that the user has accepted and allowed - * the app to use their Looker account. + * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) + * + * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) * - * Activating a user for an app that the user is already activated with returns a success response. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * POST /oauth_client_apps/{client_guid}/users/{user_id} -> String + * GET /color_collections -> [ColorCollection] */ - public func activate_app_user( - /** - * @param {String} client_guid The unique id of this application - */ - _ client_guid: String, - /** - * @param {String} user_id The id of the user to enable use of this app - */ - _ user_id: String, + public func all_color_collections( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.post("/oauth_client_apps/\(path_client_guid)/users/\(path_user_id)", + ) -> SDKResponse<[ColorCollection], SDKError> { + let result: SDKResponse<[ColorCollection], SDKError> = self.get("/color_collections", ["fields": fields], nil, options) return result } /** - * ### Deactivate an app for a user + * ### Create a custom color collection with the specified information + * + * Creates a new custom color collection object, returning the details, including the created id. * - * Deactivate a user for a given oauth client app. All tokens issued to the app for - * this user will be invalid immediately. Before the user can use the app with their - * Looker account, the user will have to read and accept an account use disclosure statement for the app. + * **Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection) * - * Admin users can deactivate other users, but non-admin users can only deactivate themselves. + * **Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection) * - * As with most REST DELETE operations, this endpoint does not return an error if the indicated - * resource (app or user) does not exist or has already been deactivated. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * DELETE /oauth_client_apps/{client_guid}/users/{user_id} -> String + * POST /color_collections -> ColorCollection */ - public func deactivate_app_user( + public func create_color_collection( /** - * @param {String} client_guid The unique id of this application + * @param {WriteColorCollection} body */ - _ client_guid: String, - /** - * @param {String} user_id The id of the user to enable use of this app - */ - _ user_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + _ body: WriteColorCollection, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.delete("/oauth_client_apps/\(path_client_guid)/users/\(path_user_id)", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/color_collections", nil, try! self.encode(body), options) return result } /** - * ### Get the OIDC configuration. - * - * Looker can be optionally configured to authenticate users against an OpenID Connect (OIDC) - * authentication server. OIDC setup requires coordination with an administrator of that server. - * - * Only Looker administrators can read and update the OIDC configuration. - * - * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. - * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * ### Get an array of all existing **Custom** Color Collections + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * OIDC is enabled or disabled for Looker using the **enabled** field. + * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * GET /oidc_config -> OIDCConfig + * GET /color_collections/custom -> [ColorCollection] */ - public func oidc_config( + public func color_collections_custom( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/oidc_config", nil, nil, options) + ) -> SDKResponse<[ColorCollection], SDKError> { + let result: SDKResponse<[ColorCollection], SDKError> = self.get("/color_collections/custom", + ["fields": fields], nil, options) return result } /** - * ### Update the OIDC configuration. - * - * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. - * - * Only Looker administrators can read and update the OIDC configuration. - * - * OIDC is enabled or disabled for Looker using the **enabled** field. + * ### Get an array of all existing **Standard** Color Collections + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * It is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally. + * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * PATCH /oidc_config -> OIDCConfig + * GET /color_collections/standard -> [ColorCollection] */ - public func update_oidc_config( + public func color_collections_standard( /** - * @param {WriteOIDCConfig} body + * @param {String} fields Requested fields. */ - _ body: WriteOIDCConfig, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/oidc_config", nil, try! self.encode(body), options) + ) -> SDKResponse<[ColorCollection], SDKError> { + let result: SDKResponse<[ColorCollection], SDKError> = self.get("/color_collections/standard", + ["fields": fields], nil, options) return result } /** - * ### Get a OIDC test configuration by test_slug. + * ### Get the default color collection * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Use this to retrieve the default Color Collection. * - * GET /oidc_test_configs/{test_slug} -> OIDCConfig + * Set the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection) + * + * GET /color_collections/default -> ColorCollection */ - public func oidc_test_config( - /** - * @param {String} test_slug Slug of test config - */ - _ test_slug: String, + public func default_color_collection( options: ITransportSettings? = nil - ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.get("/oidc_test_configs/\(path_test_slug)", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/color_collections/default", nil, nil, options) return result } /** - * ### Delete a OIDC test configuration. + * ### Set the global default Color Collection by ID * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Returns the new specified default Color Collection object. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * DELETE /oidc_test_configs/{test_slug} -> String + * PUT /color_collections/default -> ColorCollection */ - public func delete_oidc_test_config( + public func set_default_color_collection( /** - * @param {String} test_slug Slug of test config + * @param {String} collection_id ID of color collection to set as default */ - _ test_slug: String, + _ collection_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.delete("/oidc_test_configs/\(path_test_slug)", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/color_collections/default", + ["collection_id": collection_id], nil, options) return result } /** - * ### Create a OIDC test configuration. + * ### Get a Color Collection by ID * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Use this to retrieve a specific Color Collection. + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * POST /oidc_test_configs -> OIDCConfig + * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) + * + * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * + * GET /color_collections/{collection_id} -> ColorCollection */ - public func create_oidc_test_config( + public func color_collection( /** - * @param {WriteOIDCConfig} body + * @param {String} collection_id Id of Color Collection */ - _ body: WriteOIDCConfig, + _ collection_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/oidc_test_configs", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_collection_id = encodeParam(collection_id) + let result: SDKResponse = self.get("/color_collections/\(path_collection_id)", + ["fields": fields], nil, options) return result } /** - * ### Get password config. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Update a custom color collection by id. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * GET /password_config -> PasswordConfig + * PATCH /color_collections/{collection_id} -> ColorCollection */ - public func password_config( + public func update_color_collection( + /** + * @param {String} collection_id Id of Custom Color Collection + */ + _ collection_id: String, + /** + * @param {WriteColorCollection} body + */ + _ body: WriteColorCollection, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/password_config", nil, nil, options) + ) -> SDKResponse { + let path_collection_id = encodeParam(collection_id) + let result: SDKResponse = self.patch("/color_collections/\(path_collection_id)", nil, try! self.encode(body), options) return result } /** - * ### Update password config. + * ### Delete a custom color collection by id * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * This operation permanently deletes the identified **Custom** color collection. * - * PATCH /password_config -> PasswordConfig + * **Standard** color collections cannot be deleted + * + * Because multiple color collections can have the same label, they must be deleted by ID, not name. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * + * DELETE /color_collections/{collection_id} -> String */ - public func update_password_config( + public func delete_color_collection( /** - * @param {WritePasswordConfig} body + * @param {String} collection_id Id of Color Collection */ - _ body: WritePasswordConfig, + _ collection_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/password_config", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_collection_id = encodeParam(collection_id) + let result: SDKResponse = self.delete("/color_collections/\(path_collection_id)", nil, nil, options) return result } + + + // MARK Config: Manage General Configuration + /** - * ### Force all credentials_email users to reset their login passwords upon their next login. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### WARNING: The Looker internal database backup function has been deprecated. * - * PUT /password_config/force_password_reset_at_next_login_for_all_users -> String + * GET /backup_configuration -> BackupConfiguration */ - public func force_password_reset_at_next_login_for_all_users( + @available(*, deprecated) + public func backup_configuration( options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/password_config/force_password_reset_at_next_login_for_all_users", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/backup_configuration", nil, nil, options) return result } /** - * ### Get the SAML configuration. - * - * Looker can be optionally configured to authenticate users against a SAML authentication server. - * SAML setup requires coordination with an administrator of that server. - * - * Only Looker administrators can read and update the SAML configuration. - * - * Configuring SAML impacts authentication for all users. This configuration should be done carefully. - * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). - * - * SAML is enabled or disabled for Looker using the **enabled** field. + * ### WARNING: The Looker internal database backup function has been deprecated. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * GET /saml_config -> SamlConfig + * PATCH /backup_configuration -> BackupConfiguration */ - public func saml_config( + @available(*, deprecated) + public func update_backup_configuration( + /** + * @param {WriteBackupConfiguration} body + */ + _ body: WriteBackupConfiguration, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/saml_config", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/backup_configuration", nil, try! self.encode(body), options) return result } /** - * ### Update the SAML configuration. - * - * Configuring SAML impacts authentication for all users. This configuration should be done carefully. - * - * Only Looker administrators can read and update the SAML configuration. - * - * SAML is enabled or disabled for Looker using the **enabled** field. - * - * It is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Get the current Cloud Storage Configuration. * - * PATCH /saml_config -> SamlConfig + * GET /cloud_storage -> BackupConfiguration */ - public func update_saml_config( - /** - * @param {WriteSamlConfig} body - */ - _ body: WriteSamlConfig, + public func cloud_storage_configuration( options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/saml_config", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/cloud_storage", nil, nil, options) return result } /** - * ### Get a SAML test configuration by test_slug. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Update the current Cloud Storage Configuration. * - * GET /saml_test_configs/{test_slug} -> SamlConfig + * PATCH /cloud_storage -> BackupConfiguration */ - public func saml_test_config( + public func update_cloud_storage_configuration( /** - * @param {String} test_slug Slug of test config + * @param {WriteBackupConfiguration} body */ - _ test_slug: String, + _ body: WriteBackupConfiguration, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.get("/saml_test_configs/\(path_test_slug)", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/cloud_storage", nil, try! self.encode(body), options) return result } /** - * ### Delete a SAML test configuration. + * ### Get the current status and content of custom welcome emails * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * GET /custom_welcome_email -> CustomWelcomeEmail + */ + public func custom_welcome_email( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/custom_welcome_email", nil, nil, options) + return result + } + + /** + * Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user. * - * DELETE /saml_test_configs/{test_slug} -> String + * PATCH /custom_welcome_email -> CustomWelcomeEmail */ - public func delete_saml_test_config( + public func update_custom_welcome_email( /** - * @param {String} test_slug Slug of test config + * @param {WriteCustomWelcomeEmail} body */ - _ test_slug: String, + _ body: WriteCustomWelcomeEmail, + /** + * @param {Bool} send_test_welcome_email If true a test email with the content from the request will be sent to the current user after saving + */ + send_test_welcome_email: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.delete("/saml_test_configs/\(path_test_slug)", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/custom_welcome_email", + ["send_test_welcome_email": send_test_welcome_email as Any?], try! self.encode(body), options) return result } /** - * ### Create a SAML test configuration. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user. * - * POST /saml_test_configs -> SamlConfig + * PUT /custom_welcome_email_test -> WelcomeEmailTest */ - public func create_saml_test_config( + public func update_custom_welcome_email_test( /** - * @param {WriteSamlConfig} body + * @param {WelcomeEmailTest} body */ - _ body: WriteSamlConfig, + _ body: WelcomeEmailTest, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/saml_test_configs", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/custom_welcome_email_test", nil, try! self.encode(body), options) return result } /** - * ### Parse the given xml as a SAML IdP metadata document and return the result. + * ### Retrieve the value for whether or not digest emails is enabled * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * GET /digest_emails_enabled -> DigestEmails + */ + public func digest_emails_enabled( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/digest_emails_enabled", nil, nil, options) + return result + } + + /** + * ### Update the setting for enabling/disabling digest emails * - * POST /parse_saml_idp_metadata -> SamlMetadataParseResult + * PATCH /digest_emails_enabled -> DigestEmails */ - public func parse_saml_idp_metadata( + public func update_digest_emails_enabled( /** - * @param {String} body + * @param {DigestEmails} body */ - _ body: String, + _ body: DigestEmails, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/parse_saml_idp_metadata", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/digest_emails_enabled", nil, try! self.encode(body), options) return result } /** - * ### Fetch the given url and parse it as a SAML IdP metadata document and return the result. - * Note that this requires that the url be public or at least at a location where the Looker instance - * can fetch it without requiring any special authentication. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Trigger the generation of digest email records and send them to Looker's internal system. This does not send + * any actual emails, it generates records containing content which may be of interest for users who have become inactive. + * Emails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings. * - * POST /fetch_and_parse_saml_idp_metadata -> SamlMetadataParseResult + * POST /digest_email_send -> DigestEmailSend */ - public func fetch_and_parse_saml_idp_metadata( - /** - * @param {String} body - */ - _ body: String, + public func create_digest_email_send( options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/fetch_and_parse_saml_idp_metadata", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/digest_email_send", nil, nil, options) return result } /** - * ### Get session config. + * ### Set the menu item name and content for internal help resources * - * GET /session_config -> SessionConfig + * GET /internal_help_resources_content -> InternalHelpResourcesContent */ - public func session_config( + public func internal_help_resources_content( options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/session_config", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/internal_help_resources_content", nil, nil, options) return result } /** - * ### Update session config. + * Update internal help resources content * - * PATCH /session_config -> SessionConfig + * PATCH /internal_help_resources_content -> InternalHelpResourcesContent */ - public func update_session_config( + public func update_internal_help_resources_content( /** - * @param {WriteSessionConfig} body + * @param {WriteInternalHelpResourcesContent} body */ - _ body: WriteSessionConfig, + _ body: WriteInternalHelpResourcesContent, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/session_config", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/internal_help_resources_content", nil, try! self.encode(body), options) return result } /** - * ### Get Support Access Allowlist Users - * - * Returns the users that have been added to the Support Access Allowlist + * ### Get and set the options for internal help resources * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * GET /internal_help_resources_enabled -> InternalHelpResources + */ + public func internal_help_resources( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/internal_help_resources_enabled", nil, nil, options) + return result + } + + /** + * Update internal help resources settings * - * GET /support_access/allowlist -> [SupportAccessAllowlistEntry] + * PATCH /internal_help_resources -> InternalHelpResources */ - public func get_support_access_allowlist_entries( + public func update_internal_help_resources( /** - * @param {String} fields Requested fields. + * @param {WriteInternalHelpResources} body */ - fields: String? = nil, + _ body: WriteInternalHelpResources, options: ITransportSettings? = nil - ) -> SDKResponse<[SupportAccessAllowlistEntry], SDKError> { - let result: SDKResponse<[SupportAccessAllowlistEntry], SDKError> = self.get("/support_access/allowlist", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/internal_help_resources", nil, try! self.encode(body), options) return result } /** - * ### Add Support Access Allowlist Users - * - * Adds a list of emails to the Allowlist, using the provided reason + * ### Get all legacy features. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /support_access/allowlist -> [SupportAccessAllowlistEntry] + * GET /legacy_features -> [LegacyFeature] */ - public func add_support_access_allowlist_entries( - /** - * @param {SupportAccessAddEntries} body - */ - _ body: SupportAccessAddEntries, + public func all_legacy_features( options: ITransportSettings? = nil - ) -> SDKResponse<[SupportAccessAllowlistEntry], SDKError> { - let result: SDKResponse<[SupportAccessAllowlistEntry], SDKError> = self.post("/support_access/allowlist", nil, try! self.encode(body), options) + ) -> SDKResponse<[LegacyFeature], SDKError> { + let result: SDKResponse<[LegacyFeature], SDKError> = self.get("/legacy_features", nil, nil, options) return result } /** - * ### Delete Support Access Allowlist User - * - * Deletes the specified Allowlist Entry Id + * ### Get information about the legacy feature with a specific id. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * DELETE /support_access/allowlist/{entry_id} -> String + * GET /legacy_features/{legacy_feature_id} -> LegacyFeature */ - public func delete_support_access_allowlist_entry( + public func legacy_feature( /** - * @param {String} entry_id Id of Allowlist Entry + * @param {Int64} legacy_feature_id id of legacy feature */ - _ entry_id: String, + _ legacy_feature_id: Int64, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_entry_id = encodeParam(entry_id) - let result: SDKResponse = self.delete("/support_access/allowlist/\(path_entry_id)", nil, nil, options) + ) -> SDKResponse { + let path_legacy_feature_id = encodeParam(legacy_feature_id) + let result: SDKResponse = self.get("/legacy_features/\(path_legacy_feature_id)", nil, nil, options) return result } /** - * ### Enable Support Access - * - * Enables Support Access for the provided duration + * ### Update information about the legacy feature with a specific id. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /support_access/enable -> SupportAccessStatus + * PATCH /legacy_features/{legacy_feature_id} -> LegacyFeature */ - public func enable_support_access( + public func update_legacy_feature( /** - * @param {SupportAccessEnable} body + * @param {Int64} legacy_feature_id id of legacy feature */ - _ body: SupportAccessEnable, + _ legacy_feature_id: Int64, + /** + * @param {WriteLegacyFeature} body + */ + _ body: WriteLegacyFeature, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/support_access/enable", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_legacy_feature_id = encodeParam(legacy_feature_id) + let result: SDKResponse = self.patch("/legacy_features/\(path_legacy_feature_id)", nil, try! self.encode(body), options) return result } /** - * ### Disable Support Access - * - * Disables Support Access immediately - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Get a list of locales that Looker supports. * - * PUT /support_access/disable -> SupportAccessStatus + * GET /locales -> [LkLocale] */ - public func disable_support_access( + public func all_locales( options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/support_access/disable", nil, nil, options) + ) -> SDKResponse<[LkLocale], SDKError> { + let result: SDKResponse<[LkLocale], SDKError> = self.get("/locales", nil, nil, options) return result } /** - * ### Support Access Status - * - * Returns the current Support Access Status + * ### Configure SMTP Settings + * This API allows users to configure the SMTP settings on the Looker instance. + * Only admin users are authorised to call this API. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * POST /smtp_settings -> Voidable + */ + public func set_smtp_settings( + /** + * @param {SmtpSettings} body + */ + _ body: SmtpSettings, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/smtp_settings", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks). * - * GET /support_access/status -> SupportAccessStatus + * GET /timezones -> [Timezone] */ - public func support_access_status( + public func all_timezones( options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/support_access/status", nil, nil, options) + ) -> SDKResponse<[Timezone], SDKError> { + let result: SDKResponse<[Timezone], SDKError> = self.get("/timezones", nil, nil, options) return result } /** - * ### Get currently locked-out users. + * ### Get information about all API versions supported by this Looker instance. * - * GET /user_login_lockouts -> [UserLoginLockout] + * GET /versions -> ApiVersion */ - public func all_user_login_lockouts( + public func versions( /** - * @param {String} fields Include only these fields in the response + * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[UserLoginLockout], SDKError> { - let result: SDKResponse<[UserLoginLockout], SDKError> = self.get("/user_login_lockouts", + ) -> SDKResponse { + let result: SDKResponse = self.get("/versions", ["fields": fields], nil, options) return result } /** - * ### Search currently locked-out users. + * ### This feature is enabled only by special license. + * ### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc. * - * GET /user_login_lockouts/search -> [UserLoginLockout] + * GET /whitelabel_configuration -> WhitelabelConfiguration */ - public func search_user_login_lockouts( + public func whitelabel_configuration( /** - * @param {String} fields Include only these fields in the response + * @param {String} fields Requested fields. */ fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/whitelabel_configuration", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update the whitelabel configuration + * + * PUT /whitelabel_configuration -> WhitelabelConfiguration + */ + public func update_whitelabel_configuration( /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results - */ - page: Int64? = nil, - /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {WriteWhitelabelConfiguration} body */ - per_page: Int64? = nil, + _ body: WriteWhitelabelConfiguration, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.put("/whitelabel_configuration", nil, try! self.encode(body), options) + return result + } + + + + // MARK Connection: Manage Database Connections + + /** + * ### Get information about all connections. + * + * GET /connections -> [DBConnection] + */ + public func all_connections( /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + * @param {String} fields Requested fields. */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[DBConnection], SDKError> { + let result: SDKResponse<[DBConnection], SDKError> = self.get("/connections", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create a connection using the specified configuration. + * + * POST /connections -> DBConnection + */ + public func create_connection( /** - * @param {String} sorts Fields to sort by. + * @param {WriteDBConnection} body */ - sorts: String? = nil, + _ body: WriteDBConnection, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/connections", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get information about a connection. + * + * GET /connections/{connection_name} -> DBConnection + */ + public func connection( /** - * @param {String} auth_type Auth type user is locked out for (email, ldap, totp, api) + * @param {String} connection_name Name of connection */ - auth_type: String? = nil, + _ connection_name: String, /** - * @param {String} full_name Match name + * @param {String} fields Requested fields. */ - full_name: String? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.get("/connections/\(path_connection_name)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update a connection using the specified configuration. + * + * PATCH /connections/{connection_name} -> DBConnection + */ + public func update_connection( /** - * @param {String} email Match email + * @param {String} connection_name Name of connection */ - email: String? = nil, + _ connection_name: String, /** - * @param {String} remote_id Match remote LDAP ID + * @param {WriteDBConnection} body */ - remote_id: String? = nil, + _ body: WriteDBConnection, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.patch("/connections/\(path_connection_name)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Delete a connection. + * + * DELETE /connections/{connection_name} -> String + */ + public func delete_connection( /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {String} connection_name Name of connection */ - filter_or: Bool? = nil, + _ connection_name: String, options: ITransportSettings? = nil - ) -> SDKResponse<[UserLoginLockout], SDKError> { - let result: SDKResponse<[UserLoginLockout], SDKError> = self.get("/user_login_lockouts/search", - ["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 as Any?], nil, options) + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.delete("/connections/\(path_connection_name)", nil, nil, options) return result } /** - * ### Removes login lockout for the associated user. + * ### Delete a connection override. * - * DELETE /user_login_lockout/{key} -> String + * DELETE /connections/{connection_name}/connection_override/{override_context} -> String */ - public func delete_user_login_lockout( + public func delete_connection_override( /** - * @param {String} key The key associated with the locked user + * @param {String} connection_name Name of connection */ - _ key: String, + _ connection_name: String, + /** + * @param {String} override_context Context of connection override + */ + _ override_context: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_key = encodeParam(key) - let result: SDKResponse = self.delete("/user_login_lockout/\(path_key)", nil, nil, options) + let path_connection_name = encodeParam(connection_name) + let path_override_context = encodeParam(override_context) + let result: SDKResponse = self.delete("/connections/\(path_connection_name)/connection_override/\(path_override_context)", nil, nil, options) return result } - - - // MARK Board: Manage Boards - /** - * ### Get information about all boards. + * ### Test an existing connection. + * + * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the + * specific types of tests that the connection supports. + * + * This API is rate limited. * - * GET /boards -> [Board] + * Unsupported tests in the request will be ignored. + * + * PUT /connections/{connection_name}/test -> [DBConnectionTestResult] */ - public func all_boards( + public func test_connection( /** - * @param {String} fields Requested fields. + * @param {String} connection_name Name of connection */ - fields: String? = nil, + _ connection_name: String, + /** + * @param {DelimArray} tests Array of names of tests to run + */ + tests: DelimArray? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Board], SDKError> { - let result: SDKResponse<[Board], SDKError> = self.get("/boards", - ["fields": fields], nil, options) + ) -> SDKResponse<[DBConnectionTestResult], SDKError> { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse<[DBConnectionTestResult], SDKError> = self.put("/connections/\(path_connection_name)/test", + ["tests": tests as Any?], nil, options) return result } /** - * ### Create a new board. + * ### Test a connection configuration. + * + * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the + * specific types of tests that the connection supports. + * + * This API is rate limited. + * + * Unsupported tests in the request will be ignored. * - * POST /boards -> Board + * PUT /connections/test -> [DBConnectionTestResult] */ - public func create_board( + public func test_connection_config( + /** + * @param {WriteDBConnection} body + */ + _ body: WriteDBConnection, /** - * @param {WriteBoard} body + * @param {DelimArray} tests Array of names of tests to run */ - _ body: WriteBoard, + tests: DelimArray? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[DBConnectionTestResult], SDKError> { + let result: SDKResponse<[DBConnectionTestResult], SDKError> = self.put("/connections/test", + ["tests": tests as Any?], try! self.encode(body), options) + return result + } + + /** + * ### Get information about all dialects. + * + * GET /dialect_info -> [DialectInfo] + */ + public func all_dialect_infos( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/boards", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse<[DialectInfo], SDKError> { + let result: SDKResponse<[DialectInfo], SDKError> = self.get("/dialect_info", + ["fields": fields], nil, options) return result } + + + // MARK Content: Manage Content + /** - * ### Search Boards + * ### Search Favorite Content * * If multiple search params are given and `filter_or` is FALSE or not specified, * search params are combined in a logical AND operation. @@ -1975,2513 +1577,503 @@ open class LookerSDK: APIMethods { * * Boolean search params accept only "true" and "false" as values. * - * GET /boards/search -> [Board] + * GET /content_favorite/search -> [ContentFavorite] */ - public func search_boards( + public func search_content_favorites( /** - * @param {String} title Matches board title. + * @param {Int64} id Match content favorite id(s) */ - title: String? = nil, + id: Int64? = nil, /** - * @param {String} created_at Matches the timestamp for when the board was created. + * @param {Int64} user_id Match user id(s) */ - created_at: String? = nil, + user_id: Int64? = nil, /** - * @param {String} first_name The first name of the user who created this board. + * @param {Int64} content_metadata_id Match content metadata id(s) */ - first_name: String? = nil, + content_metadata_id: Int64? = nil, /** - * @param {String} last_name The last name of the user who created this board. + * @param {Int64} dashboard_id Match dashboard id(s) */ - last_name: String? = nil, + dashboard_id: Int64? = nil, /** - * @param {String} fields Requested fields. + * @param {Int64} look_id Match look id(s) */ - fields: String? = nil, + look_id: Int64? = nil, /** - * @param {Bool} favorited Return favorited boards when true. + * @param {Int64} limit Number of results to return. (used with offset) */ - favorited: Bool? = nil, + limit: Int64? = nil, /** - * @param {String} creator_id Filter on boards created by a particular user. + * @param {Int64} offset Number of results to skip before returning any. (used with limit) */ - creator_id: String? = nil, + offset: Int64? = nil, /** - * @param {String} sorts The fields to sort the results by + * @param {String} sorts Fields to sort by. */ sorts: String? = nil, /** - * @param {Int64} page The page to return. DEPRECATED. Use offset instead. - */ - page: Int64? = nil, - /** - * @param {Int64} per_page The number of items in the returned page. DEPRECATED. Use limit instead. - */ - per_page: Int64? = nil, - /** - * @param {Int64} offset The number of items to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, - /** - * @param {Int64} limit The maximum number of items to return. (used with offset and takes priority over page and per_page) + * @param {String} fields Requested fields. */ - limit: Int64? = nil, + fields: String? = nil, /** * @param {Bool} filter_or Combine given search criteria in a boolean OR expression */ filter_or: Bool? = nil, - /** - * @param {String} permission Filter results based on permission, either show (default) or update - */ - permission: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Board], SDKError> { - let result: SDKResponse<[Board], SDKError> = self.get("/boards/search", - ["title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited as Any?, "creator_id": creator_id, "sorts": sorts, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "filter_or": filter_or as Any?, "permission": permission], nil, options) + ) -> SDKResponse<[ContentFavorite], SDKError> { + let result: SDKResponse<[ContentFavorite], SDKError> = self.get("/content_favorite/search", + ["id": id, "user_id": user_id, "content_metadata_id": content_metadata_id, "dashboard_id": dashboard_id, "look_id": look_id, "limit": limit, "offset": offset, "sorts": sorts, "fields": fields, "filter_or": filter_or as Any?], nil, options) return result } /** - * ### Get information about a board. + * ### Get favorite content by its id * - * GET /boards/{board_id} -> Board + * GET /content_favorite/{content_favorite_id} -> ContentFavorite */ - public func board( + public func content_favorite( /** - * @param {String} board_id Id of board + * @param {Int64} content_favorite_id Id of favorite content */ - _ board_id: String, + _ content_favorite_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_board_id = encodeParam(board_id) - let result: SDKResponse = self.get("/boards/\(path_board_id)", + ) -> SDKResponse { + let path_content_favorite_id = encodeParam(content_favorite_id) + let result: SDKResponse = self.get("/content_favorite/\(path_content_favorite_id)", ["fields": fields], nil, options) return result } /** - * ### Update a board definition. + * ### Delete favorite content * - * PATCH /boards/{board_id} -> Board + * DELETE /content_favorite/{content_favorite_id} -> String */ - public func update_board( - /** - * @param {String} board_id Id of board - */ - _ board_id: String, - /** - * @param {WriteBoard} body - */ - _ body: WriteBoard, + public func delete_content_favorite( /** - * @param {String} fields Requested fields. + * @param {Int64} content_favorite_id Id of favorite content */ - fields: String? = nil, + _ content_favorite_id: Int64, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_board_id = encodeParam(board_id) - let result: SDKResponse = self.patch("/boards/\(path_board_id)", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse { + let path_content_favorite_id = encodeParam(content_favorite_id) + let result: SDKResponse = self.delete("/content_favorite/\(path_content_favorite_id)", nil, nil, options) return result } /** - * ### Delete a board. + * ### Create favorite content * - * DELETE /boards/{board_id} -> String + * POST /content_favorite -> ContentFavorite */ - public func delete_board( + public func create_content_favorite( /** - * @param {String} board_id Id of board + * @param {WriteContentFavorite} body */ - _ board_id: String, + _ body: WriteContentFavorite, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_board_id = encodeParam(board_id) - let result: SDKResponse = self.delete("/boards/\(path_board_id)", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/content_favorite", nil, try! self.encode(body), options) return result } /** - * ### Get information about all board items. + * ### Get information about all content metadata in a space. * - * GET /board_items -> [BoardItem] + * GET /content_metadata -> [ContentMeta] */ - public func all_board_items( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func all_content_metadatas( /** - * @param {String} sorts Fields to sort by. + * @param {Int64} parent_id Parent space of content. */ - sorts: String? = nil, + _ parent_id: Int64, /** - * @param {String} board_section_id Filter to a specific board section + * @param {String} fields Requested fields. */ - board_section_id: String? = nil, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[BoardItem], SDKError> { - let result: SDKResponse<[BoardItem], SDKError> = self.get("/board_items", - ["fields": fields, "sorts": sorts, "board_section_id": board_section_id], nil, options) + ) -> SDKResponse<[ContentMeta], SDKError> { + let result: SDKResponse<[ContentMeta], SDKError> = self.get("/content_metadata", + ["parent_id": parent_id, "fields": fields], nil, options) return result } /** - * ### Create a new board item. + * ### Get information about an individual content metadata record. * - * POST /board_items -> BoardItem + * GET /content_metadata/{content_metadata_id} -> ContentMeta */ - public func create_board_item( + public func content_metadata( /** - * @param {WriteBoardItem} body + * @param {Int64} content_metadata_id Id of content metadata */ - _ body: WriteBoardItem, + _ content_metadata_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/board_items", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse { + let path_content_metadata_id = encodeParam(content_metadata_id) + let result: SDKResponse = self.get("/content_metadata/\(path_content_metadata_id)", + ["fields": fields], nil, options) return result } /** - * ### Get information about a board item. + * ### Move a piece of content. * - * GET /board_items/{board_item_id} -> BoardItem + * PATCH /content_metadata/{content_metadata_id} -> ContentMeta */ - public func board_item( + public func update_content_metadata( /** - * @param {String} board_item_id Id of board item + * @param {Int64} content_metadata_id Id of content metadata */ - _ board_item_id: String, + _ content_metadata_id: Int64, /** - * @param {String} fields Requested fields. + * @param {WriteContentMeta} body */ - fields: String? = nil, + _ body: WriteContentMeta, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_board_item_id = encodeParam(board_item_id) - let result: SDKResponse = self.get("/board_items/\(path_board_item_id)", - ["fields": fields], nil, options) + ) -> SDKResponse { + let path_content_metadata_id = encodeParam(content_metadata_id) + let result: SDKResponse = self.patch("/content_metadata/\(path_content_metadata_id)", nil, try! self.encode(body), options) return result } /** - * ### Update a board item definition. + * ### All content metadata access records for a content metadata item. * - * PATCH /board_items/{board_item_id} -> BoardItem + * GET /content_metadata_access -> [ContentMetaGroupUser] */ - public func update_board_item( - /** - * @param {String} board_item_id Id of board item - */ - _ board_item_id: String, + public func all_content_metadata_accesses( /** - * @param {WriteBoardItem} body + * @param {Int64} content_metadata_id Id of content metadata */ - _ body: WriteBoardItem, + _ content_metadata_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_board_item_id = encodeParam(board_item_id) - let result: SDKResponse = self.patch("/board_items/\(path_board_item_id)", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse<[ContentMetaGroupUser], SDKError> { + let result: SDKResponse<[ContentMetaGroupUser], SDKError> = self.get("/content_metadata_access", + ["content_metadata_id": content_metadata_id, "fields": fields], nil, options) return result } /** - * ### Delete a board item. + * ### Create content metadata access. * - * DELETE /board_items/{board_item_id} -> String + * POST /content_metadata_access -> ContentMetaGroupUser */ - public func delete_board_item( + public func create_content_metadata_access( /** - * @param {String} board_item_id Id of board item + * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH + */ + _ body: ContentMetaGroupUser, + /** + * @param {Bool} send_boards_notification_email Optionally sends notification email when granting access to a board. */ - _ board_item_id: String, + send_boards_notification_email: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_board_item_id = encodeParam(board_item_id) - let result: SDKResponse = self.delete("/board_items/\(path_board_item_id)", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/content_metadata_access", + ["send_boards_notification_email": send_boards_notification_email as Any?], try! self.encode(body), options) return result } /** - * ### Get information about all board sections. + * ### Update type of access for content metadata. * - * GET /board_sections -> [BoardSection] + * PUT /content_metadata_access/{content_metadata_access_id} -> ContentMetaGroupUser */ - public func all_board_sections( + public func update_content_metadata_access( /** - * @param {String} fields Requested fields. + * @param {Int64} content_metadata_access_id Id of content metadata access */ - fields: String? = nil, + _ content_metadata_access_id: Int64, /** - * @param {String} sorts Fields to sort by. + * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH */ - sorts: String? = nil, + _ body: ContentMetaGroupUser, options: ITransportSettings? = nil - ) -> SDKResponse<[BoardSection], SDKError> { - let result: SDKResponse<[BoardSection], SDKError> = self.get("/board_sections", - ["fields": fields, "sorts": sorts], nil, options) + ) -> SDKResponse { + let path_content_metadata_access_id = encodeParam(content_metadata_access_id) + let result: SDKResponse = self.put("/content_metadata_access/\(path_content_metadata_access_id)", nil, try! self.encode(body), options) return result } /** - * ### Create a new board section. + * ### Remove content metadata access. * - * POST /board_sections -> BoardSection + * DELETE /content_metadata_access/{content_metadata_access_id} -> String */ - public func create_board_section( - /** - * @param {WriteBoardSection} body - */ - _ body: WriteBoardSection, + public func delete_content_metadata_access( /** - * @param {String} fields Requested fields. + * @param {Int64} content_metadata_access_id Id of content metadata access */ - fields: String? = nil, + _ content_metadata_access_id: Int64, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/board_sections", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse { + let path_content_metadata_access_id = encodeParam(content_metadata_access_id) + let result: SDKResponse = self.delete("/content_metadata_access/\(path_content_metadata_access_id)", nil, nil, options) return result } /** - * ### Get information about a board section. + * ### Get an image representing the contents of a dashboard or look. + * + * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not + * reflect the actual data displayed in the respective visualizations. + * + * GET /content_thumbnail/{type}/{resource_id} -> String * - * GET /board_sections/{board_section_id} -> BoardSection + * **Note**: Binary content may be returned by this method. */ - public func board_section( + public func content_thumbnail( /** - * @param {String} board_section_id Id of board section + * @param {String} type Either dashboard or look */ - _ board_section_id: String, + _ type: String, /** - * @param {String} fields Requested fields. + * @param {String} resource_id ID of the dashboard or look to render */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_board_section_id = encodeParam(board_section_id) - let result: SDKResponse = self.get("/board_sections/\(path_board_section_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update a board section definition. - * - * PATCH /board_sections/{board_section_id} -> BoardSection - */ - public func update_board_section( + _ resource_id: String, /** - * @param {String} board_section_id Id of board section + * @param {String} reload Whether or not to refresh the rendered image with the latest content */ - _ board_section_id: String, + reload: String? = nil, /** - * @param {WriteBoardSection} body + * @param {String} theme Light or dark background. Default is "light" */ - _ body: WriteBoardSection, + theme: String? = nil, /** - * @param {String} fields Requested fields. + * @param {String} format A value of png produces a thumbnail in PNG format instead of SVG (default) */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_board_section_id = encodeParam(board_section_id) - let result: SDKResponse = self.patch("/board_sections/\(path_board_section_id)", - ["fields": fields], try! self.encode(body), options) - return result - } - - /** - * ### Delete a board section. - * - * DELETE /board_sections/{board_section_id} -> String - */ - public func delete_board_section( + format: String? = nil, /** - * @param {String} board_section_id Id of board section + * @param {Int64} width The width of the image if format is supplied + */ + width: Int64? = nil, + /** + * @param {Int64} height The height of the image if format is supplied */ - _ board_section_id: String, + height: Int64? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_board_section_id = encodeParam(board_section_id) - let result: SDKResponse = self.delete("/board_sections/\(path_board_section_id)", nil, nil, options) + let path_type = encodeParam(type) + let path_resource_id = encodeParam(resource_id) + let result: SDKResponse = self.get("/content_thumbnail/\(path_type)/\(path_resource_id)", + ["reload": reload, "theme": theme, "format": format, "width": width, "height": height], nil, options) return result } - - - // MARK ColorCollection: Manage Color Collections - /** - * ### Get an array of all existing Color Collections - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) - * - * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) - * - * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * ### Validate All Content * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Performs validation of all looks and dashboards + * Returns a list of errors found as well as metadata about the content validation run. * - * GET /color_collections -> [ColorCollection] + * GET /content_validation -> ContentValidation */ - public func all_color_collections( + public func content_validation( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[ColorCollection], SDKError> { - let result: SDKResponse<[ColorCollection], SDKError> = self.get("/color_collections", + ) -> SDKResponse { + let result: SDKResponse = self.get("/content_validation", ["fields": fields], nil, options) return result } /** - * ### Create a custom color collection with the specified information + * ### Search Content Views * - * Creates a new custom color collection object, returning the details, including the created id. + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. * - * **Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection) + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. * - * **Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection) + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. * - * POST /color_collections -> ColorCollection + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /content_view/search -> [ContentView] */ - public func create_color_collection( + public func search_content_views( /** - * @param {WriteColorCollection} body + * @param {Int64} view_count Match view count */ - _ body: WriteColorCollection, + view_count: Int64? = nil, + /** + * @param {Int64} group_id Match Group Id + */ + group_id: Int64? = nil, + /** + * @param {String} look_id Match look_id + */ + look_id: String? = nil, + /** + * @param {String} dashboard_id Match dashboard_id + */ + dashboard_id: String? = nil, + /** + * @param {Int64} content_metadata_id Match content metadata id + */ + content_metadata_id: Int64? = nil, + /** + * @param {String} start_of_week_date Match start of week date (format is "YYYY-MM-DD") + */ + start_of_week_date: String? = nil, + /** + * @param {Bool} all_time True if only all time view records should be returned + */ + all_time: Bool? = nil, + /** + * @param {Int64} user_id Match user id + */ + user_id: Int64? = nil, + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + /** + * @param {Int64} limit Number of results to return. Use with `offset` to manage pagination of results + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning data + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by + */ + sorts: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/color_collections", nil, try! self.encode(body), options) + ) -> SDKResponse<[ContentView], SDKError> { + let result: SDKResponse<[ContentView], SDKError> = self.get("/content_view/search", + ["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 as Any?, "user_id": user_id, "fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) return result } /** - * ### Get an array of all existing **Custom** Color Collections - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) + * ### Get a vector image representing the contents of a dashboard or look. * - * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) + * # DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail) * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not + * reflect the actual data displayed in the respective visualizations. * - * GET /color_collections/custom -> [ColorCollection] + * GET /vector_thumbnail/{type}/{resource_id} -> String */ - public func color_collections_custom( + @available(*, deprecated) + public func vector_thumbnail( /** - * @param {String} fields Requested fields. + * @param {String} type Either dashboard or look */ - fields: String? = nil, + _ type: String, + /** + * @param {String} resource_id ID of the dashboard or look to render + */ + _ resource_id: String, + /** + * @param {String} reload Whether or not to refresh the rendered image with the latest content + */ + reload: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[ColorCollection], SDKError> { - let result: SDKResponse<[ColorCollection], SDKError> = self.get("/color_collections/custom", - ["fields": fields], nil, options) + ) -> SDKResponse { + let path_type = encodeParam(type) + let path_resource_id = encodeParam(resource_id) + let result: SDKResponse = self.get("/vector_thumbnail/\(path_type)/\(path_resource_id)", + ["reload": reload], nil, options) return result } + + + // MARK Dashboard: Manage Dashboards + /** - * ### Get an array of all existing **Standard** Color Collections - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) + * ### Get information about all active dashboards. * - * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * Returns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list. * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Get the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard) * - * GET /color_collections/standard -> [ColorCollection] + * Find **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards) + * + * GET /dashboards -> [DashboardBase] */ - public func color_collections_standard( + public func all_dashboards( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[ColorCollection], SDKError> { - let result: SDKResponse<[ColorCollection], SDKError> = self.get("/color_collections/standard", + ) -> SDKResponse<[DashboardBase], SDKError> { + let result: SDKResponse<[DashboardBase], SDKError> = self.get("/dashboards", ["fields": fields], nil, options) return result } /** - * ### Get the default color collection - * - * Use this to retrieve the default Color Collection. + * ### Create a new dashboard * - * Set the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection) + * Creates a new dashboard object and returns the details of the newly created dashboard. * - * GET /color_collections/default -> ColorCollection - */ - public func default_color_collection( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/color_collections/default", nil, nil, options) - return result - } - - /** - * ### Set the global default Color Collection by ID - * - * Returns the new specified default Color Collection object. - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. - * - * PUT /color_collections/default -> ColorCollection - */ - public func set_default_color_collection( - /** - * @param {String} collection_id ID of color collection to set as default - */ - _ collection_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/color_collections/default", - ["collection_id": collection_id], nil, options) - return result - } - - /** - * ### Get a Color Collection by ID - * - * Use this to retrieve a specific Color Collection. - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) - * - * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) - * - * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) - * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. - * - * GET /color_collections/{collection_id} -> ColorCollection - */ - public func color_collection( - /** - * @param {String} collection_id Id of Color Collection - */ - _ collection_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_collection_id = encodeParam(collection_id) - let result: SDKResponse = self.get("/color_collections/\(path_collection_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update a custom color collection by id. - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. - * - * PATCH /color_collections/{collection_id} -> ColorCollection - */ - public func update_color_collection( - /** - * @param {String} collection_id Id of Custom Color Collection - */ - _ collection_id: String, - /** - * @param {WriteColorCollection} body - */ - _ body: WriteColorCollection, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_collection_id = encodeParam(collection_id) - let result: SDKResponse = self.patch("/color_collections/\(path_collection_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete a custom color collection by id - * - * This operation permanently deletes the identified **Custom** color collection. - * - * **Standard** color collections cannot be deleted - * - * Because multiple color collections can have the same label, they must be deleted by ID, not name. - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. - * - * DELETE /color_collections/{collection_id} -> String - */ - public func delete_color_collection( - /** - * @param {String} collection_id Id of Color Collection - */ - _ collection_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_collection_id = encodeParam(collection_id) - let result: SDKResponse = self.delete("/color_collections/\(path_collection_id)", nil, nil, options) - return result - } - - - - // MARK Config: Manage General Configuration - - /** - * Get the current Cloud Storage Configuration. - * - * GET /cloud_storage -> BackupConfiguration - */ - public func cloud_storage_configuration( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/cloud_storage", nil, nil, options) - return result - } - - /** - * Update the current Cloud Storage Configuration. - * - * PATCH /cloud_storage -> BackupConfiguration - */ - public func update_cloud_storage_configuration( - /** - * @param {WriteBackupConfiguration} body - */ - _ body: WriteBackupConfiguration, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/cloud_storage", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get the current status and content of custom welcome emails - * - * GET /custom_welcome_email -> CustomWelcomeEmail - */ - @available(*, deprecated) - public func custom_welcome_email( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/custom_welcome_email", nil, nil, options) - return result - } - - /** - * Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user. - * - * PATCH /custom_welcome_email -> CustomWelcomeEmail - */ - @available(*, deprecated) - public func update_custom_welcome_email( - /** - * @param {CustomWelcomeEmail} body - */ - _ body: CustomWelcomeEmail, - /** - * @param {Bool} send_test_welcome_email If true a test email with the content from the request will be sent to the current user after saving - */ - send_test_welcome_email: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/custom_welcome_email", - ["send_test_welcome_email": send_test_welcome_email as Any?], try! self.encode(body), options) - return result - } - - /** - * Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user. - * - * PUT /custom_welcome_email_test -> WelcomeEmailTest - */ - public func update_custom_welcome_email_test( - /** - * @param {WelcomeEmailTest} body - */ - _ body: WelcomeEmailTest, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/custom_welcome_email_test", nil, try! self.encode(body), options) - return result - } - - /** - * ### Retrieve the value for whether or not digest emails is enabled - * - * GET /digest_emails_enabled -> DigestEmails - */ - public func digest_emails_enabled( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/digest_emails_enabled", nil, nil, options) - return result - } - - /** - * ### Update the setting for enabling/disabling digest emails - * - * PATCH /digest_emails_enabled -> DigestEmails - */ - public func update_digest_emails_enabled( - /** - * @param {DigestEmails} body - */ - _ body: DigestEmails, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/digest_emails_enabled", nil, try! self.encode(body), options) - return result - } - - /** - * ### Trigger the generation of digest email records and send them to Looker's internal system. This does not send - * any actual emails, it generates records containing content which may be of interest for users who have become inactive. - * Emails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings. - * - * POST /digest_email_send -> DigestEmailSend - */ - public func create_digest_email_send( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/digest_email_send", nil, nil, options) - return result - } - - /** - * ### Get Egress IP Addresses - * - * Returns the list of public egress IP Addresses for a hosted customer's instance - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * GET /public_egress_ip_addresses -> EgressIpAddresses - */ - public func public_egress_ip_addresses( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/public_egress_ip_addresses", nil, nil, options) - return result - } - - /** - * ### Set the menu item name and content for internal help resources - * - * GET /internal_help_resources_content -> InternalHelpResourcesContent - */ - public func internal_help_resources_content( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/internal_help_resources_content", nil, nil, options) - return result - } - - /** - * Update internal help resources content - * - * PATCH /internal_help_resources_content -> InternalHelpResourcesContent - */ - public func update_internal_help_resources_content( - /** - * @param {WriteInternalHelpResourcesContent} body - */ - _ body: WriteInternalHelpResourcesContent, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/internal_help_resources_content", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get and set the options for internal help resources - * - * GET /internal_help_resources_enabled -> InternalHelpResources - */ - public func internal_help_resources( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/internal_help_resources_enabled", nil, nil, options) - return result - } - - /** - * Update internal help resources settings - * - * PATCH /internal_help_resources -> InternalHelpResources - */ - public func update_internal_help_resources( - /** - * @param {WriteInternalHelpResources} body - */ - _ body: WriteInternalHelpResources, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/internal_help_resources", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get all legacy features. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * GET /legacy_features -> [LegacyFeature] - */ - public func all_legacy_features( - options: ITransportSettings? = nil - ) -> SDKResponse<[LegacyFeature], SDKError> { - let result: SDKResponse<[LegacyFeature], SDKError> = self.get("/legacy_features", nil, nil, options) - return result - } - - /** - * ### Get information about the legacy feature with a specific id. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * GET /legacy_features/{legacy_feature_id} -> LegacyFeature - */ - public func legacy_feature( - /** - * @param {String} legacy_feature_id id of legacy feature - */ - _ legacy_feature_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_legacy_feature_id = encodeParam(legacy_feature_id) - let result: SDKResponse = self.get("/legacy_features/\(path_legacy_feature_id)", nil, nil, options) - return result - } - - /** - * ### Update information about the legacy feature with a specific id. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * PATCH /legacy_features/{legacy_feature_id} -> LegacyFeature - */ - public func update_legacy_feature( - /** - * @param {String} legacy_feature_id id of legacy feature - */ - _ legacy_feature_id: String, - /** - * @param {WriteLegacyFeature} body - */ - _ body: WriteLegacyFeature, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_legacy_feature_id = encodeParam(legacy_feature_id) - let result: SDKResponse = self.patch("/legacy_features/\(path_legacy_feature_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get a list of locales that Looker supports. - * - * GET /locales -> [LkLocale] - */ - public func all_locales( - options: ITransportSettings? = nil - ) -> SDKResponse<[LkLocale], SDKError> { - let result: SDKResponse<[LkLocale], SDKError> = self.get("/locales", nil, nil, options) - return result - } - - /** - * ### Get all mobile settings. - * - * GET /mobile/settings -> MobileSettings - */ - public func mobile_settings( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/mobile/settings", nil, nil, options) - return result - } - - /** - * ### Get Looker Settings - * - * Available settings are: - * - allow_user_timezones - * - custom_welcome_email - * - data_connector_default_enabled - * - extension_framework_enabled - * - extension_load_url_enabled - * - marketplace_auto_install_enabled - * - marketplace_terms_accepted - * - marketplace_enabled - * - onboarding_enabled - * - privatelabel_configuration - * - timezone - * - host_url - * - email_domain_allowlist - * - embed_cookieless_v2 - * - embed_enabled - * - * GET /setting -> Setting - */ - public func get_setting( - /** - * @param {String} fields Requested fields - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/setting", - ["fields": fields], nil, options) - return result - } - - /** - * ### Configure Looker Settings - * - * Available settings are: - * - allow_user_timezones - * - custom_welcome_email - * - data_connector_default_enabled - * - extension_framework_enabled - * - extension_load_url_enabled - * - marketplace_auto_install_enabled - * - marketplace_terms_accepted - * - marketplace_enabled - * - onboarding_enabled - * - privatelabel_configuration - * - timezone - * - host_url - * - email_domain_allowlist - * - embed_cookieless_v2 - * - embed_enabled - * - * See the `Setting` type for more information on the specific values that can be configured. - * - * If a setting update is rejected, the API error payload should provide information on the cause of the rejection. - * - * PATCH /setting -> Setting - */ - public func set_setting( - /** - * @param {WriteSetting} body - */ - _ body: WriteSetting, - /** - * @param {String} fields Requested fields - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/setting", - ["fields": fields], try! self.encode(body), options) - return result - } - - /** - * ### Configure SMTP Settings - * This API allows users to configure the SMTP settings on the Looker instance. - * Only admin users are authorised to call this API. - * - * POST /smtp_settings -> Voidable - */ - public func set_smtp_settings( - /** - * @param {SmtpSettings} body - */ - _ body: SmtpSettings, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/smtp_settings", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get current SMTP status. - * - * GET /smtp_status -> SmtpStatus - */ - public func smtp_status( - /** - * @param {String} fields Include only these fields in the response - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/smtp_status", - ["fields": fields], nil, options) - return result - } - - /** - * ### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks). - * - * GET /timezones -> [Timezone] - */ - public func all_timezones( - options: ITransportSettings? = nil - ) -> SDKResponse<[Timezone], SDKError> { - let result: SDKResponse<[Timezone], SDKError> = self.get("/timezones", nil, nil, options) - return result - } - - /** - * ### Get information about all API versions supported by this Looker instance. - * - * GET /versions -> ApiVersion - */ - public func versions( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/versions", - ["fields": fields], nil, options) - return result - } - - /** - * ### Get an API specification for this Looker instance. - * - * The specification is returned as a JSON document in Swagger 2.x format - * - * GET /api_spec/{api_version}/{specification} -> AnyCodable - */ - public func api_spec( - /** - * @param {String} api_version API version - */ - _ api_version: String, - /** - * @param {String} specification Specification name. Typically, this is "swagger.json" - */ - _ specification: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_api_version = encodeParam(api_version) - let path_specification = encodeParam(specification) - let result: SDKResponse = self.get("/api_spec/\(path_api_version)/\(path_specification)", nil, nil, options) - return result - } - - /** - * ### This feature is enabled only by special license. - * ### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc. - * - * GET /whitelabel_configuration -> WhitelabelConfiguration - */ - @available(*, deprecated) - public func whitelabel_configuration( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/whitelabel_configuration", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update the whitelabel configuration - * - * PUT /whitelabel_configuration -> WhitelabelConfiguration - */ - @available(*, deprecated) - public func update_whitelabel_configuration( - /** - * @param {WriteWhitelabelConfiguration} body - */ - _ body: WriteWhitelabelConfiguration, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/whitelabel_configuration", nil, try! self.encode(body), options) - return result - } - - - - // MARK Connection: Manage Database Connections - - /** - * ### Get information about all connections. - * - * GET /connections -> [DBConnection] - */ - public func all_connections( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[DBConnection], SDKError> { - let result: SDKResponse<[DBConnection], SDKError> = self.get("/connections", - ["fields": fields], nil, options) - return result - } - - /** - * ### Create a connection using the specified configuration. - * - * POST /connections -> DBConnection - */ - public func create_connection( - /** - * @param {WriteDBConnection} body - */ - _ body: WriteDBConnection, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/connections", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get information about a connection. - * - * GET /connections/{connection_name} -> DBConnection - */ - public func connection( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.get("/connections/\(path_connection_name)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update a connection using the specified configuration. - * - * PATCH /connections/{connection_name} -> DBConnection - */ - public func update_connection( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {WriteDBConnection} body - */ - _ body: WriteDBConnection, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.patch("/connections/\(path_connection_name)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete a connection. - * - * DELETE /connections/{connection_name} -> String - */ - public func delete_connection( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.delete("/connections/\(path_connection_name)", nil, nil, options) - return result - } - - /** - * ### Delete a connection override. - * - * DELETE /connections/{connection_name}/connection_override/{override_context} -> String - */ - public func delete_connection_override( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {String} override_context Context of connection override - */ - _ override_context: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let path_override_context = encodeParam(override_context) - let result: SDKResponse = self.delete("/connections/\(path_connection_name)/connection_override/\(path_override_context)", nil, nil, options) - return result - } - - /** - * ### Test an existing connection. - * - * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the - * specific types of tests that the connection supports. - * - * This API is rate limited. - * - * Unsupported tests in the request will be ignored. - * - * PUT /connections/{connection_name}/test -> [DBConnectionTestResult] - */ - public func test_connection( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {DelimArray} tests Array of names of tests to run - */ - tests: DelimArray? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[DBConnectionTestResult], SDKError> { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse<[DBConnectionTestResult], SDKError> = self.put("/connections/\(path_connection_name)/test", - ["tests": tests as Any?], nil, options) - return result - } - - /** - * ### Test a connection configuration. - * - * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the - * specific types of tests that the connection supports. - * - * This API is rate limited. - * - * Unsupported tests in the request will be ignored. - * - * PUT /connections/test -> [DBConnectionTestResult] - */ - public func test_connection_config( - /** - * @param {WriteDBConnection} body - */ - _ body: WriteDBConnection, - /** - * @param {DelimArray} tests Array of names of tests to run - */ - tests: DelimArray? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[DBConnectionTestResult], SDKError> { - let result: SDKResponse<[DBConnectionTestResult], SDKError> = self.put("/connections/test", - ["tests": tests as Any?], try! self.encode(body), options) - return result - } - - /** - * ### Get information about all dialects. - * - * GET /dialect_info -> [DialectInfo] - */ - public func all_dialect_infos( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[DialectInfo], SDKError> { - let result: SDKResponse<[DialectInfo], SDKError> = self.get("/dialect_info", - ["fields": fields], nil, options) - return result - } - - /** - * ### Get all External OAuth Applications. - * - * This is an OAuth Application which Looker uses to access external systems. - * - * GET /external_oauth_applications -> [ExternalOauthApplication] - */ - public func all_external_oauth_applications( - /** - * @param {String} name Application name - */ - name: String? = nil, - /** - * @param {String} client_id Application Client ID - */ - client_id: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[ExternalOauthApplication], SDKError> { - let result: SDKResponse<[ExternalOauthApplication], SDKError> = self.get("/external_oauth_applications", - ["name": name, "client_id": client_id], nil, options) - return result - } - - /** - * ### Create an OAuth Application using the specified configuration. - * - * This is an OAuth Application which Looker uses to access external systems. - * - * POST /external_oauth_applications -> ExternalOauthApplication - */ - public func create_external_oauth_application( - /** - * @param {WriteExternalOauthApplication} body - */ - _ body: WriteExternalOauthApplication, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/external_oauth_applications", nil, try! self.encode(body), options) - return result - } - - /** - * ### Create OAuth User state. - * - * POST /external_oauth_applications/user_state -> CreateOAuthApplicationUserStateResponse - */ - public func create_oauth_application_user_state( - /** - * @param {CreateOAuthApplicationUserStateRequest} body - */ - _ body: CreateOAuthApplicationUserStateRequest, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/external_oauth_applications/user_state", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get information about all SSH Servers. - * - * GET /ssh_servers -> [SshServer] - */ - public func all_ssh_servers( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[SshServer], SDKError> { - let result: SDKResponse<[SshServer], SDKError> = self.get("/ssh_servers", - ["fields": fields], nil, options) - return result - } - - /** - * ### Create an SSH Server. - * - * POST /ssh_servers -> SshServer - */ - public func create_ssh_server( - /** - * @param {WriteSshServer} body - */ - _ body: WriteSshServer, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/ssh_servers", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get information about an SSH Server. - * - * GET /ssh_server/{ssh_server_id} -> SshServer - */ - public func ssh_server( - /** - * @param {String} ssh_server_id Id of SSH Server - */ - _ ssh_server_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_server_id = encodeParam(ssh_server_id) - let result: SDKResponse = self.get("/ssh_server/\(path_ssh_server_id)", nil, nil, options) - return result - } - - /** - * ### Update an SSH Server. - * - * PATCH /ssh_server/{ssh_server_id} -> SshServer - */ - public func update_ssh_server( - /** - * @param {String} ssh_server_id Id of SSH Server - */ - _ ssh_server_id: String, - /** - * @param {WriteSshServer} body - */ - _ body: WriteSshServer, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_server_id = encodeParam(ssh_server_id) - let result: SDKResponse = self.patch("/ssh_server/\(path_ssh_server_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete an SSH Server. - * - * DELETE /ssh_server/{ssh_server_id} -> String - */ - public func delete_ssh_server( - /** - * @param {String} ssh_server_id Id of SSH Server - */ - _ ssh_server_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_server_id = encodeParam(ssh_server_id) - let result: SDKResponse = self.delete("/ssh_server/\(path_ssh_server_id)", nil, nil, options) - return result - } - - /** - * ### Test the SSH Server - * - * GET /ssh_server/{ssh_server_id}/test -> SshServer - */ - public func test_ssh_server( - /** - * @param {String} ssh_server_id Id of SSH Server - */ - _ ssh_server_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_server_id = encodeParam(ssh_server_id) - let result: SDKResponse = self.get("/ssh_server/\(path_ssh_server_id)/test", nil, nil, options) - return result - } - - /** - * ### Get information about all SSH Tunnels. - * - * GET /ssh_tunnels -> [SshTunnel] - */ - public func all_ssh_tunnels( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[SshTunnel], SDKError> { - let result: SDKResponse<[SshTunnel], SDKError> = self.get("/ssh_tunnels", - ["fields": fields], nil, options) - return result - } - - /** - * ### Create an SSH Tunnel - * - * POST /ssh_tunnels -> SshTunnel - */ - public func create_ssh_tunnel( - /** - * @param {WriteSshTunnel} body - */ - _ body: WriteSshTunnel, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/ssh_tunnels", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get information about an SSH Tunnel. - * - * GET /ssh_tunnel/{ssh_tunnel_id} -> SshTunnel - */ - public func ssh_tunnel( - /** - * @param {String} ssh_tunnel_id Id of SSH Tunnel - */ - _ ssh_tunnel_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) - let result: SDKResponse = self.get("/ssh_tunnel/\(path_ssh_tunnel_id)", nil, nil, options) - return result - } - - /** - * ### Update an SSH Tunnel - * - * PATCH /ssh_tunnel/{ssh_tunnel_id} -> SshTunnel - */ - public func update_ssh_tunnel( - /** - * @param {String} ssh_tunnel_id Id of SSH Tunnel - */ - _ ssh_tunnel_id: String, - /** - * @param {WriteSshTunnel} body - */ - _ body: WriteSshTunnel, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) - let result: SDKResponse = self.patch("/ssh_tunnel/\(path_ssh_tunnel_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete an SSH Tunnel - * - * DELETE /ssh_tunnel/{ssh_tunnel_id} -> String - */ - public func delete_ssh_tunnel( - /** - * @param {String} ssh_tunnel_id Id of SSH Tunnel - */ - _ ssh_tunnel_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) - let result: SDKResponse = self.delete("/ssh_tunnel/\(path_ssh_tunnel_id)", nil, nil, options) - return result - } - - /** - * ### Test the SSH Tunnel - * - * GET /ssh_tunnel/{ssh_tunnel_id}/test -> SshTunnel - */ - public func test_ssh_tunnel( - /** - * @param {String} ssh_tunnel_id Id of SSH Tunnel - */ - _ ssh_tunnel_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) - let result: SDKResponse = self.get("/ssh_tunnel/\(path_ssh_tunnel_id)/test", nil, nil, options) - return result - } - - /** - * ### Get the SSH public key - * - * Get the public key created for this instance to identify itself to a remote SSH server. - * - * GET /ssh_public_key -> SshPublicKey - */ - public func ssh_public_key( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/ssh_public_key", nil, nil, options) - return result - } - - - - // MARK Content: Manage Content - - /** - * ### Search Favorite Content - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. - * - * GET /content_favorite/search -> [ContentFavorite] - */ - public func search_content_favorites( - /** - * @param {String} id Match content favorite id(s) - */ - id: String? = nil, - /** - * @param {String} user_id Match user id(s).To create a list of multiple ids, use commas as separators - */ - user_id: String? = nil, - /** - * @param {String} content_metadata_id Match content metadata id(s).To create a list of multiple ids, use commas as separators - */ - content_metadata_id: String? = nil, - /** - * @param {String} dashboard_id Match dashboard id(s).To create a list of multiple ids, use commas as separators - */ - dashboard_id: String? = nil, - /** - * @param {String} look_id Match look id(s).To create a list of multiple ids, use commas as separators - */ - look_id: String? = nil, - /** - * @param {String} board_id Match board id(s).To create a list of multiple ids, use commas as separators - */ - board_id: String? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit) - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[ContentFavorite], SDKError> { - let result: SDKResponse<[ContentFavorite], SDKError> = self.get("/content_favorite/search", - ["id": id, "user_id": user_id, "content_metadata_id": content_metadata_id, "dashboard_id": dashboard_id, "look_id": look_id, "board_id": board_id, "limit": limit, "offset": offset, "sorts": sorts, "fields": fields, "filter_or": filter_or as Any?], nil, options) - return result - } - - /** - * ### Get favorite content by its id - * - * GET /content_favorite/{content_favorite_id} -> ContentFavorite - */ - public func content_favorite( - /** - * @param {String} content_favorite_id Id of favorite content - */ - _ content_favorite_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_favorite_id = encodeParam(content_favorite_id) - let result: SDKResponse = self.get("/content_favorite/\(path_content_favorite_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Delete favorite content - * - * DELETE /content_favorite/{content_favorite_id} -> String - */ - public func delete_content_favorite( - /** - * @param {String} content_favorite_id Id of favorite content - */ - _ content_favorite_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_favorite_id = encodeParam(content_favorite_id) - let result: SDKResponse = self.delete("/content_favorite/\(path_content_favorite_id)", nil, nil, options) - return result - } - - /** - * ### Create favorite content - * - * POST /content_favorite -> ContentFavorite - */ - public func create_content_favorite( - /** - * @param {WriteContentFavorite} body - */ - _ body: WriteContentFavorite, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/content_favorite", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get information about all content metadata in a space. - * - * GET /content_metadata -> [ContentMeta] - */ - public func all_content_metadatas( - /** - * @param {String} parent_id Parent space of content. - */ - _ parent_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[ContentMeta], SDKError> { - let result: SDKResponse<[ContentMeta], SDKError> = self.get("/content_metadata", - ["parent_id": parent_id, "fields": fields], nil, options) - return result - } - - /** - * ### Get information about an individual content metadata record. - * - * GET /content_metadata/{content_metadata_id} -> ContentMeta - */ - public func content_metadata( - /** - * @param {String} content_metadata_id Id of content metadata - */ - _ content_metadata_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_metadata_id = encodeParam(content_metadata_id) - let result: SDKResponse = self.get("/content_metadata/\(path_content_metadata_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Move a piece of content. - * - * PATCH /content_metadata/{content_metadata_id} -> ContentMeta - */ - public func update_content_metadata( - /** - * @param {String} content_metadata_id Id of content metadata - */ - _ content_metadata_id: String, - /** - * @param {WriteContentMeta} body - */ - _ body: WriteContentMeta, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_metadata_id = encodeParam(content_metadata_id) - let result: SDKResponse = self.patch("/content_metadata/\(path_content_metadata_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### All content metadata access records for a content metadata item. - * - * GET /content_metadata_access -> [ContentMetaGroupUser] - */ - public func all_content_metadata_accesses( - /** - * @param {String} content_metadata_id Id of content metadata - */ - _ content_metadata_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[ContentMetaGroupUser], SDKError> { - let result: SDKResponse<[ContentMetaGroupUser], SDKError> = self.get("/content_metadata_access", - ["content_metadata_id": content_metadata_id, "fields": fields], nil, options) - return result - } - - /** - * ### Create content metadata access. - * - * POST /content_metadata_access -> ContentMetaGroupUser - */ - public func create_content_metadata_access( - /** - * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH - */ - _ body: ContentMetaGroupUser, - /** - * @param {Bool} send_boards_notification_email Optionally sends notification email when granting access to a board. - */ - send_boards_notification_email: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/content_metadata_access", - ["send_boards_notification_email": send_boards_notification_email as Any?], try! self.encode(body), options) - return result - } - - /** - * ### Update type of access for content metadata. - * - * PUT /content_metadata_access/{content_metadata_access_id} -> ContentMetaGroupUser - */ - public func update_content_metadata_access( - /** - * @param {String} content_metadata_access_id Id of content metadata access - */ - _ content_metadata_access_id: String, - /** - * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH - */ - _ body: ContentMetaGroupUser, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_metadata_access_id = encodeParam(content_metadata_access_id) - let result: SDKResponse = self.put("/content_metadata_access/\(path_content_metadata_access_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Remove content metadata access. - * - * DELETE /content_metadata_access/{content_metadata_access_id} -> String - */ - public func delete_content_metadata_access( - /** - * @param {String} content_metadata_access_id Id of content metadata access - */ - _ content_metadata_access_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_metadata_access_id = encodeParam(content_metadata_access_id) - let result: SDKResponse = self.delete("/content_metadata_access/\(path_content_metadata_access_id)", nil, nil, options) - return result - } - - /** - * ### Search across looks, dashboards, and lookml dashboards. The terms field will be matched against the - * title and description of the content and the closest results are returned. Content that has been frequently - * viewed and those pieces of content stored in public folders will be ranked more highly in the results. - * - * This endpoint does not return a full description of these content types. For more specific information - * about each type please refer to the individual content specific API endpoints. - * - * Get the **full details** of a specific dashboard (or lookml dashboard) by id with [dashboard()](#!/Dashboard/dashboard) - * Get the **full details** of a specific look by id with [look()](#!/Look/look) - * - * GET /content/{terms} -> [ContentSearch] - */ - public func search_content( - /** - * @param {String} terms Search terms - */ - _ terms: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {String} types Content types requested (dashboard, look, lookml_dashboard). - */ - types: String? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, - /** - * @param {Int64} page Requested page. - */ - page: Int64? = nil, - /** - * @param {Int64} per_page Results per page. - */ - per_page: Int64? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[ContentSearch], SDKError> { - let path_terms = encodeParam(terms) - let result: SDKResponse<[ContentSearch], SDKError> = self.get("/content/\(path_terms)", - ["fields": fields, "types": types, "limit": limit, "offset": offset, "page": page, "per_page": per_page], nil, options) - return result - } - - /** - * ### Get an image representing the contents of a dashboard or look. - * - * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not - * reflect the actual data displayed in the respective visualizations. - * - * GET /content_thumbnail/{type}/{resource_id} -> String - * - * **Note**: Binary content may be returned by this method. - */ - public func content_thumbnail( - /** - * @param {String} type Either dashboard or look - */ - _ type: String, - /** - * @param {String} resource_id ID of the dashboard or look to render - */ - _ resource_id: String, - /** - * @param {String} reload Whether or not to refresh the rendered image with the latest content - */ - reload: String? = nil, - /** - * @param {String} theme Light or dark background. Default is "light" - */ - theme: String? = nil, - /** - * @param {String} format A value of png produces a thumbnail in PNG format instead of SVG (default) - */ - format: String? = nil, - /** - * @param {Int64} width The width of the image if format is supplied - */ - width: Int64? = nil, - /** - * @param {Int64} height The height of the image if format is supplied - */ - height: Int64? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_type = encodeParam(type) - let path_resource_id = encodeParam(resource_id) - let result: SDKResponse = self.get("/content_thumbnail/\(path_type)/\(path_resource_id)", - ["reload": reload, "theme": theme, "format": format, "width": width, "height": height], nil, options) - return result - } - - /** - * ### Validate All Content - * - * Performs validation of all looks and dashboards - * Returns a list of errors found as well as metadata about the content validation run. - * - * GET /content_validation -> ContentValidation - */ - public func content_validation( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/content_validation", - ["fields": fields], nil, options) - return result - } - - /** - * ### Search Content Views - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. - * - * GET /content_view/search -> [ContentView] - */ - public func search_content_views( - /** - * @param {String} view_count Match view count - */ - view_count: String? = nil, - /** - * @param {String} group_id Match Group Id - */ - group_id: String? = nil, - /** - * @param {String} look_id Match look_id - */ - look_id: String? = nil, - /** - * @param {String} dashboard_id Match dashboard_id - */ - dashboard_id: String? = nil, - /** - * @param {String} content_metadata_id Match content metadata id - */ - content_metadata_id: String? = nil, - /** - * @param {String} start_of_week_date Match start of week date (format is "YYYY-MM-DD") - */ - start_of_week_date: String? = nil, - /** - * @param {Bool} all_time True if only all time view records should be returned - */ - all_time: Bool? = nil, - /** - * @param {String} user_id Match user id - */ - user_id: String? = nil, - /** - * @param {String} fields Requested fields - */ - fields: String? = nil, - /** - * @param {Int64} limit Number of results to return. Use with `offset` to manage pagination of results - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning data - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by - */ - sorts: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[ContentView], SDKError> { - let result: SDKResponse<[ContentView], SDKError> = self.get("/content_view/search", - ["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 as Any?, "user_id": user_id, "fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) - return result - } - - /** - * ### Get a vector image representing the contents of a dashboard or look. - * - * # DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail) - * - * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not - * reflect the actual data displayed in the respective visualizations. - * - * GET /vector_thumbnail/{type}/{resource_id} -> String - */ - @available(*, deprecated) - public func vector_thumbnail( - /** - * @param {String} type Either dashboard or look - */ - _ type: String, - /** - * @param {String} resource_id ID of the dashboard or look to render - */ - _ resource_id: String, - /** - * @param {String} reload Whether or not to refresh the rendered image with the latest content - */ - reload: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_type = encodeParam(type) - let path_resource_id = encodeParam(resource_id) - let result: SDKResponse = self.get("/vector_thumbnail/\(path_type)/\(path_resource_id)", - ["reload": reload], nil, options) - return result - } - - - - // MARK Dashboard: Manage Dashboards - - /** - * ### Get information about all active dashboards. - * - * Returns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list. - * - * Get the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard) - * - * Find **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards) - * - * GET /dashboards -> [DashboardBase] - */ - public func all_dashboards( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[DashboardBase], SDKError> { - let result: SDKResponse<[DashboardBase], SDKError> = self.get("/dashboards", - ["fields": fields], nil, options) - return result - } - - /** - * ### Create a new dashboard - * - * Creates a new dashboard object and returns the details of the newly created dashboard. - * - * `Title` and `space_id` are required fields. - * `Space_id` must contain the id of an existing space. - * A dashboard's `title` must be unique within the space in which it resides. - * - * If you receive a 422 error response when creating a dashboard, be sure to look at the - * response body for information about exactly which fields are missing or contain invalid data. - * - * You can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard) - * - * You can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard) - * - * POST /dashboards -> Dashboard - */ - public func create_dashboard( - /** - * @param {WriteDashboard} body - */ - _ body: WriteDashboard, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/dashboards", nil, try! self.encode(body), options) - return result - } - - /** - * ### Search Dashboards - * - * Returns an array of **user-defined dashboard** objects that match the specified search criteria. - * Note, [search_dashboards()](#!/Dashboard/search_dashboards) does not return LookML dashboard objects. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. - * - * - * The parameters `limit`, and `offset` are recommended for fetching results in page-size chunks. - * - * Get a **single dashboard** by id with [dashboard()](#!/Dashboard/dashboard) - * - * GET /dashboards/search -> [Dashboard] - */ - public func search_dashboards( - /** - * @param {String} id Match dashboard id. - */ - id: String? = nil, - /** - * @param {String} slug Match dashboard slug. - */ - slug: String? = nil, - /** - * @param {String} title Match Dashboard title. - */ - title: String? = nil, - /** - * @param {String} description Match Dashboard description. - */ - description: String? = nil, - /** - * @param {String} content_favorite_id Filter on a content favorite id. - */ - content_favorite_id: String? = nil, - /** - * @param {String} folder_id Filter on a particular space. - */ - folder_id: String? = nil, - /** - * @param {String} deleted Filter on dashboards deleted status. - */ - deleted: String? = nil, - /** - * @param {String} user_id Filter on dashboards created by a particular user. - */ - user_id: String? = nil, - /** - * @param {String} view_count Filter on a particular value of view_count - */ - view_count: String? = nil, - /** - * @param {String} content_metadata_id Filter on a content favorite id. - */ - content_metadata_id: String? = nil, - /** - * @param {Bool} curate Exclude items that exist only in personal spaces other than the users - */ - curate: Bool? = nil, - /** - * @param {String} last_viewed_at Select dashboards based on when they were last viewed - */ - last_viewed_at: String? = nil, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results - */ - page: Int64? = nil, - /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page - */ - per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, - /** - * @param {String} sorts One or more fields to sort by. Sortable fields: [:title, :user_id, :id, :created_at, :space_id, :folder_id, :description, :view_count, :favorite_count, :slug, :content_favorite_id, :content_metadata_id, :deleted, :deleted_at, :last_viewed_at, :last_accessed_at] - */ - sorts: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, - /** - * @param {Bool} not_owned_by Filter out the dashboards owned by the user passed at the :user_id params - */ - not_owned_by: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[Dashboard], SDKError> { - let result: SDKResponse<[Dashboard], SDKError> = self.get("/dashboards/search", - ["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 as Any?, "last_viewed_at": last_viewed_at, "fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "not_owned_by": not_owned_by as Any?], nil, options) - return result - } - - /** - * ### Import a LookML dashboard to a space as a UDD - * Creates a UDD (a dashboard which exists in the Looker database rather than as a LookML file) from the LookML dashboard - * and places it in the space specified. The created UDD will have a lookml_link_id which links to the original LookML dashboard. - * - * To give the imported dashboard specify a (e.g. title: "my title") in the body of your request, otherwise the imported - * dashboard will have the same title as the original LookML dashboard. - * - * For this operation to succeed the user must have permission to see the LookML dashboard in question, and have permission to - * create content in the space the dashboard is being imported to. - * - * **Sync** a linked UDD with [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard) - * **Unlink** a linked UDD by setting lookml_link_id to null with [update_dashboard()](#!/Dashboard/update_dashboard) - * - * POST /dashboards/{lookml_dashboard_id}/import/{space_id} -> Dashboard - */ - public func import_lookml_dashboard( - /** - * @param {String} lookml_dashboard_id Id of LookML dashboard - */ - _ lookml_dashboard_id: String, - /** - * @param {String} space_id Id of space to import the dashboard to - */ - _ space_id: String, - /** - * @param {WriteDashboard} body - */ - body: WriteDashboard?, - /** - * @param {Bool} raw_locale If true, and this dashboard is localized, export it with the raw keys, not localized. - */ - raw_locale: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.post("/dashboards/\(path_lookml_dashboard_id)/import/\(path_space_id)", - ["raw_locale": raw_locale as Any?], try! self.encode(body), options) - return result - } - - /** - * ### Update all linked dashboards to match the specified LookML dashboard. - * - * Any UDD (a dashboard which exists in the Looker database rather than as a LookML file) which has a `lookml_link_id` - * property value referring to a LookML dashboard's id (model::dashboardname) will be updated so that it matches the current state of the LookML dashboard. - * - * For this operation to succeed the user must have permission to view the LookML dashboard, and only linked dashboards - * that the user has permission to update will be synced. - * - * To **link** or **unlink** a UDD set the `lookml_link_id` property with [update_dashboard()](#!/Dashboard/update_dashboard) - * - * PATCH /dashboards/{lookml_dashboard_id}/sync -> [Int64] - */ - public func sync_lookml_dashboard( - /** - * @param {String} lookml_dashboard_id Id of LookML dashboard, in the form 'model::dashboardname' - */ - _ lookml_dashboard_id: String, - /** - * @param {WriteDashboard} body - */ - _ body: WriteDashboard, - /** - * @param {Bool} raw_locale If true, and this dashboard is localized, export it with the raw keys, not localized. - */ - raw_locale: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[Int64], SDKError> { - let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) - let result: SDKResponse<[Int64], SDKError> = self.patch("/dashboards/\(path_lookml_dashboard_id)/sync", - ["raw_locale": raw_locale as Any?], try! self.encode(body), options) - return result - } - - /** - * ### Get information about a dashboard - * - * Returns the full details of the identified dashboard object - * - * Get a **summary list** of all active dashboards with [all_dashboards()](#!/Dashboard/all_dashboards) - * - * You can **Search** for dashboards with [search_dashboards()](#!/Dashboard/search_dashboards) + * `Title` and `space_id` are required fields. + * `Space_id` must contain the id of an existing space. + * A dashboard's `title` must be unique within the space in which it resides. * - * GET /dashboards/{dashboard_id} -> Dashboard - */ - public func dashboard( - /** - * @param {String} dashboard_id Id of dashboard - */ - _ dashboard_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.get("/dashboards/\(path_dashboard_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update a dashboard + * If you receive a 422 error response when creating a dashboard, be sure to look at the + * response body for information about exactly which fields are missing or contain invalid data. * - * You can use this function to change the string and integer properties of - * a dashboard. Nested objects such as filters, dashboard elements, or dashboard layout components - * cannot be modified by this function - use the update functions for the respective - * nested object types (like [update_dashboard_filter()](#!/3.1/Dashboard/update_dashboard_filter) to change a filter) - * to modify nested objects referenced by a dashboard. + * You can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard) * - * If you receive a 422 error response when updating a dashboard, be sure to look at the - * response body for information about exactly which fields are missing or contain invalid data. + * You can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard) * - * PATCH /dashboards/{dashboard_id} -> Dashboard + * POST /dashboards -> Dashboard */ - public func update_dashboard( - /** - * @param {String} dashboard_id Id of dashboard - */ - _ dashboard_id: String, + public func create_dashboard( /** * @param {WriteDashboard} body */ _ body: WriteDashboard, options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.patch("/dashboards/\(path_dashboard_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete the dashboard with the specified id - * - * Permanently **deletes** a dashboard. (The dashboard cannot be recovered after this operation.) - * - * "Soft" delete or hide a dashboard by setting its `deleted` status to `True` with [update_dashboard()](#!/Dashboard/update_dashboard). - * - * Note: When a dashboard is deleted in the UI, it is soft deleted. Use this API call to permanently remove it, if desired. - * - * DELETE /dashboards/{dashboard_id} -> String - */ - public func delete_dashboard( - /** - * @param {String} dashboard_id Id of dashboard - */ - _ dashboard_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.delete("/dashboards/\(path_dashboard_id)", nil, nil, options) - return result - } - - /** - * ### Get Aggregate Table LookML for Each Query on a Dahboard - * - * Returns a JSON object that contains the dashboard id and Aggregate Table lookml - * - * GET /dashboards/aggregate_table_lookml/{dashboard_id} -> DashboardAggregateTableLookml - */ - public func dashboard_aggregate_table_lookml( - /** - * @param {String} dashboard_id Id of dashboard - */ - _ dashboard_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.get("/dashboards/aggregate_table_lookml/\(path_dashboard_id)", nil, nil, options) - return result - } - - /** - * ### Get lookml of a UDD - * - * Returns a JSON object that contains the dashboard id and the full lookml - * - * GET /dashboards/lookml/{dashboard_id} -> DashboardLookml - */ - public func dashboard_lookml( - /** - * @param {String} dashboard_id Id of dashboard - */ - _ dashboard_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.get("/dashboards/lookml/\(path_dashboard_id)", nil, nil, options) - return result - } - - /** - * ### Move an existing dashboard - * - * Moves a dashboard to a specified folder, and returns the moved dashboard. - * - * `dashboard_id` and `folder_id` are required. - * `dashboard_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard. - * - * PATCH /dashboards/{dashboard_id}/move -> Dashboard - */ - public func move_dashboard( - /** - * @param {String} dashboard_id Dashboard id to move. - */ - _ dashboard_id: String, - /** - * @param {String} folder_id Folder id to move to. - */ - _ folder_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.patch("/dashboards/\(path_dashboard_id)/move", - ["folder_id": folder_id], nil, options) - return result - } - - /** - * ### Creates a dashboard object based on LookML Dashboard YAML, and returns the details of the newly created dashboard. - * - * If a dashboard exists with the YAML-defined "preferred_slug", the new dashboard will overwrite it. Otherwise, a new - * dashboard will be created. Note that when a dashboard is overwritten, alerts will not be maintained. - * - * If a folder_id is specified: new dashboards will be placed in that folder, and overwritten dashboards will be moved to it - * If the folder_id isn't specified: new dashboards will be placed in the caller's personal folder, and overwritten dashboards - * will remain where they were - * - * LookML must contain valid LookML YAML code. It's recommended to use the LookML format returned - * from [dashboard_lookml()](#!/Dashboard/dashboard_lookml) as the input LookML (newlines replaced with - * ). - * - * Note that the created dashboard is not linked to any LookML Dashboard, - * i.e. [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard) will not update dashboards created by this method. - * - * POST /dashboards/lookml -> Dashboard - */ - public func import_dashboard_from_lookml( - /** - * @param {WriteDashboardLookml} body - */ - _ body: WriteDashboardLookml, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/dashboards/lookml", nil, try! self.encode(body), options) - return result - } - - /** - * # DEPRECATED: Use [import_dashboard_from_lookml()](#!/Dashboard/import_dashboard_from_lookml) - * - * POST /dashboards/from_lookml -> Dashboard - */ - public func create_dashboard_from_lookml( - /** - * @param {WriteDashboardLookml} body - */ - _ body: WriteDashboardLookml, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/dashboards/from_lookml", nil, try! self.encode(body), options) - return result - } - - /** - * ### Copy an existing dashboard - * - * Creates a copy of an existing dashboard, in a specified folder, and returns the copied dashboard. - * - * `dashboard_id` is required, `dashboard_id` and `folder_id` must already exist if specified. - * `folder_id` will default to the existing folder. - * - * If a dashboard with the same title already exists in the target folder, the copy will have '(copy)' - * or '(copy <# of copies>)' appended. - * - * POST /dashboards/{dashboard_id}/copy -> Dashboard - */ - public func copy_dashboard( - /** - * @param {String} dashboard_id Dashboard id to copy. - */ - _ dashboard_id: String, - /** - * @param {String} folder_id Folder id to copy to. - */ - folder_id: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.post("/dashboards/\(path_dashboard_id)/copy", - ["folder_id": folder_id], nil, options) + let result: SDKResponse = self.post("/dashboards", nil, try! self.encode(body), options) return result } /** - * ### Search Dashboard Elements + * ### Search Dashboards * - * Returns an **array of DashboardElement objects** that match the specified search criteria. + * Returns an array of **user-defined dashboard** objects that match the specified search criteria. + * Note, [search_dashboards()](#!/Dashboard/search_dashboards) does not return LookML dashboard objects. * * If multiple search params are given and `filter_or` is FALSE or not specified, * search params are combined in a logical AND operation. @@ -4504,405 +2096,177 @@ open class LookerSDK: APIMethods { * * Boolean search params accept only "true" and "false" as values. * - * GET /dashboard_elements/search -> [DashboardElement] - */ - public func search_dashboard_elements( - /** - * @param {String} dashboard_id Select elements that refer to a given dashboard id - */ - dashboard_id: String? = nil, - /** - * @param {String} look_id Select elements that refer to a given look id - */ - look_id: String? = nil, - /** - * @param {String} title Match the title of element - */ - title: String? = nil, - /** - * @param {Bool} deleted Select soft-deleted dashboard elements - */ - deleted: Bool? = nil, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, - /** - * @param {String} sorts Fields to sort by. Sortable fields: [:look_id, :dashboard_id, :deleted, :title] - */ - sorts: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[DashboardElement], SDKError> { - let result: SDKResponse<[DashboardElement], SDKError> = self.get("/dashboard_elements/search", - ["dashboard_id": dashboard_id, "look_id": look_id, "title": title, "deleted": deleted as Any?, "fields": fields, "filter_or": filter_or as Any?, "sorts": sorts], nil, options) - return result - } - - /** - * ### Get information about the dashboard element with a specific id. - * - * GET /dashboard_elements/{dashboard_element_id} -> DashboardElement - */ - public func dashboard_element( - /** - * @param {String} dashboard_element_id Id of dashboard element - */ - _ dashboard_element_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_element_id = encodeParam(dashboard_element_id) - let result: SDKResponse = self.get("/dashboard_elements/\(path_dashboard_element_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update the dashboard element with a specific id. - * - * PATCH /dashboard_elements/{dashboard_element_id} -> DashboardElement - */ - public func update_dashboard_element( - /** - * @param {String} dashboard_element_id Id of dashboard element - */ - _ dashboard_element_id: String, - /** - * @param {WriteDashboardElement} body - */ - _ body: WriteDashboardElement, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_element_id = encodeParam(dashboard_element_id) - let result: SDKResponse = self.patch("/dashboard_elements/\(path_dashboard_element_id)", - ["fields": fields], try! self.encode(body), options) - return result - } - - /** - * ### Delete a dashboard element with a specific id. * - * DELETE /dashboard_elements/{dashboard_element_id} -> String - */ - public func delete_dashboard_element( - /** - * @param {String} dashboard_element_id Id of dashboard element - */ - _ dashboard_element_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_element_id = encodeParam(dashboard_element_id) - let result: SDKResponse = self.delete("/dashboard_elements/\(path_dashboard_element_id)", nil, nil, options) - return result - } - - /** - * ### Get information about all the dashboard elements on a dashboard with a specific id. + * The parameters `limit`, and `offset` are recommended for fetching results in page-size chunks. * - * GET /dashboards/{dashboard_id}/dashboard_elements -> [DashboardElement] - */ - public func dashboard_dashboard_elements( - /** - * @param {String} dashboard_id Id of dashboard - */ - _ dashboard_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[DashboardElement], SDKError> { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse<[DashboardElement], SDKError> = self.get("/dashboards/\(path_dashboard_id)/dashboard_elements", - ["fields": fields], nil, options) - return result - } - - /** - * ### Create a dashboard element on the dashboard with a specific id. + * Get a **single dashboard** by id with [dashboard()](#!/Dashboard/dashboard) * - * POST /dashboard_elements -> DashboardElement + * GET /dashboards/search -> [Dashboard] */ - public func create_dashboard_element( - /** - * @param {WriteDashboardElement} body - */ - _ body: WriteDashboardElement, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func search_dashboards( /** - * @param {Bool} apply_filters Apply relevant filters on dashboard to this tile + * @param {Int64} id Match dashboard id. */ - apply_filters: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/dashboard_elements", - ["fields": fields, "apply_filters": apply_filters as Any?], try! self.encode(body), options) - return result - } - - /** - * ### Get information about the dashboard filters with a specific id. - * - * GET /dashboard_filters/{dashboard_filter_id} -> DashboardFilter - */ - public func dashboard_filter( + id: Int64? = nil, /** - * @param {String} dashboard_filter_id Id of dashboard filters + * @param {String} slug Match dashboard slug. */ - _ dashboard_filter_id: String, + slug: String? = nil, /** - * @param {String} fields Requested fields. + * @param {String} title Match Dashboard title. */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_filter_id = encodeParam(dashboard_filter_id) - let result: SDKResponse = self.get("/dashboard_filters/\(path_dashboard_filter_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update the dashboard filter with a specific id. - * - * PATCH /dashboard_filters/{dashboard_filter_id} -> DashboardFilter - */ - public func update_dashboard_filter( + title: String? = nil, /** - * @param {String} dashboard_filter_id Id of dashboard filter + * @param {String} description Match Dashboard description. */ - _ dashboard_filter_id: String, + description: String? = nil, /** - * @param {WriteDashboardFilter} body + * @param {Int64} content_favorite_id Filter on a content favorite id. */ - _ body: WriteDashboardFilter, + content_favorite_id: Int64? = nil, /** - * @param {String} fields Requested fields. + * @param {String} space_id Filter on a particular space. */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_filter_id = encodeParam(dashboard_filter_id) - let result: SDKResponse = self.patch("/dashboard_filters/\(path_dashboard_filter_id)", - ["fields": fields], try! self.encode(body), options) - return result - } - - /** - * ### Delete a dashboard filter with a specific id. - * - * DELETE /dashboard_filters/{dashboard_filter_id} -> String - */ - public func delete_dashboard_filter( + space_id: String? = nil, /** - * @param {String} dashboard_filter_id Id of dashboard filter + * @param {String} folder_id Filter on a particular space. */ - _ dashboard_filter_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_filter_id = encodeParam(dashboard_filter_id) - let result: SDKResponse = self.delete("/dashboard_filters/\(path_dashboard_filter_id)", nil, nil, options) - return result - } - - /** - * ### Get information about all the dashboard filters on a dashboard with a specific id. - * - * GET /dashboards/{dashboard_id}/dashboard_filters -> [DashboardFilter] - */ - public func dashboard_dashboard_filters( + folder_id: String? = nil, /** - * @param {String} dashboard_id Id of dashboard + * @param {String} deleted Filter on dashboards deleted status. */ - _ dashboard_id: String, + deleted: String? = nil, /** - * @param {String} fields Requested fields. + * @param {String} user_id Filter on dashboards created by a particular user. */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[DashboardFilter], SDKError> { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse<[DashboardFilter], SDKError> = self.get("/dashboards/\(path_dashboard_id)/dashboard_filters", - ["fields": fields], nil, options) - return result - } - - /** - * ### Create a dashboard filter on the dashboard with a specific id. - * - * POST /dashboard_filters -> DashboardFilter - */ - public func create_dashboard_filter( + user_id: String? = nil, /** - * @param {WriteCreateDashboardFilter} body + * @param {String} view_count Filter on a particular value of view_count */ - _ body: WriteCreateDashboardFilter, + view_count: String? = nil, /** - * @param {String} fields Requested fields + * @param {Int64} content_metadata_id Filter on a content favorite id. */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/dashboard_filters", - ["fields": fields], try! self.encode(body), options) - return result - } - - /** - * ### Get information about the dashboard elements with a specific id. - * - * GET /dashboard_layout_components/{dashboard_layout_component_id} -> DashboardLayoutComponent - */ - public func dashboard_layout_component( + content_metadata_id: Int64? = nil, /** - * @param {String} dashboard_layout_component_id Id of dashboard layout component + * @param {Bool} curate Exclude items that exist only in personal spaces other than the users */ - _ dashboard_layout_component_id: String, + curate: Bool? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_layout_component_id = encodeParam(dashboard_layout_component_id) - let result: SDKResponse = self.get("/dashboard_layout_components/\(path_dashboard_layout_component_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update the dashboard element with a specific id. - * - * PATCH /dashboard_layout_components/{dashboard_layout_component_id} -> DashboardLayoutComponent - */ - public func update_dashboard_layout_component( /** - * @param {String} dashboard_layout_component_id Id of dashboard layout component + * @param {Int64} page Requested page. */ - _ dashboard_layout_component_id: String, + page: Int64? = nil, /** - * @param {WriteDashboardLayoutComponent} body + * @param {Int64} per_page Results per page. */ - _ body: WriteDashboardLayoutComponent, + per_page: Int64? = nil, /** - * @param {String} fields Requested fields. + * @param {String} sorts One or more fields to sort by. Sortable fields: [:title, :user_id, :id, :created_at, :space_id, :folder_id, :description, :view_count, :favorite_count, :slug, :content_favorite_id, :content_metadata_id, :deleted, :deleted_at, :last_viewed_at, :last_accessed_at] */ - fields: String? = nil, + sorts: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_layout_component_id = encodeParam(dashboard_layout_component_id) - let result: SDKResponse = self.patch("/dashboard_layout_components/\(path_dashboard_layout_component_id)", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse<[Dashboard], SDKError> { + let result: SDKResponse<[Dashboard], SDKError> = self.get("/dashboards/search", + ["id": id, "slug": slug, "title": title, "description": description, "content_favorite_id": content_favorite_id, "space_id": space_id, "folder_id": folder_id, "deleted": deleted, "user_id": user_id, "view_count": view_count, "content_metadata_id": content_metadata_id, "curate": curate as Any?, "fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) return result } /** - * ### Get information about all the dashboard layout components for a dashboard layout with a specific id. + * ### Import a LookML dashboard to a space as a UDD + * Creates a UDD (a dashboard which exists in the Looker database rather than as a LookML file) from the LookML dashboard + * and places it in the space specified. The created UDD will have a lookml_link_id which links to the original LookML dashboard. * - * GET /dashboard_layouts/{dashboard_layout_id}/dashboard_layout_components -> [DashboardLayoutComponent] + * To give the imported dashboard specify a (e.g. title: "my title") in the body of your request, otherwise the imported + * dashboard will have the same title as the original LookML dashboard. + * + * For this operation to succeed the user must have permission to see the LookML dashboard in question, and have permission to + * create content in the space the dashboard is being imported to. + * + * **Sync** a linked UDD with [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard) + * **Unlink** a linked UDD by setting lookml_link_id to null with [update_dashboard()](#!/Dashboard/update_dashboard) + * + * POST /dashboards/{lookml_dashboard_id}/import/{space_id} -> Dashboard */ - public func dashboard_layout_dashboard_layout_components( + public func import_lookml_dashboard( /** - * @param {String} dashboard_layout_id Id of dashboard layout component + * @param {String} lookml_dashboard_id Id of LookML dashboard */ - _ dashboard_layout_id: String, + _ lookml_dashboard_id: String, /** - * @param {String} fields Requested fields. + * @param {String} space_id Id of space to import the dashboard to */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[DashboardLayoutComponent], SDKError> { - let path_dashboard_layout_id = encodeParam(dashboard_layout_id) - let result: SDKResponse<[DashboardLayoutComponent], SDKError> = self.get("/dashboard_layouts/\(path_dashboard_layout_id)/dashboard_layout_components", - ["fields": fields], nil, options) - return result - } - - /** - * ### Get information about the dashboard layouts with a specific id. - * - * GET /dashboard_layouts/{dashboard_layout_id} -> DashboardLayout - */ - public func dashboard_layout( + _ space_id: String, /** - * @param {String} dashboard_layout_id Id of dashboard layouts + * @param {WriteDashboard} body */ - _ dashboard_layout_id: String, + body: WriteDashboard?, /** - * @param {String} fields Requested fields. + * @param {Bool} raw_locale If true, and this dashboard is localized, export it with the raw keys, not localized. */ - fields: String? = nil, + raw_locale: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_layout_id = encodeParam(dashboard_layout_id) - let result: SDKResponse = self.get("/dashboard_layouts/\(path_dashboard_layout_id)", - ["fields": fields], nil, options) + ) -> SDKResponse { + let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.post("/dashboards/\(path_lookml_dashboard_id)/import/\(path_space_id)", + ["raw_locale": raw_locale as Any?], try! self.encode(body), options) return result } /** - * ### Update the dashboard layout with a specific id. + * ### Update all linked dashboards to match the specified LookML dashboard. * - * PATCH /dashboard_layouts/{dashboard_layout_id} -> DashboardLayout + * Any UDD (a dashboard which exists in the Looker database rather than as a LookML file) which has a `lookml_link_id` + * property value referring to a LookML dashboard's id (model::dashboardname) will be updated so that it matches the current state of the LookML dashboard. + * + * For this operation to succeed the user must have permission to view the LookML dashboard, and only linked dashboards + * that the user has permission to update will be synced. + * + * To **link** or **unlink** a UDD set the `lookml_link_id` property with [update_dashboard()](#!/Dashboard/update_dashboard) + * + * PATCH /dashboards/{lookml_dashboard_id}/sync -> [Int64] */ - public func update_dashboard_layout( + public func sync_lookml_dashboard( /** - * @param {String} dashboard_layout_id Id of dashboard layout + * @param {String} lookml_dashboard_id Id of LookML dashboard, in the form 'model::dashboardname' */ - _ dashboard_layout_id: String, + _ lookml_dashboard_id: String, /** - * @param {WriteDashboardLayout} body + * @param {WriteDashboard} body */ - _ body: WriteDashboardLayout, + _ body: WriteDashboard, /** - * @param {String} fields Requested fields. + * @param {Bool} raw_locale If true, and this dashboard is localized, export it with the raw keys, not localized. */ - fields: String? = nil, + raw_locale: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_layout_id = encodeParam(dashboard_layout_id) - let result: SDKResponse = self.patch("/dashboard_layouts/\(path_dashboard_layout_id)", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse<[Int64], SDKError> { + let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) + let result: SDKResponse<[Int64], SDKError> = self.patch("/dashboards/\(path_lookml_dashboard_id)/sync", + ["raw_locale": raw_locale as Any?], try! self.encode(body), options) return result } /** - * ### Delete a dashboard layout with a specific id. + * ### Get information about a dashboard * - * DELETE /dashboard_layouts/{dashboard_layout_id} -> String - */ - public func delete_dashboard_layout( - /** - * @param {String} dashboard_layout_id Id of dashboard layout - */ - _ dashboard_layout_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_layout_id = encodeParam(dashboard_layout_id) - let result: SDKResponse = self.delete("/dashboard_layouts/\(path_dashboard_layout_id)", nil, nil, options) - return result - } - - /** - * ### Get information about all the dashboard elements on a dashboard with a specific id. + * Returns the full details of the identified dashboard object * - * GET /dashboards/{dashboard_id}/dashboard_layouts -> [DashboardLayout] + * Get a **summary list** of all active dashboards with [all_dashboards()](#!/Dashboard/all_dashboards) + * + * You can **Search** for dashboards with [search_dashboards()](#!/Dashboard/search_dashboards) + * + * GET /dashboards/{dashboard_id} -> Dashboard */ - public func dashboard_dashboard_layouts( + public func dashboard( /** * @param {String} dashboard_id Id of dashboard */ @@ -4912,857 +2276,818 @@ open class LookerSDK: APIMethods { */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[DashboardLayout], SDKError> { + ) -> SDKResponse { let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse<[DashboardLayout], SDKError> = self.get("/dashboards/\(path_dashboard_id)/dashboard_layouts", + let result: SDKResponse = self.get("/dashboards/\(path_dashboard_id)", ["fields": fields], nil, options) return result } /** - * ### Create a dashboard layout on the dashboard with a specific id. + * ### Update a dashboard * - * POST /dashboard_layouts -> DashboardLayout + * You can use this function to change the string and integer properties of + * a dashboard. Nested objects such as filters, dashboard elements, or dashboard layout components + * cannot be modified by this function - use the update functions for the respective + * nested object types (like [update_dashboard_filter()](#!/3.1/Dashboard/update_dashboard_filter) to change a filter) + * to modify nested objects referenced by a dashboard. + * + * If you receive a 422 error response when updating a dashboard, be sure to look at the + * response body for information about exactly which fields are missing or contain invalid data. + * + * PATCH /dashboards/{dashboard_id} -> Dashboard */ - public func create_dashboard_layout( + public func update_dashboard( /** - * @param {WriteDashboardLayout} body + * @param {String} dashboard_id Id of dashboard */ - _ body: WriteDashboardLayout, + _ dashboard_id: String, /** - * @param {String} fields Requested fields. + * @param {WriteDashboard} body */ - fields: String? = nil, + _ body: WriteDashboard, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/dashboard_layouts", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse { + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.patch("/dashboards/\(path_dashboard_id)", nil, try! self.encode(body), options) return result } - - - // MARK 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. + * ### Delete the dashboard with the specified id * - * POST /data_actions -> DataActionResponse + * Permanently **deletes** a dashboard. (The dashboard cannot be recovered after this operation.) + * + * "Soft" delete or hide a dashboard by setting its `deleted` status to `True` with [update_dashboard()](#!/Dashboard/update_dashboard). + * + * Note: When a dashboard is deleted in the UI, it is soft deleted. Use this API call to permanently remove it, if desired. + * + * DELETE /dashboards/{dashboard_id} -> String */ - public func perform_data_action( + public func delete_dashboard( /** - * @param {DataActionRequest} body + * @param {String} dashboard_id Id of dashboard */ - _ body: DataActionRequest, + _ dashboard_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/data_actions", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.delete("/dashboards/\(path_dashboard_id)", nil, nil, options) return result } /** - * For some data actions, the remote server may supply a form requesting further user input. This endpoint takes a data action, asks the remote server to generate a form for it, and returns that form to you for presentation to the user. + * ### Get Aggregate Table LookML for Each Query on a Dahboard * - * POST /data_actions/form -> DataActionForm + * Returns a JSON object that contains the dashboard id and Aggregate Table lookml + * + * GET /dashboards/aggregate_table_lookml/{dashboard_id} -> DashboardAggregateTableLookml */ - public func fetch_remote_data_action_form( + public func dashboard_aggregate_table_lookml( /** - * @param {StringDictionary} body + * @param {String} dashboard_id Id of dashboard */ - _ body: StringDictionary, + _ dashboard_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/data_actions/form", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.get("/dashboards/aggregate_table_lookml/\(path_dashboard_id)", nil, nil, options) return result } - - - // MARK Datagroup: Manage Datagroups - /** - * ### Get information about all datagroups. + * ### Get lookml of a UDD * - * GET /datagroups -> [Datagroup] - */ - public func all_datagroups( - options: ITransportSettings? = nil - ) -> SDKResponse<[Datagroup], SDKError> { - let result: SDKResponse<[Datagroup], SDKError> = self.get("/datagroups", nil, nil, options) - return result - } - - /** - * ### Get information about a datagroup. + * Returns a JSON object that contains the dashboard id and the full lookml * - * GET /datagroups/{datagroup_id} -> Datagroup + * GET /dashboards/lookml/{dashboard_id} -> DashboardLookml */ - public func datagroup( + public func dashboard_lookml( /** - * @param {String} datagroup_id ID of datagroup. + * @param {String} dashboard_id Id of dashboard */ - _ datagroup_id: String, + _ dashboard_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_datagroup_id = encodeParam(datagroup_id) - let result: SDKResponse = self.get("/datagroups/\(path_datagroup_id)", nil, nil, options) + ) -> SDKResponse { + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.get("/dashboards/lookml/\(path_dashboard_id)", nil, nil, options) return result } /** - * ### Update a datagroup using the specified params. + * ### Search Dashboard Elements * - * PATCH /datagroups/{datagroup_id} -> Datagroup + * Returns an **array of DashboardElement objects** that match the specified search criteria. + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /dashboard_elements/search -> [DashboardElement] */ - public func update_datagroup( + public func search_dashboard_elements( /** - * @param {String} datagroup_id ID of datagroup. + * @param {Int64} dashboard_id Select elements that refer to a given dashboard id */ - _ datagroup_id: String, + dashboard_id: Int64? = nil, /** - * @param {WriteDatagroup} body + * @param {Int64} look_id Select elements that refer to a given look id */ - _ body: WriteDatagroup, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_datagroup_id = encodeParam(datagroup_id) - let result: SDKResponse = self.patch("/datagroups/\(path_datagroup_id)", nil, try! self.encode(body), options) - return result - } - - - - // MARK DerivedTable: View Derived Table graphs - - /** - * ### Discover information about derived tables - * - * GET /derived_table/graph/model/{model} -> DependencyGraph - */ - public func graph_derived_tables_for_model( + look_id: Int64? = nil, /** - * @param {String} model The name of the Lookml model. + * @param {String} title Match the title of element */ - _ model: String, + title: String? = nil, /** - * @param {String} format The format of the graph. Valid values are [dot]. Default is `dot` + * @param {Bool} deleted Select soft-deleted dashboard elements */ - format: String? = nil, + deleted: Bool? = nil, /** - * @param {String} color Color denoting the build status of the graph. Grey = not built, green = built, yellow = building, red = error. + * @param {String} fields Requested fields. */ - color: String? = nil, + fields: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + /** + * @param {String} sorts Fields to sort by. Sortable fields: [:look_id, :dashboard_id, :deleted, :title] + */ + sorts: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_model = encodeParam(model) - let result: SDKResponse = self.get("/derived_table/graph/model/\(path_model)", - ["format": format, "color": color], nil, options) + ) -> SDKResponse<[DashboardElement], SDKError> { + let result: SDKResponse<[DashboardElement], SDKError> = self.get("/dashboard_elements/search", + ["dashboard_id": dashboard_id, "look_id": look_id, "title": title, "deleted": deleted as Any?, "fields": fields, "filter_or": filter_or as Any?, "sorts": sorts], nil, options) return result } /** - * ### Get the subgraph representing this derived table and its dependencies. + * ### Get information about the dashboard element with a specific id. * - * GET /derived_table/graph/view/{view} -> DependencyGraph + * GET /dashboard_elements/{dashboard_element_id} -> DashboardElement */ - public func graph_derived_tables_for_view( - /** - * @param {String} view The derived table's view name. - */ - _ view: String, + public func dashboard_element( /** - * @param {String} models The models where this derived table is defined. + * @param {String} dashboard_element_id Id of dashboard element */ - models: String? = nil, + _ dashboard_element_id: String, /** - * @param {String} workspace The model directory to look in, either `dev` or `production`. + * @param {String} fields Requested fields. */ - workspace: String? = nil, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_view = encodeParam(view) - let result: SDKResponse = self.get("/derived_table/graph/view/\(path_view)", - ["models": models, "workspace": workspace], nil, options) + ) -> SDKResponse { + let path_dashboard_element_id = encodeParam(dashboard_element_id) + let result: SDKResponse = self.get("/dashboard_elements/\(path_dashboard_element_id)", + ["fields": fields], nil, options) return result } /** - * Enqueue materialization for a PDT with the given model name and view name + * ### Update the dashboard element with a specific id. * - * GET /derived_table/{model_name}/{view_name}/start -> MaterializePDT + * PATCH /dashboard_elements/{dashboard_element_id} -> DashboardElement */ - public func start_pdt_build( - /** - * @param {String} model_name The model of the PDT to start building. - */ - _ model_name: String, - /** - * @param {String} view_name The view name of the PDT to start building. - */ - _ view_name: String, - /** - * @param {String} force_rebuild Force rebuild of required dependent PDTs, even if they are already materialized. - */ - force_rebuild: String? = nil, + public func update_dashboard_element( /** - * @param {String} force_full_incremental Force involved incremental PDTs to fully re-materialize. + * @param {String} dashboard_element_id Id of dashboard element */ - force_full_incremental: String? = nil, + _ dashboard_element_id: String, /** - * @param {String} workspace Workspace in which to materialize selected PDT ('dev' or default 'production'). + * @param {WriteDashboardElement} body */ - workspace: String? = nil, + _ body: WriteDashboardElement, /** - * @param {String} source The source of this request. + * @param {String} fields Requested fields. */ - source: String? = nil, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_model_name = encodeParam(model_name) - let path_view_name = encodeParam(view_name) - let result: SDKResponse = self.get("/derived_table/\(path_model_name)/\(path_view_name)/start", - ["force_rebuild": force_rebuild, "force_full_incremental": force_full_incremental, "workspace": workspace, "source": source], nil, options) + ) -> SDKResponse { + let path_dashboard_element_id = encodeParam(dashboard_element_id) + let result: SDKResponse = self.patch("/dashboard_elements/\(path_dashboard_element_id)", + ["fields": fields], try! self.encode(body), options) return result } /** - * Check status of PDT materialization + * ### Delete a dashboard element with a specific id. * - * GET /derived_table/{materialization_id}/status -> MaterializePDT + * DELETE /dashboard_elements/{dashboard_element_id} -> String */ - public func check_pdt_build( + public func delete_dashboard_element( /** - * @param {String} materialization_id The materialization id to check status for. + * @param {String} dashboard_element_id Id of dashboard element */ - _ materialization_id: String, + _ dashboard_element_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_materialization_id = encodeParam(materialization_id) - let result: SDKResponse = self.get("/derived_table/\(path_materialization_id)/status", nil, nil, options) + ) -> SDKResponse { + let path_dashboard_element_id = encodeParam(dashboard_element_id) + let result: SDKResponse = self.delete("/dashboard_elements/\(path_dashboard_element_id)", nil, nil, options) return result } /** - * Stop a PDT materialization + * ### Get information about all the dashboard elements on a dashboard with a specific id. * - * GET /derived_table/{materialization_id}/stop -> MaterializePDT + * GET /dashboards/{dashboard_id}/dashboard_elements -> [DashboardElement] */ - public func stop_pdt_build( + public func dashboard_dashboard_elements( /** - * @param {String} materialization_id The materialization id to stop. + * @param {String} dashboard_id Id of dashboard */ - _ materialization_id: String, + _ dashboard_id: String, /** - * @param {String} source The source of this request. + * @param {String} fields Requested fields. */ - source: String? = nil, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_materialization_id = encodeParam(materialization_id) - let result: SDKResponse = self.get("/derived_table/\(path_materialization_id)/stop", - ["source": source], nil, options) + ) -> SDKResponse<[DashboardElement], SDKError> { + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse<[DashboardElement], SDKError> = self.get("/dashboards/\(path_dashboard_id)/dashboard_elements", + ["fields": fields], nil, options) return result } - - - // MARK Folder: Manage Folders - /** - * Search for folders by creator id, parent id, name, etc + * ### Create a dashboard element on the dashboard with a specific id. * - * GET /folders/search -> [Folder] + * POST /dashboard_elements -> DashboardElement */ - public func search_folders( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results - */ - page: Int64? = nil, - /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page - */ - per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {String} name Match Space title. - */ - name: String? = nil, - /** - * @param {String} id Match Space id - */ - id: String? = nil, - /** - * @param {String} parent_id Filter on a children of a particular folder. - */ - parent_id: String? = nil, - /** - * @param {String} creator_id Filter on folder created by a particular user. - */ - creator_id: String? = nil, + public func create_dashboard_element( /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {WriteDashboardElement} body */ - filter_or: Bool? = nil, + _ body: WriteDashboardElement, /** - * @param {Bool} is_shared_root Match is shared root + * @param {String} fields Requested fields. */ - is_shared_root: Bool? = nil, + fields: String? = nil, /** - * @param {Bool} is_users_root Match is users root + * @param {Bool} apply_filters Apply relevant filters on dashboard to this tile */ - is_users_root: Bool? = nil, + apply_filters: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Folder], SDKError> { - let result: SDKResponse<[Folder], SDKError> = self.get("/folders/search", - ["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 as Any?, "is_shared_root": is_shared_root as Any?, "is_users_root": is_users_root as Any?], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/dashboard_elements", + ["fields": fields, "apply_filters": apply_filters as Any?], try! self.encode(body), options) return result } /** - * ### Get information about the folder with a specific id. + * ### Get information about the dashboard filters with a specific id. * - * GET /folders/{folder_id} -> Folder + * GET /dashboard_filters/{dashboard_filter_id} -> DashboardFilter */ - public func folder( + public func dashboard_filter( /** - * @param {String} folder_id Id of folder + * @param {String} dashboard_filter_id Id of dashboard filters */ - _ folder_id: String, + _ dashboard_filter_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.get("/folders/\(path_folder_id)", + ) -> SDKResponse { + let path_dashboard_filter_id = encodeParam(dashboard_filter_id) + let result: SDKResponse = self.get("/dashboard_filters/\(path_dashboard_filter_id)", ["fields": fields], nil, options) return result } /** - * ### Update the folder with a specific id. + * ### Update the dashboard filter with a specific id. * - * PATCH /folders/{folder_id} -> Folder + * PATCH /dashboard_filters/{dashboard_filter_id} -> DashboardFilter */ - public func update_folder( + public func update_dashboard_filter( /** - * @param {String} folder_id Id of folder + * @param {String} dashboard_filter_id Id of dashboard filter */ - _ folder_id: String, + _ dashboard_filter_id: String, /** - * @param {UpdateFolder} body + * @param {WriteDashboardFilter} body */ - _ body: UpdateFolder, + _ body: WriteDashboardFilter, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.patch("/folders/\(path_folder_id)", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_dashboard_filter_id = encodeParam(dashboard_filter_id) + let result: SDKResponse = self.patch("/dashboard_filters/\(path_dashboard_filter_id)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Delete the folder with a specific id including any children folders. - * **DANGER** this will delete all looks and dashboards in the folder. + * ### Delete a dashboard filter with a specific id. * - * DELETE /folders/{folder_id} -> String + * DELETE /dashboard_filters/{dashboard_filter_id} -> String */ - public func delete_folder( + public func delete_dashboard_filter( /** - * @param {String} folder_id Id of folder + * @param {String} dashboard_filter_id Id of dashboard filter */ - _ folder_id: String, + _ dashboard_filter_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.delete("/folders/\(path_folder_id)", nil, nil, options) + let path_dashboard_filter_id = encodeParam(dashboard_filter_id) + let result: SDKResponse = self.delete("/dashboard_filters/\(path_dashboard_filter_id)", nil, nil, options) return result } /** - * ### Get information about all folders. - * - * In API 3.x, this will not return empty personal folders, unless they belong to the calling user, - * or if they contain soft-deleted content. - * - * In API 4.0+, all personal folders will be returned. + * ### Get information about all the dashboard filters on a dashboard with a specific id. * - * GET /folders -> [Folder] + * GET /dashboards/{dashboard_id}/dashboard_filters -> [DashboardFilter] */ - public func all_folders( + public func dashboard_dashboard_filters( + /** + * @param {String} dashboard_id Id of dashboard + */ + _ dashboard_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Folder], SDKError> { - let result: SDKResponse<[Folder], SDKError> = self.get("/folders", + ) -> SDKResponse<[DashboardFilter], SDKError> { + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse<[DashboardFilter], SDKError> = self.get("/dashboards/\(path_dashboard_id)/dashboard_filters", ["fields": fields], nil, options) return result } /** - * ### Create a folder with specified information. - * - * Caller must have permission to edit the parent folder and to create folders, otherwise the request - * returns 404 Not Found. + * ### Create a dashboard filter on the dashboard with a specific id. * - * POST /folders -> Folder + * POST /dashboard_filters -> DashboardFilter */ - public func create_folder( + public func create_dashboard_filter( /** - * @param {CreateFolder} body + * @param {WriteCreateDashboardFilter} body */ - _ body: CreateFolder, + _ body: WriteCreateDashboardFilter, + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/folders", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/dashboard_filters", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Get the children of a folder. + * ### Get information about the dashboard elements with a specific id. * - * GET /folders/{folder_id}/children -> [Folder] + * GET /dashboard_layout_components/{dashboard_layout_component_id} -> DashboardLayoutComponent */ - public func folder_children( + public func dashboard_layout_component( /** - * @param {String} folder_id Id of folder + * @param {String} dashboard_layout_component_id Id of dashboard layout component */ - _ folder_id: String, + _ dashboard_layout_component_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_dashboard_layout_component_id = encodeParam(dashboard_layout_component_id) + let result: SDKResponse = self.get("/dashboard_layout_components/\(path_dashboard_layout_component_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update the dashboard element with a specific id. + * + * PATCH /dashboard_layout_components/{dashboard_layout_component_id} -> DashboardLayoutComponent + */ + public func update_dashboard_layout_component( /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + * @param {String} dashboard_layout_component_id Id of dashboard layout component */ - page: Int64? = nil, + _ dashboard_layout_component_id: String, /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {WriteDashboardLayoutComponent} body */ - per_page: Int64? = nil, + _ body: WriteDashboardLayoutComponent, /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + * @param {String} fields Requested fields. */ - limit: Int64? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_dashboard_layout_component_id = encodeParam(dashboard_layout_component_id) + let result: SDKResponse = self.patch("/dashboard_layout_components/\(path_dashboard_layout_component_id)", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Get information about all the dashboard layout components for a dashboard layout with a specific id. + * + * GET /dashboard_layouts/{dashboard_layout_id}/dashboard_layout_components -> [DashboardLayoutComponent] + */ + public func dashboard_layout_dashboard_layout_components( /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + * @param {String} dashboard_layout_id Id of dashboard layout component */ - offset: Int64? = nil, + _ dashboard_layout_id: String, /** - * @param {String} sorts Fields to sort by. + * @param {String} fields Requested fields. */ - sorts: String? = nil, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Folder], SDKError> { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse<[Folder], SDKError> = self.get("/folders/\(path_folder_id)/children", - ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts], nil, options) + ) -> SDKResponse<[DashboardLayoutComponent], SDKError> { + let path_dashboard_layout_id = encodeParam(dashboard_layout_id) + let result: SDKResponse<[DashboardLayoutComponent], SDKError> = self.get("/dashboard_layouts/\(path_dashboard_layout_id)/dashboard_layout_components", + ["fields": fields], nil, options) return result } /** - * ### Search the children of a folder + * ### Get information about the dashboard layouts with a specific id. * - * GET /folders/{folder_id}/children/search -> [Folder] + * GET /dashboard_layouts/{dashboard_layout_id} -> DashboardLayout */ - public func folder_children_search( + public func dashboard_layout( /** - * @param {String} folder_id Id of folder + * @param {String} dashboard_layout_id Id of dashboard layouts */ - _ folder_id: String, + _ dashboard_layout_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_dashboard_layout_id = encodeParam(dashboard_layout_id) + let result: SDKResponse = self.get("/dashboard_layouts/\(path_dashboard_layout_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update the dashboard layout with a specific id. + * + * PATCH /dashboard_layouts/{dashboard_layout_id} -> DashboardLayout + */ + public func update_dashboard_layout( /** - * @param {String} sorts Fields to sort by. + * @param {String} dashboard_layout_id Id of dashboard layout */ - sorts: String? = nil, + _ dashboard_layout_id: String, /** - * @param {String} name Match folder name. + * @param {WriteDashboardLayout} body */ - name: String? = nil, + _ body: WriteDashboardLayout, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Folder], SDKError> { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse<[Folder], SDKError> = self.get("/folders/\(path_folder_id)/children/search", - ["fields": fields, "sorts": sorts, "name": name], nil, options) + ) -> SDKResponse { + let path_dashboard_layout_id = encodeParam(dashboard_layout_id) + let result: SDKResponse = self.patch("/dashboard_layouts/\(path_dashboard_layout_id)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Get the parent of a folder + * ### Delete a dashboard layout with a specific id. * - * GET /folders/{folder_id}/parent -> Folder + * DELETE /dashboard_layouts/{dashboard_layout_id} -> String */ - public func folder_parent( + public func delete_dashboard_layout( /** - * @param {String} folder_id Id of folder + * @param {String} dashboard_layout_id Id of dashboard layout */ - _ folder_id: String, + _ dashboard_layout_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_dashboard_layout_id = encodeParam(dashboard_layout_id) + let result: SDKResponse = self.delete("/dashboard_layouts/\(path_dashboard_layout_id)", nil, nil, options) + return result + } + + /** + * ### Get information about all the dashboard elements on a dashboard with a specific id. + * + * GET /dashboards/{dashboard_id}/dashboard_layouts -> [DashboardLayout] + */ + public func dashboard_dashboard_layouts( + /** + * @param {String} dashboard_id Id of dashboard + */ + _ dashboard_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.get("/folders/\(path_folder_id)/parent", + ) -> SDKResponse<[DashboardLayout], SDKError> { + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse<[DashboardLayout], SDKError> = self.get("/dashboards/\(path_dashboard_id)/dashboard_layouts", ["fields": fields], nil, options) return result } /** - * ### Get the ancestors of a folder + * ### Create a dashboard layout on the dashboard with a specific id. * - * GET /folders/{folder_id}/ancestors -> [Folder] + * POST /dashboard_layouts -> DashboardLayout */ - public func folder_ancestors( + public func create_dashboard_layout( /** - * @param {String} folder_id Id of folder + * @param {WriteDashboardLayout} body */ - _ folder_id: String, + _ body: WriteDashboardLayout, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Folder], SDKError> { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse<[Folder], SDKError> = self.get("/folders/\(path_folder_id)/ancestors", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/dashboard_layouts", + ["fields": fields], try! self.encode(body), options) return result } + + + // MARK DataAction: Run Data Actions + /** - * ### Get all looks in a folder. - * In API 3.x, this will return all looks in a folder, including looks in the trash. - * In API 4.0+, all looks in a folder will be returned, excluding looks in the trash. + * Perform a data action. The data action object can be obtained from query results, and used to perform an arbitrary action. * - * GET /folders/{folder_id}/looks -> [LookWithQuery] + * POST /data_actions -> DataActionResponse */ - public func folder_looks( - /** - * @param {String} folder_id Id of folder - */ - _ folder_id: String, + public func perform_data_action( /** - * @param {String} fields Requested fields. + * @param {DataActionRequest} body */ - fields: String? = nil, + _ body: DataActionRequest, options: ITransportSettings? = nil - ) -> SDKResponse<[LookWithQuery], SDKError> { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse<[LookWithQuery], SDKError> = self.get("/folders/\(path_folder_id)/looks", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/data_actions", nil, try! self.encode(body), options) return result } /** - * ### Get the dashboards in a folder + * For some data actions, the remote server may supply a form requesting further user input. This endpoint takes a data action, asks the remote server to generate a form for it, and returns that form to you for presentation to the user. * - * GET /folders/{folder_id}/dashboards -> [Dashboard] + * POST /data_actions/form -> DataActionForm */ - public func folder_dashboards( - /** - * @param {String} folder_id Id of folder - */ - _ folder_id: String, + public func fetch_remote_data_action_form( /** - * @param {String} fields Requested fields. + * @param {StringDictionary} body */ - fields: String? = nil, + _ body: StringDictionary, options: ITransportSettings? = nil - ) -> SDKResponse<[Dashboard], SDKError> { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse<[Dashboard], SDKError> = self.get("/folders/\(path_folder_id)/dashboards", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/data_actions/form", nil, try! self.encode(body), options) return result } - // MARK Group: Manage Groups + // MARK Datagroup: Manage Datagroups /** - * ### Get information about all groups. + * ### Get information about all datagroups. * - * GET /groups -> [LkGroup] + * GET /datagroups -> [Datagroup] */ - public func all_groups( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results - */ - page: Int64? = nil, - /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page - */ - per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {DelimArray} ids Optional of ids to get specific groups. - */ - ids: DelimArray? = nil, - /** - * @param {String} content_metadata_id Id of content metadata to which groups must have access. - */ - content_metadata_id: String? = nil, - /** - * @param {Bool} can_add_to_content_metadata Select only groups that either can/cannot be given access to content. - */ - can_add_to_content_metadata: Bool? = nil, + public func all_datagroups( options: ITransportSettings? = nil - ) -> SDKResponse<[LkGroup], SDKError> { - let result: SDKResponse<[LkGroup], SDKError> = self.get("/groups", - ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "ids": ids as Any?, "content_metadata_id": content_metadata_id, "can_add_to_content_metadata": can_add_to_content_metadata as Any?], nil, options) + ) -> SDKResponse<[Datagroup], SDKError> { + let result: SDKResponse<[Datagroup], SDKError> = self.get("/datagroups", nil, nil, options) return result } /** - * ### Creates a new group (admin only). + * ### Get information about a datagroup. * - * POST /groups -> LkGroup + * GET /datagroups/{datagroup_id} -> Datagroup */ - public func create_group( - /** - * @param {WriteGroup} body - */ - _ body: WriteGroup, + public func datagroup( /** - * @param {String} fields Requested fields. + * @param {String} datagroup_id ID of datagroup. */ - fields: String? = nil, + _ datagroup_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/groups", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse { + let path_datagroup_id = encodeParam(datagroup_id) + let result: SDKResponse = self.get("/datagroups/\(path_datagroup_id)", nil, nil, options) return result } /** - * ### Search groups - * - * Returns all group records that match the given search criteria. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. + * ### Update a datagroup using the specified params. * - * GET /groups/search -> [LkGroup] + * PATCH /datagroups/{datagroup_id} -> Datagroup */ - public func search_groups( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Int64} limit Number of results to return (used with `offset`). - */ - limit: Int64? = nil, + public func update_datagroup( /** - * @param {Int64} offset Number of results to skip before returning any (used with `limit`). + * @param {String} datagroup_id ID of datagroup. */ - offset: Int64? = nil, + _ datagroup_id: String, /** - * @param {String} sorts Fields to sort by. + * @param {WriteDatagroup} body */ - sorts: String? = nil, + _ body: WriteDatagroup, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_datagroup_id = encodeParam(datagroup_id) + let result: SDKResponse = self.patch("/datagroups/\(path_datagroup_id)", nil, try! self.encode(body), options) + return result + } + + + + // MARK DerivedTable: View Derived Table graphs + + /** + * ### Discover information about derived tables + * + * GET /derived_table/graph/model/{model} -> DependencyGraph + */ + public func graph_derived_tables_for_model( /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {String} model The name of the Lookml model. */ - filter_or: Bool? = nil, + _ model: String, /** - * @param {String} id Match group id. + * @param {String} format The format of the graph. Valid values are [dot]. Default is `dot` */ - id: String? = nil, + format: String? = nil, /** - * @param {String} name Match group name. + * @param {String} color Color denoting the build status of the graph. Grey = not built, green = built, yellow = building, red = error. */ - name: String? = nil, + color: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_model = encodeParam(model) + let result: SDKResponse = self.get("/derived_table/graph/model/\(path_model)", + ["format": format, "color": color], nil, options) + return result + } + + /** + * ### Get the subgraph representing this derived table and its dependencies. + * + * GET /derived_table/graph/view/{view} -> DependencyGraph + */ + public func graph_derived_tables_for_view( /** - * @param {String} external_group_id Match group external_group_id. + * @param {String} view The derived table's view name. */ - external_group_id: String? = nil, + _ view: String, /** - * @param {Bool} externally_managed Match group externally_managed. + * @param {String} models The models where this derived table is defined. */ - externally_managed: Bool? = nil, + models: String? = nil, /** - * @param {Bool} externally_orphaned Match group externally_orphaned. + * @param {String} workspace The model directory to look in, either `dev` or `production`. */ - externally_orphaned: Bool? = nil, + workspace: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[LkGroup], SDKError> { - let result: SDKResponse<[LkGroup], SDKError> = self.get("/groups/search", - ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) + ) -> SDKResponse { + let path_view = encodeParam(view) + let result: SDKResponse = self.get("/derived_table/graph/view/\(path_view)", + ["models": models, "workspace": workspace], nil, options) return result } /** - * ### Search groups include roles - * - * Returns all group records that match the given search criteria, and attaches any associated roles. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. + * Enqueue materialization for a PDT with the given model name and view name * - * GET /groups/search/with_roles -> [GroupSearch] + * GET /derived_table/{model_name}/{view_name}/start -> MaterializePDT */ - public func search_groups_with_roles( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func start_pdt_build( /** - * @param {Int64} limit Number of results to return (used with `offset`). + * @param {String} model_name The model of the PDT to start building. */ - limit: Int64? = nil, + _ model_name: String, /** - * @param {Int64} offset Number of results to skip before returning any (used with `limit`). + * @param {String} view_name The view name of the PDT to start building. */ - offset: Int64? = nil, + _ view_name: String, /** - * @param {String} sorts Fields to sort by. + * @param {String} force_rebuild Force rebuild of required dependent PDTs, even if they are already materialized. */ - sorts: String? = nil, + force_rebuild: String? = nil, /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {String} force_full_incremental Force involved incremental PDTs to fully re-materialize. */ - filter_or: Bool? = nil, + force_full_incremental: String? = nil, /** - * @param {String} id Match group id. + * @param {String} workspace Workspace in which to materialize selected PDT ('dev' or default 'production'). */ - id: String? = nil, + workspace: String? = nil, /** - * @param {String} name Match group name. + * @param {String} source The source of this request. */ - name: String? = nil, + source: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_model_name = encodeParam(model_name) + let path_view_name = encodeParam(view_name) + let result: SDKResponse = self.get("/derived_table/\(path_model_name)/\(path_view_name)/start", + ["force_rebuild": force_rebuild, "force_full_incremental": force_full_incremental, "workspace": workspace, "source": source], nil, options) + return result + } + + /** + * Check status of PDT materialization + * + * GET /derived_table/{materialization_id}/status -> MaterializePDT + */ + public func check_pdt_build( /** - * @param {String} external_group_id Match group external_group_id. + * @param {String} materialization_id The materialization id to check status for. */ - external_group_id: String? = nil, + _ materialization_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_materialization_id = encodeParam(materialization_id) + let result: SDKResponse = self.get("/derived_table/\(path_materialization_id)/status", nil, nil, options) + return result + } + + /** + * Stop a PDT materialization + * + * GET /derived_table/{materialization_id}/stop -> MaterializePDT + */ + public func stop_pdt_build( /** - * @param {Bool} externally_managed Match group externally_managed. + * @param {String} materialization_id The materialization id to stop. */ - externally_managed: Bool? = nil, + _ materialization_id: String, /** - * @param {Bool} externally_orphaned Match group externally_orphaned. + * @param {String} source The source of this request. */ - externally_orphaned: Bool? = nil, + source: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[GroupSearch], SDKError> { - let result: SDKResponse<[GroupSearch], SDKError> = self.get("/groups/search/with_roles", - ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) + ) -> SDKResponse { + let path_materialization_id = encodeParam(materialization_id) + let result: SDKResponse = self.get("/derived_table/\(path_materialization_id)/stop", + ["source": source], nil, options) return result } + + + // MARK Folder: Manage Folders + /** - * ### Search groups include hierarchy - * - * Returns all group records that match the given search criteria, and attaches - * associated role_ids and parent group_ids. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. + * Search for folders by creator id, parent id, name, etc * - * GET /groups/search/with_hierarchy -> [GroupHierarchy] + * GET /folders/search -> [Folder] */ - public func search_groups_with_hierarchy( + public func search_folders( /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {Int64} limit Number of results to return (used with `offset`). + * @param {Int64} page Return only page N of paginated results + */ + page: Int64? = nil, + /** + * @param {Int64} per_page Return N rows of data per page + */ + per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) */ limit: Int64? = nil, /** - * @param {Int64} offset Number of results to skip before returning any (used with `limit`). + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) */ offset: Int64? = nil, /** @@ -5770,636 +3095,741 @@ open class LookerSDK: APIMethods { */ sorts: String? = nil, /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {String} name Match Space title. */ - filter_or: Bool? = nil, + name: String? = nil, /** - * @param {String} id Match group id. + * @param {Int64} id Match Space id */ - id: String? = nil, + id: Int64? = nil, /** - * @param {String} name Match group name. + * @param {String} parent_id Filter on a children of a particular folder. */ - name: String? = nil, + parent_id: String? = nil, /** - * @param {String} external_group_id Match group external_group_id. + * @param {String} creator_id Filter on folder created by a particular user. */ - external_group_id: String? = nil, + creator_id: String? = nil, /** - * @param {Bool} externally_managed Match group externally_managed. + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression */ - externally_managed: Bool? = nil, + filter_or: Bool? = nil, /** - * @param {Bool} externally_orphaned Match group externally_orphaned. + * @param {Bool} is_shared_root Match is shared root */ - externally_orphaned: Bool? = nil, + is_shared_root: Bool? = nil, + /** + * @param {Bool} is_users_root Match is users root + */ + is_users_root: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[GroupHierarchy], SDKError> { - let result: SDKResponse<[GroupHierarchy], SDKError> = self.get("/groups/search/with_hierarchy", - ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) + ) -> SDKResponse<[Folder], SDKError> { + let result: SDKResponse<[Folder], SDKError> = self.get("/folders/search", + ["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 as Any?, "is_shared_root": is_shared_root as Any?, "is_users_root": is_users_root as Any?], nil, options) return result } /** - * ### Get information about a group. + * ### Get information about the folder with a specific id. * - * GET /groups/{group_id} -> LkGroup + * GET /folders/{folder_id} -> Folder */ - public func group( + public func folder( /** - * @param {String} group_id Id of group + * @param {String} folder_id Id of folder */ - _ group_id: String, + _ folder_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.get("/groups/\(path_group_id)", + ) -> SDKResponse { + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.get("/folders/\(path_folder_id)", ["fields": fields], nil, options) return result } /** - * ### Updates the a group (admin only). + * ### Update the folder with a specific id. * - * PATCH /groups/{group_id} -> LkGroup + * PATCH /folders/{folder_id} -> Folder */ - public func update_group( - /** - * @param {String} group_id Id of group - */ - _ group_id: String, + public func update_folder( /** - * @param {WriteGroup} body + * @param {String} folder_id Id of folder */ - _ body: WriteGroup, + _ folder_id: String, /** - * @param {String} fields Requested fields. + * @param {UpdateFolder} body */ - fields: String? = nil, + _ body: UpdateFolder, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.patch("/groups/\(path_group_id)", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse { + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.patch("/folders/\(path_folder_id)", nil, try! self.encode(body), options) return result } /** - * ### Deletes a group (admin only). + * ### Delete the folder with a specific id including any children folders. + * **DANGER** this will delete all looks and dashboards in the folder. * - * DELETE /groups/{group_id} -> String + * DELETE /folders/{folder_id} -> String */ - public func delete_group( + public func delete_folder( /** - * @param {String} group_id Id of group + * @param {String} folder_id Id of folder */ - _ group_id: String, + _ folder_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)", nil, nil, options) + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.delete("/folders/\(path_folder_id)", nil, nil, options) return result } /** - * ### Get information about all the groups in a group + * ### Get information about all folders. * - * GET /groups/{group_id}/groups -> [LkGroup] + * In API 3.x, this will not return empty personal folders, unless they belong to the calling user, + * or if they contain soft-deleted content. + * + * In API 4.0+, all personal folders will be returned. + * + * GET /folders -> [Folder] */ - public func all_group_groups( - /** - * @param {String} group_id Id of group - */ - _ group_id: String, + public func all_folders( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[LkGroup], SDKError> { - let path_group_id = encodeParam(group_id) - let result: SDKResponse<[LkGroup], SDKError> = self.get("/groups/\(path_group_id)/groups", + ) -> SDKResponse<[Folder], SDKError> { + let result: SDKResponse<[Folder], SDKError> = self.get("/folders", ["fields": fields], nil, options) return result } /** - * ### Adds a new group to a group. + * ### Create a folder with specified information. * - * POST /groups/{group_id}/groups -> LkGroup + * Caller must have permission to edit the parent folder and to create folders, otherwise the request + * returns 404 Not Found. + * + * POST /folders -> Folder */ - public func add_group_group( - /** - * @param {String} group_id Id of group - */ - _ group_id: String, + public func create_folder( /** - * @param {GroupIdForGroupInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH + * @param {CreateFolder} body */ - _ body: GroupIdForGroupInclusion, + _ body: CreateFolder, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.post("/groups/\(path_group_id)/groups", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/folders", nil, try! self.encode(body), options) return result } /** - * ### Get information about all the users directly included in a group. + * ### Get the children of a folder. * - * GET /groups/{group_id}/users -> [User] + * GET /folders/{folder_id}/children -> [Folder] */ - public func all_group_users( + public func folder_children( /** - * @param {String} group_id Id of group + * @param {String} folder_id Id of folder */ - _ group_id: String, + _ folder_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + * @param {Int64} page Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} per_page Return N rows of data per page */ per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ sorts: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[User], SDKError> { - let path_group_id = encodeParam(group_id) - let result: SDKResponse<[User], SDKError> = self.get("/groups/\(path_group_id)/users", - ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts], nil, options) + ) -> SDKResponse<[Folder], SDKError> { + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse<[Folder], SDKError> = self.get("/folders/\(path_folder_id)/children", + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts], nil, options) return result } /** - * ### Adds a new user to a group. + * ### Search the children of a folder * - * POST /groups/{group_id}/users -> User + * GET /folders/{folder_id}/children/search -> [Folder] */ - public func add_group_user( + public func folder_children_search( /** - * @param {String} group_id Id of group + * @param {String} folder_id Id of folder */ - _ group_id: String, + _ folder_id: String, /** - * @param {GroupIdForGroupUserInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH + * @param {String} fields Requested fields. */ - _ body: GroupIdForGroupUserInclusion, + fields: String? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {String} name Match folder name. + */ + name: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.post("/groups/\(path_group_id)/users", nil, try! self.encode(body), options) + ) -> SDKResponse<[Folder], SDKError> { + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse<[Folder], SDKError> = self.get("/folders/\(path_folder_id)/children/search", + ["fields": fields, "sorts": sorts, "name": name], nil, options) return result } /** - * ### Removes a user from a group. + * ### Get the parent of a folder * - * DELETE /groups/{group_id}/users/{user_id} -> Voidable + * GET /folders/{folder_id}/parent -> Folder */ - public func delete_group_user( + public func folder_parent( /** - * @param {String} group_id Id of group + * @param {String} folder_id Id of folder */ - _ group_id: String, + _ folder_id: String, /** - * @param {String} user_id Id of user to remove from group + * @param {String} fields Requested fields. */ - _ user_id: String, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)/users/\(path_user_id)", nil, nil, options) + ) -> SDKResponse { + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.get("/folders/\(path_folder_id)/parent", + ["fields": fields], nil, options) return result } /** - * ### Removes a group from a group. + * ### Get the ancestors of a folder * - * DELETE /groups/{group_id}/groups/{deleting_group_id} -> Voidable + * GET /folders/{folder_id}/ancestors -> [Folder] */ - public func delete_group_from_group( + public func folder_ancestors( /** - * @param {String} group_id Id of group + * @param {String} folder_id Id of folder */ - _ group_id: String, + _ folder_id: String, /** - * @param {String} deleting_group_id Id of group to delete + * @param {String} fields Requested fields. */ - _ deleting_group_id: String, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_deleting_group_id = encodeParam(deleting_group_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)/groups/\(path_deleting_group_id)", nil, nil, options) + ) -> SDKResponse<[Folder], SDKError> { + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse<[Folder], SDKError> = self.get("/folders/\(path_folder_id)/ancestors", + ["fields": fields], nil, options) return result } /** - * ### Set the value of a user attribute for a group. - * - * For information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values). + * ### Get all looks in a folder. + * In API 3.x, this will return all looks in a folder, including looks in the trash. + * In API 4.0+, all looks in a folder will be returned, excluding looks in the trash. * - * PATCH /groups/{group_id}/attribute_values/{user_attribute_id} -> UserAttributeGroupValue + * GET /folders/{folder_id}/looks -> [LookWithQuery] */ - public func update_user_attribute_group_value( - /** - * @param {String} group_id Id of group - */ - _ group_id: String, + public func folder_looks( /** - * @param {String} user_attribute_id Id of user attribute + * @param {String} folder_id Id of folder */ - _ user_attribute_id: String, + _ folder_id: String, /** - * @param {UserAttributeGroupValue} body WARNING: no writeable properties found for POST, PUT, or PATCH + * @param {String} fields Requested fields. */ - _ body: UserAttributeGroupValue, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_user_attribute_id = encodeParam(user_attribute_id) - let result: SDKResponse = self.patch("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, try! self.encode(body), options) + ) -> SDKResponse<[LookWithQuery], SDKError> { + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse<[LookWithQuery], SDKError> = self.get("/folders/\(path_folder_id)/looks", + ["fields": fields], nil, options) return result } /** - * ### Remove a user attribute value from a group. + * ### Get the dashboards in a folder * - * DELETE /groups/{group_id}/attribute_values/{user_attribute_id} -> Voidable + * GET /folders/{folder_id}/dashboards -> [Dashboard] */ - public func delete_user_attribute_group_value( + public func folder_dashboards( /** - * @param {String} group_id Id of group + * @param {String} folder_id Id of folder */ - _ group_id: String, + _ folder_id: String, /** - * @param {String} user_attribute_id Id of user attribute + * @param {String} fields Requested fields. */ - _ user_attribute_id: String, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_user_attribute_id = encodeParam(user_attribute_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, nil, options) + ) -> SDKResponse<[Dashboard], SDKError> { + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse<[Dashboard], SDKError> = self.get("/folders/\(path_folder_id)/dashboards", + ["fields": fields], nil, options) return result } - // MARK Homepage: Manage Homepage + // MARK Group: Manage Groups /** - * ### Get information about the primary homepage's sections. + * ### Get information about all groups. * - * GET /primary_homepage_sections -> [HomepageSection] + * GET /groups -> [LkGroup] */ - public func all_primary_homepage_sections( + public func all_groups( /** * @param {String} fields Requested fields. */ fields: String? = nil, + /** + * @param {Int64} page Return only page N of paginated results + */ + page: Int64? = nil, + /** + * @param {Int64} per_page Return N rows of data per page + */ + per_page: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {DelimArray} ids Optional of ids to get specific groups. + */ + ids: DelimArray? = nil, + /** + * @param {Int64} content_metadata_id Id of content metadata to which groups must have access. + */ + content_metadata_id: Int64? = nil, + /** + * @param {Bool} can_add_to_content_metadata Select only groups that either can/cannot be given access to content. + */ + can_add_to_content_metadata: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[HomepageSection], SDKError> { - let result: SDKResponse<[HomepageSection], SDKError> = self.get("/primary_homepage_sections", - ["fields": fields], nil, options) + ) -> SDKResponse<[LkGroup], SDKError> { + let result: SDKResponse<[LkGroup], SDKError> = self.get("/groups", + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "ids": ids as Any?, "content_metadata_id": content_metadata_id, "can_add_to_content_metadata": can_add_to_content_metadata as Any?], nil, options) return result } - - - // MARK Integration: Manage Integrations - /** - * ### Get information about all Integration Hubs. + * ### Creates a new group (admin only). * - * GET /integration_hubs -> [IntegrationHub] + * POST /groups -> LkGroup */ - public func all_integration_hubs( + public func create_group( + /** + * @param {WriteGroup} body + */ + _ body: WriteGroup, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[IntegrationHub], SDKError> { - let result: SDKResponse<[IntegrationHub], SDKError> = self.get("/integration_hubs", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/groups", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Create a new Integration Hub. + * ### Search groups * - * This API is rate limited to prevent it from being used for SSRF attacks + * Returns all group records that match the given search criteria. * - * POST /integration_hubs -> IntegrationHub + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /groups/search -> [LkGroup] */ - public func create_integration_hub( - /** - * @param {WriteIntegrationHub} body - */ - _ body: WriteIntegrationHub, + public func search_groups( /** * @param {String} fields Requested fields. */ fields: String? = nil, + /** + * @param {Int64} limit Number of results to return (used with `offset`). + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any (used with `limit`). + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + /** + * @param {Int64} id Match group id. + */ + id: Int64? = nil, + /** + * @param {String} name Match group name. + */ + name: String? = nil, + /** + * @param {String} external_group_id Match group external_group_id. + */ + external_group_id: String? = nil, + /** + * @param {Bool} externally_managed Match group externally_managed. + */ + externally_managed: Bool? = nil, + /** + * @param {Bool} externally_orphaned Match group externally_orphaned. + */ + externally_orphaned: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/integration_hubs", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse<[LkGroup], SDKError> { + let result: SDKResponse<[LkGroup], SDKError> = self.get("/groups/search", + ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) return result } /** - * ### Get information about a Integration Hub. + * ### Get information about a group. * - * GET /integration_hubs/{integration_hub_id} -> IntegrationHub + * GET /groups/{group_id} -> LkGroup */ - public func integration_hub( + public func group( /** - * @param {String} integration_hub_id Id of integration_hub + * @param {Int64} group_id Id of group */ - _ integration_hub_id: String, + _ group_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_integration_hub_id = encodeParam(integration_hub_id) - let result: SDKResponse = self.get("/integration_hubs/\(path_integration_hub_id)", + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.get("/groups/\(path_group_id)", ["fields": fields], nil, options) return result } /** - * ### Update a Integration Hub definition. - * - * This API is rate limited to prevent it from being used for SSRF attacks + * ### Updates the a group (admin only). * - * PATCH /integration_hubs/{integration_hub_id} -> IntegrationHub + * PATCH /groups/{group_id} -> LkGroup */ - public func update_integration_hub( + public func update_group( /** - * @param {String} integration_hub_id Id of integration_hub + * @param {Int64} group_id Id of group */ - _ integration_hub_id: String, + _ group_id: Int64, /** - * @param {WriteIntegrationHub} body + * @param {WriteGroup} body */ - _ body: WriteIntegrationHub, + _ body: WriteGroup, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_integration_hub_id = encodeParam(integration_hub_id) - let result: SDKResponse = self.patch("/integration_hubs/\(path_integration_hub_id)", + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.patch("/groups/\(path_group_id)", ["fields": fields], try! self.encode(body), options) return result } /** - * ### Delete a Integration Hub. + * ### Deletes a group (admin only). * - * DELETE /integration_hubs/{integration_hub_id} -> String + * DELETE /groups/{group_id} -> String */ - public func delete_integration_hub( + public func delete_group( + /** + * @param {Int64} group_id Id of group + */ + _ group_id: Int64, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)", nil, nil, options) + return result + } + + /** + * ### Get information about all the groups in a group + * + * GET /groups/{group_id}/groups -> [LkGroup] + */ + public func all_group_groups( + /** + * @param {Int64} group_id Id of group + */ + _ group_id: Int64, /** - * @param {String} integration_hub_id Id of integration_hub + * @param {String} fields Requested fields. */ - _ integration_hub_id: String, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_integration_hub_id = encodeParam(integration_hub_id) - let result: SDKResponse = self.delete("/integration_hubs/\(path_integration_hub_id)", nil, nil, options) + ) -> SDKResponse<[LkGroup], SDKError> { + let path_group_id = encodeParam(group_id) + let result: SDKResponse<[LkGroup], SDKError> = self.get("/groups/\(path_group_id)/groups", + ["fields": fields], nil, options) return result } /** - * Accepts the legal agreement for a given integration hub. This only works for integration hubs that have legal_agreement_required set to true and legal_agreement_signed set to false. + * ### Adds a new group to a group. * - * POST /integration_hubs/{integration_hub_id}/accept_legal_agreement -> IntegrationHub + * POST /groups/{group_id}/groups -> LkGroup */ - public func accept_integration_hub_legal_agreement( + public func add_group_group( /** - * @param {String} integration_hub_id Id of integration_hub + * @param {Int64} group_id Id of group */ - _ integration_hub_id: String, + _ group_id: Int64, + /** + * @param {GroupIdForGroupInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH + */ + _ body: GroupIdForGroupInclusion, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_integration_hub_id = encodeParam(integration_hub_id) - let result: SDKResponse = self.post("/integration_hubs/\(path_integration_hub_id)/accept_legal_agreement", nil, nil, options) + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.post("/groups/\(path_group_id)/groups", nil, try! self.encode(body), options) return result } /** - * ### Get information about all Integrations. + * ### Get information about all the users directly included in a group. * - * GET /integrations -> [Integration] + * GET /groups/{group_id}/users -> [User] */ - public func all_integrations( + public func all_group_users( + /** + * @param {Int64} group_id Id of group + */ + _ group_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {String} integration_hub_id Filter to a specific provider + * @param {Int64} page Return only page N of paginated results */ - integration_hub_id: String? = nil, + page: Int64? = nil, + /** + * @param {Int64} per_page Return N rows of data per page + */ + per_page: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Integration], SDKError> { - let result: SDKResponse<[Integration], SDKError> = self.get("/integrations", - ["fields": fields, "integration_hub_id": integration_hub_id], nil, options) + ) -> SDKResponse<[User], SDKError> { + let path_group_id = encodeParam(group_id) + let result: SDKResponse<[User], SDKError> = self.get("/groups/\(path_group_id)/users", + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts], nil, options) return result } /** - * ### Get information about a Integration. + * ### Adds a new user to a group. * - * GET /integrations/{integration_id} -> Integration + * POST /groups/{group_id}/users -> User */ - public func integration( + public func add_group_user( /** - * @param {String} integration_id Id of integration + * @param {Int64} group_id Id of group */ - _ integration_id: String, + _ group_id: Int64, /** - * @param {String} fields Requested fields. + * @param {GroupIdForGroupUserInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH */ - fields: String? = nil, + _ body: GroupIdForGroupUserInclusion, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_integration_id = encodeParam(integration_id) - let result: SDKResponse = self.get("/integrations/\(path_integration_id)", - ["fields": fields], nil, options) + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.post("/groups/\(path_group_id)/users", nil, try! self.encode(body), options) return result } /** - * ### Update parameters on a Integration. + * ### Removes a user from a group. * - * PATCH /integrations/{integration_id} -> Integration + * DELETE /groups/{group_id}/users/{user_id} -> Voidable */ - public func update_integration( - /** - * @param {String} integration_id Id of integration - */ - _ integration_id: String, + public func delete_group_user( /** - * @param {WriteIntegration} body + * @param {Int64} group_id Id of group */ - _ body: WriteIntegration, + _ group_id: Int64, /** - * @param {String} fields Requested fields. + * @param {Int64} user_id Id of user to remove from group */ - fields: String? = nil, + _ user_id: Int64, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_integration_id = encodeParam(integration_id) - let result: SDKResponse = self.patch("/integrations/\(path_integration_id)", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let path_user_id = encodeParam(user_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)/users/\(path_user_id)", nil, nil, options) return result } /** - * Returns the Integration form for presentation to the user. + * ### Removes a group from a group. * - * POST /integrations/{integration_id}/form -> DataActionForm + * DELETE /groups/{group_id}/groups/{deleting_group_id} -> Voidable */ - public func fetch_integration_form( + public func delete_group_from_group( /** - * @param {String} integration_id Id of integration + * @param {Int64} group_id Id of group */ - _ integration_id: String, + _ group_id: Int64, /** - * @param {StringDictionary} body + * @param {Int64} deleting_group_id Id of group to delete */ - body: StringDictionary? = nil, + _ deleting_group_id: Int64, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_integration_id = encodeParam(integration_id) - let result: SDKResponse = self.post("/integrations/\(path_integration_id)/form", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let path_deleting_group_id = encodeParam(deleting_group_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)/groups/\(path_deleting_group_id)", nil, nil, options) return result } /** - * Tests the integration to make sure all the settings are working. + * ### Set the value of a user attribute for a group. * - * POST /integrations/{integration_id}/test -> IntegrationTestResult + * For information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values). + * + * PATCH /groups/{group_id}/attribute_values/{user_attribute_id} -> UserAttributeGroupValue */ - public func test_integration( + public func update_user_attribute_group_value( /** - * @param {String} integration_id Id of integration + * @param {Int64} group_id Id of group */ - _ integration_id: String, + _ group_id: Int64, + /** + * @param {Int64} user_attribute_id Id of user attribute + */ + _ user_attribute_id: Int64, + /** + * @param {UserAttributeGroupValue} body WARNING: no writeable properties found for POST, PUT, or PATCH + */ + _ body: UserAttributeGroupValue, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_integration_id = encodeParam(integration_id) - let result: SDKResponse = self.post("/integrations/\(path_integration_id)/test", nil, nil, options) + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let path_user_attribute_id = encodeParam(user_attribute_id) + let result: SDKResponse = self.patch("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, try! self.encode(body), options) return result } - - - // MARK JdbcInterface: LookML Model metadata for JDBC Clients - /** - * ### Handle Avatica RPC Requests + * ### Remove a user attribute value from a group. * - * GET /__jdbc_interface__ -> JdbcInterface + * DELETE /groups/{group_id}/attribute_values/{user_attribute_id} -> Voidable */ - public func jdbc_interface( + public func delete_user_attribute_group_value( + /** + * @param {Int64} group_id Id of group + */ + _ group_id: Int64, /** - * @param {String} avatica_request Avatica RPC request + * @param {Int64} user_attribute_id Id of user attribute */ - avatica_request: String? = nil, + _ user_attribute_id: Int64, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/__jdbc_interface__", - ["avatica_request": avatica_request], nil, options) + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let path_user_attribute_id = encodeParam(user_attribute_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, nil, options) return result } - // MARK Look: Run and Manage Looks + // MARK Homepage: Manage Homepage /** - * ### Get information about all active Looks - * - * Returns an array of **abbreviated Look objects** describing all the looks that the caller has access to. Soft-deleted Looks are **not** included. - * - * Get the **full details** of a specific look by id with [look(id)](#!/Look/look) - * - * Find **soft-deleted looks** with [search_looks()](#!/Look/search_looks) + * ### Get information about all homepages. * - * GET /looks -> [Look] + * GET /homepages -> [Homepage] */ - public func all_looks( + @available(*, deprecated) + public func all_homepages( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Look], SDKError> { - let result: SDKResponse<[Look], SDKError> = self.get("/looks", + ) -> SDKResponse<[Homepage], SDKError> { + let result: SDKResponse<[Homepage], SDKError> = self.get("/homepages", ["fields": fields], nil, options) return result } /** - * ### Create a Look - * - * To create a look to display query data, first create the query with [create_query()](#!/Query/create_query) - * then assign the query's id to the `query_id` property in the call to `create_look()`. - * - * To place the look into a particular space, assign the space's id to the `space_id` property - * in the call to `create_look()`. + * ### Create a new homepage. * - * POST /looks -> LookWithQuery + * POST /homepages -> Homepage */ - public func create_look( + @available(*, deprecated) + public func create_homepage( /** - * @param {WriteLookWithQuery} body + * @param {WriteHomepage} body */ - _ body: WriteLookWithQuery, + _ body: WriteHomepage, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/looks", + ) -> SDKResponse { + let result: SDKResponse = self.post("/homepages", ["fields": fields], try! self.encode(body), options) return result } /** - * ### Search Looks - * - * Returns an **array of Look objects** that match the specified search criteria. + * ### Search Homepages * * If multiple search params are given and `filter_or` is FALSE or not specified, * search params are combined in a logical AND operation. @@ -6422,793 +3852,1080 @@ open class LookerSDK: APIMethods { * * Boolean search params accept only "true" and "false" as values. * + * GET /homepages/search -> [Homepage] + */ + @available(*, deprecated) + public func search_homepages( + /** + * @param {String} title Matches homepage title. + */ + title: String? = nil, + /** + * @param {String} created_at Matches the timestamp for when the homepage was created. + */ + created_at: String? = nil, + /** + * @param {String} first_name The first name of the user who created this homepage. + */ + first_name: String? = nil, + /** + * @param {String} last_name The last name of the user who created this homepage. + */ + last_name: String? = nil, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Bool} favorited Return favorited homepages when true. + */ + favorited: Bool? = nil, + /** + * @param {String} creator_id Filter on homepages created by a particular user. + */ + creator_id: String? = nil, + /** + * @param {Int64} page The page to return. + */ + page: Int64? = nil, + /** + * @param {Int64} per_page The number of items in the returned page. + */ + per_page: Int64? = nil, + /** + * @param {Int64} offset The number of items to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, + /** + * @param {Int64} limit The maximum number of items to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {String} sorts The fields to sort the results by. + */ + sorts: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[Homepage], SDKError> { + let result: SDKResponse<[Homepage], SDKError> = self.get("/homepages/search", + ["title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited as Any?, "creator_id": creator_id, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) + return result + } + + /** + * ### Get information about a homepage. + * + * GET /homepages/{homepage_id} -> Homepage + */ + @available(*, deprecated) + public func homepage( + /** + * @param {Int64} homepage_id Id of homepage + */ + _ homepage_id: Int64, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_homepage_id = encodeParam(homepage_id) + let result: SDKResponse = self.get("/homepages/\(path_homepage_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update a homepage definition. * - * Get a **single look** by id with [look(id)](#!/Look/look) + * PATCH /homepages/{homepage_id} -> Homepage + */ + @available(*, deprecated) + public func update_homepage( + /** + * @param {Int64} homepage_id Id of homepage + */ + _ homepage_id: Int64, + /** + * @param {WriteHomepage} body + */ + _ body: WriteHomepage, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_homepage_id = encodeParam(homepage_id) + let result: SDKResponse = self.patch("/homepages/\(path_homepage_id)", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Delete a homepage. * - * GET /looks/search -> [Look] + * DELETE /homepages/{homepage_id} -> String */ - public func search_looks( - /** - * @param {String} id Match look id. - */ - id: String? = nil, + @available(*, deprecated) + public func delete_homepage( /** - * @param {String} title Match Look title. + * @param {Int64} homepage_id Id of homepage */ - title: String? = nil, + _ homepage_id: Int64, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_homepage_id = encodeParam(homepage_id) + let result: SDKResponse = self.delete("/homepages/\(path_homepage_id)", nil, nil, options) + return result + } + + /** + * ### Get information about all homepage items. + * + * GET /homepage_items -> [HomepageItem] + */ + @available(*, deprecated) + public func all_homepage_items( /** - * @param {String} description Match Look description. + * @param {String} fields Requested fields. */ - description: String? = nil, + fields: String? = nil, /** - * @param {String} content_favorite_id Select looks with a particular content favorite id + * @param {String} sorts Fields to sort by. */ - content_favorite_id: String? = nil, + sorts: String? = nil, /** - * @param {String} folder_id Select looks in a particular folder. + * @param {String} homepage_section_id Filter to a specific homepage section */ - folder_id: String? = nil, + homepage_section_id: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[HomepageItem], SDKError> { + let result: SDKResponse<[HomepageItem], SDKError> = self.get("/homepage_items", + ["fields": fields, "sorts": sorts, "homepage_section_id": homepage_section_id], nil, options) + return result + } + + /** + * ### Create a new homepage item. + * + * POST /homepage_items -> HomepageItem + */ + @available(*, deprecated) + public func create_homepage_item( /** - * @param {String} user_id Select looks created by a particular user. + * @param {WriteHomepageItem} body */ - user_id: String? = nil, + _ body: WriteHomepageItem, /** - * @param {String} view_count Select looks with particular view_count value + * @param {String} fields Requested fields. */ - view_count: String? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/homepage_items", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Get information about a homepage item. + * + * GET /homepage_items/{homepage_item_id} -> HomepageItem + */ + @available(*, deprecated) + public func homepage_item( /** - * @param {Bool} deleted Select soft-deleted looks + * @param {Int64} homepage_item_id Id of homepage item */ - deleted: Bool? = nil, + _ homepage_item_id: Int64, /** - * @param {String} query_id Select looks that reference a particular query by query_id + * @param {String} fields Requested fields. */ - query_id: String? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_homepage_item_id = encodeParam(homepage_item_id) + let result: SDKResponse = self.get("/homepage_items/\(path_homepage_item_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update a homepage item definition. + * + * PATCH /homepage_items/{homepage_item_id} -> HomepageItem + */ + @available(*, deprecated) + public func update_homepage_item( /** - * @param {Bool} curate Exclude items that exist only in personal spaces other than the users + * @param {Int64} homepage_item_id Id of homepage item */ - curate: Bool? = nil, + _ homepage_item_id: Int64, /** - * @param {String} last_viewed_at Select looks based on when they were last viewed + * @param {WriteHomepageItem} body */ - last_viewed_at: String? = nil, + _ body: WriteHomepageItem, /** * @param {String} fields Requested fields. */ fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_homepage_item_id = encodeParam(homepage_item_id) + let result: SDKResponse = self.patch("/homepage_items/\(path_homepage_item_id)", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Delete a homepage item. + * + * DELETE /homepage_items/{homepage_item_id} -> String + */ + @available(*, deprecated) + public func delete_homepage_item( /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results - */ - page: Int64? = nil, - /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} homepage_item_id Id of homepage item */ - per_page: Int64? = nil, + _ homepage_item_id: Int64, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_homepage_item_id = encodeParam(homepage_item_id) + let result: SDKResponse = self.delete("/homepage_items/\(path_homepage_item_id)", nil, nil, options) + return result + } + + /** + * ### Get information about all homepage sections. + * + * GET /homepage_sections -> [HomepageSection] + */ + @available(*, deprecated) + public func all_homepage_sections( /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + * @param {String} fields Requested fields. */ - limit: Int64? = nil, + fields: String? = nil, /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + * @param {String} sorts Fields to sort by. */ - offset: Int64? = nil, + sorts: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[HomepageSection], SDKError> { + let result: SDKResponse<[HomepageSection], SDKError> = self.get("/homepage_sections", + ["fields": fields, "sorts": sorts], nil, options) + return result + } + + /** + * ### Create a new homepage section. + * + * POST /homepage_sections -> HomepageSection + */ + @available(*, deprecated) + public func create_homepage_section( /** - * @param {String} sorts One or more fields to sort results by. Sortable fields: [:title, :user_id, :id, :created_at, :space_id, :folder_id, :description, :updated_at, :last_updater_id, :view_count, :favorite_count, :content_favorite_id, :deleted, :deleted_at, :last_viewed_at, :last_accessed_at, :query_id] + * @param {WriteHomepageSection} body */ - sorts: String? = nil, + _ body: WriteHomepageSection, /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {String} fields Requested fields. */ - filter_or: Bool? = nil, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Look], SDKError> { - let result: SDKResponse<[Look], SDKError> = self.get("/looks/search", - ["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 as Any?, "query_id": query_id, "curate": curate as Any?, "last_viewed_at": last_viewed_at, "fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/homepage_sections", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Get a Look. - * - * Returns detailed information about a Look and its associated Query. + * ### Get information about a homepage section. * - * GET /looks/{look_id} -> LookWithQuery + * GET /homepage_sections/{homepage_section_id} -> HomepageSection */ - public func look( + @available(*, deprecated) + public func homepage_section( /** - * @param {String} look_id Id of look + * @param {Int64} homepage_section_id Id of homepage section */ - _ look_id: String, + _ homepage_section_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let result: SDKResponse = self.get("/looks/\(path_look_id)", + ) -> SDKResponse { + let path_homepage_section_id = encodeParam(homepage_section_id) + let result: SDKResponse = self.get("/homepage_sections/\(path_homepage_section_id)", ["fields": fields], nil, options) return result } /** - * ### Modify a Look - * - * Use this function to modify parts of a look. Property values given in a call to `update_look` are - * applied to the existing look, so there's no need to include properties whose values are not changing. - * It's best to specify only the properties you want to change and leave everything else out - * of your `update_look` call. **Look properties marked 'read-only' will be ignored.** - * - * When a user deletes a look in the Looker UI, the look data remains in the database but is - * marked with a deleted flag ("soft-deleted"). Soft-deleted looks can be undeleted (by an admin) - * if the delete was in error. - * - * To soft-delete a look via the API, use [update_look()](#!/Look/update_look) to change the look's `deleted` property to `true`. - * You can undelete a look by calling `update_look` to change the look's `deleted` property to `false`. - * - * Soft-deleted looks are excluded from the results of [all_looks()](#!/Look/all_looks) and [search_looks()](#!/Look/search_looks), so they - * essentially disappear from view even though they still reside in the db. - * In API 3.1 and later, you can pass `deleted: true` as a parameter to [search_looks()](#!/3.1/Look/search_looks) to list soft-deleted looks. - * - * NOTE: [delete_look()](#!/Look/delete_look) performs a "hard delete" - the look data is removed from the Looker - * database and destroyed. There is no "undo" for `delete_look()`. + * ### Update a homepage section definition. * - * PATCH /looks/{look_id} -> LookWithQuery + * PATCH /homepage_sections/{homepage_section_id} -> HomepageSection */ - public func update_look( + @available(*, deprecated) + public func update_homepage_section( /** - * @param {String} look_id Id of look + * @param {Int64} homepage_section_id Id of homepage section */ - _ look_id: String, + _ homepage_section_id: Int64, /** - * @param {WriteLookWithQuery} body + * @param {WriteHomepageSection} body */ - _ body: WriteLookWithQuery, + _ body: WriteHomepageSection, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let result: SDKResponse = self.patch("/looks/\(path_look_id)", + ) -> SDKResponse { + let path_homepage_section_id = encodeParam(homepage_section_id) + let result: SDKResponse = self.patch("/homepage_sections/\(path_homepage_section_id)", ["fields": fields], try! self.encode(body), options) return result } /** - * ### Permanently Delete a Look - * - * This operation **permanently** removes a look from the Looker database. + * ### Delete a homepage section. * - * NOTE: There is no "undo" for this kind of delete. - * - * For information about soft-delete (which can be undone) see [update_look()](#!/Look/update_look). - * - * DELETE /looks/{look_id} -> String + * DELETE /homepage_sections/{homepage_section_id} -> String */ - public func delete_look( + @available(*, deprecated) + public func delete_homepage_section( /** - * @param {String} look_id Id of look + * @param {Int64} homepage_section_id Id of homepage section */ - _ look_id: String, + _ homepage_section_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let result: SDKResponse = self.delete("/looks/\(path_look_id)", nil, nil, options) + let path_homepage_section_id = encodeParam(homepage_section_id) + let result: SDKResponse = self.delete("/homepage_sections/\(path_homepage_section_id)", nil, nil, options) return result } /** - * ### Run a Look + * ### Get information about the primary homepage's sections. * - * Runs a given look's query and returns the results in the requested format. + * GET /primary_homepage_sections -> [HomepageSection] + */ + public func all_primary_homepage_sections( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[HomepageSection], SDKError> { + let result: SDKResponse<[HomepageSection], SDKError> = self.get("/primary_homepage_sections", + ["fields": fields], nil, options) + return result + } + + + + // MARK Integration: Manage Integrations + + /** + * ### Get information about all Integration Hubs. * - * Supported formats: + * GET /integration_hubs -> [IntegrationHub] + */ + public func all_integration_hubs( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[IntegrationHub], SDKError> { + let result: SDKResponse<[IntegrationHub], SDKError> = self.get("/integration_hubs", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create a new Integration Hub. * - * | result_format | Description - * | :-----------: | :--- | - * | json | Plain json - * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query - * | csv | Comma separated values with a header - * | txt | Tab separated values with a header - * | html | Simple html - * | md | Simple markdown - * | xlsx | MS Excel spreadsheet - * | sql | Returns the generated SQL rather than running the query - * | png | A PNG image of the visualization of the query - * | jpg | A JPG image of the visualization of the query + * This API is rate limited to prevent it from being used for SSRF attacks * - * GET /looks/{look_id}/run/{result_format} -> String + * POST /integration_hubs -> IntegrationHub + */ + public func create_integration_hub( + /** + * @param {WriteIntegrationHub} body + */ + _ body: WriteIntegrationHub, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/integration_hubs", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Get information about a Integration Hub. * - * **Note**: Binary content may be returned by this method. + * GET /integration_hubs/{integration_hub_id} -> IntegrationHub */ - public func run_look( + public func integration_hub( /** - * @param {String} look_id Id of look + * @param {Int64} integration_hub_id Id of integration_hub */ - _ look_id: String, + _ integration_hub_id: Int64, /** - * @param {String} result_format Format of result + * @param {String} fields Requested fields. */ - _ result_format: String, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_integration_hub_id = encodeParam(integration_hub_id) + let result: SDKResponse = self.get("/integration_hubs/\(path_integration_hub_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update a Integration Hub definition. + * + * This API is rate limited to prevent it from being used for SSRF attacks + * + * PATCH /integration_hubs/{integration_hub_id} -> IntegrationHub + */ + public func update_integration_hub( /** - * @param {Int64} limit Row limit (may override the limit in the saved query). + * @param {Int64} integration_hub_id Id of integration_hub */ - limit: Int64? = nil, + _ integration_hub_id: Int64, /** - * @param {Bool} apply_formatting Apply model-specified formatting to each result. + * @param {WriteIntegrationHub} body */ - apply_formatting: Bool? = nil, + _ body: WriteIntegrationHub, /** - * @param {Bool} apply_vis Apply visualization options to results. + * @param {String} fields Requested fields. */ - apply_vis: Bool? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_integration_hub_id = encodeParam(integration_hub_id) + let result: SDKResponse = self.patch("/integration_hubs/\(path_integration_hub_id)", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Delete a Integration Hub. + * + * DELETE /integration_hubs/{integration_hub_id} -> String + */ + public func delete_integration_hub( /** - * @param {Bool} cache Get results from cache if available. + * @param {Int64} integration_hub_id Id of integration_hub */ - cache: Bool? = nil, + _ integration_hub_id: Int64, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_integration_hub_id = encodeParam(integration_hub_id) + let result: SDKResponse = self.delete("/integration_hubs/\(path_integration_hub_id)", nil, nil, options) + return result + } + + /** + * Accepts the legal agreement for a given integration hub. This only works for integration hubs that have legal_agreement_required set to true and legal_agreement_signed set to false. + * + * POST /integration_hubs/{integration_hub_id}/accept_legal_agreement -> IntegrationHub + */ + public func accept_integration_hub_legal_agreement( /** - * @param {Int64} image_width Render width for image formats. + * @param {Int64} integration_hub_id Id of integration_hub */ - image_width: Int64? = nil, + _ integration_hub_id: Int64, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_integration_hub_id = encodeParam(integration_hub_id) + let result: SDKResponse = self.post("/integration_hubs/\(path_integration_hub_id)/accept_legal_agreement", nil, nil, options) + return result + } + + /** + * ### Get information about all Integrations. + * + * GET /integrations -> [Integration] + */ + public func all_integrations( /** - * @param {Int64} image_height Render height for image formats. + * @param {String} fields Requested fields. */ - image_height: Int64? = nil, + fields: String? = nil, /** - * @param {Bool} generate_drill_links Generate drill links (only applicable to 'json_detail' format. + * @param {String} integration_hub_id Filter to a specific provider */ - generate_drill_links: Bool? = nil, + integration_hub_id: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[Integration], SDKError> { + let result: SDKResponse<[Integration], SDKError> = self.get("/integrations", + ["fields": fields, "integration_hub_id": integration_hub_id], nil, options) + return result + } + + /** + * ### Get information about a Integration. + * + * GET /integrations/{integration_id} -> Integration + */ + public func integration( /** - * @param {Bool} force_production Force use of production models even if the user is in development mode. Note that this flag being false does not guarantee development models will be used. + * @param {String} integration_id Id of integration */ - force_production: Bool? = nil, + _ integration_id: String, /** - * @param {Bool} cache_only Retrieve any results from cache even if the results have expired. + * @param {String} fields Requested fields. */ - cache_only: Bool? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_integration_id = encodeParam(integration_id) + let result: SDKResponse = self.get("/integrations/\(path_integration_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update parameters on a Integration. + * + * PATCH /integrations/{integration_id} -> Integration + */ + public func update_integration( /** - * @param {String} path_prefix Prefix to use for drill links (url encoded). + * @param {String} integration_id Id of integration */ - path_prefix: String? = nil, + _ integration_id: String, /** - * @param {Bool} rebuild_pdts Rebuild PDTS used in query. + * @param {WriteIntegration} body */ - rebuild_pdts: Bool? = nil, + _ body: WriteIntegration, /** - * @param {Bool} server_table_calcs Perform table calculations on query results + * @param {String} fields Requested fields. */ - server_table_calcs: Bool? = nil, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let path_result_format = encodeParam(result_format) - let result: SDKResponse = self.get("/looks/\(path_look_id)/run/\(path_result_format)", - ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?], nil, options) + ) -> SDKResponse { + let path_integration_id = encodeParam(integration_id) + let result: SDKResponse = self.patch("/integrations/\(path_integration_id)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Copy an existing look - * - * Creates a copy of an existing look, in a specified folder, and returns the copied look. - * - * `look_id` and `folder_id` are required. - * - * `look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard. + * Returns the Integration form for presentation to the user. * - * POST /looks/{look_id}/copy -> LookWithQuery + * POST /integrations/{integration_id}/form -> DataActionForm */ - public func copy_look( + public func fetch_integration_form( /** - * @param {String} look_id Look id to copy. + * @param {String} integration_id Id of integration */ - _ look_id: String, + _ integration_id: String, /** - * @param {String} folder_id Folder id to copy to. + * @param {StringDictionary} body */ - folder_id: String? = nil, + body: StringDictionary? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let result: SDKResponse = self.post("/looks/\(path_look_id)/copy", - ["folder_id": folder_id], nil, options) + ) -> SDKResponse { + let path_integration_id = encodeParam(integration_id) + let result: SDKResponse = self.post("/integrations/\(path_integration_id)/form", nil, try! self.encode(body), options) return result } /** - * ### Move an existing look - * - * Moves a look to a specified folder, and returns the moved look. - * - * `look_id` and `folder_id` are required. - * `look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard. + * Tests the integration to make sure all the settings are working. * - * PATCH /looks/{look_id}/move -> LookWithQuery + * POST /integrations/{integration_id}/test -> IntegrationTestResult */ - public func move_look( - /** - * @param {String} look_id Look id to move. - */ - _ look_id: String, + public func test_integration( /** - * @param {String} folder_id Folder id to move to. + * @param {String} integration_id Id of integration */ - _ folder_id: String, + _ integration_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let result: SDKResponse = self.patch("/looks/\(path_look_id)/move", - ["folder_id": folder_id], nil, options) + ) -> SDKResponse { + let path_integration_id = encodeParam(integration_id) + let result: SDKResponse = self.post("/integrations/\(path_integration_id)/test", nil, nil, options) return result } - // MARK LookmlModel: Manage LookML Models + // MARK Look: Run and Manage Looks /** - * ### Get information about all lookml models. + * ### Get information about all active Looks * - * GET /lookml_models -> [LookmlModel] + * Returns an array of **abbreviated Look objects** describing all the looks that the caller has access to. Soft-deleted Looks are **not** included. + * + * Get the **full details** of a specific look by id with [look(id)](#!/Look/look) + * + * Find **soft-deleted looks** with [search_looks()](#!/Look/search_looks) + * + * GET /looks -> [Look] */ - public func all_lookml_models( + public func all_looks( /** * @param {String} fields Requested fields. */ fields: String? = nil, - /** - * @param {Int64} limit Number of results to return. (can be used with offset) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (Defaults to 0 if not set when limit is used) - */ - offset: Int64? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[LookmlModel], SDKError> { - let result: SDKResponse<[LookmlModel], SDKError> = self.get("/lookml_models", - ["fields": fields, "limit": limit, "offset": offset], nil, options) + ) -> SDKResponse<[Look], SDKError> { + let result: SDKResponse<[Look], SDKError> = self.get("/looks", + ["fields": fields], nil, options) return result } /** - * ### Create a lookml model using the specified configuration. + * ### Create a Look * - * POST /lookml_models -> LookmlModel + * To create a look to display query data, first create the query with [create_query()](#!/Query/create_query) + * then assign the query's id to the `query_id` property in the call to `create_look()`. + * + * To place the look into a particular space, assign the space's id to the `space_id` property + * in the call to `create_look()`. + * + * POST /looks -> LookWithQuery */ - public func create_lookml_model( + public func create_look( /** - * @param {WriteLookmlModel} body + * @param {WriteLookWithQuery} body */ - _ body: WriteLookmlModel, + _ body: WriteLookWithQuery, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/lookml_models", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/looks", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Get information about a lookml model. + * ### Search Looks * - * GET /lookml_models/{lookml_model_name} -> LookmlModel + * Returns an **array of Look objects** that match the specified search criteria. + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * + * Get a **single look** by id with [look(id)](#!/Look/look) + * + * GET /looks/search -> [Look] */ - public func lookml_model( + public func search_looks( + /** + * @param {String} id Match look id. + */ + id: String? = nil, + /** + * @param {String} title Match Look title. + */ + title: String? = nil, + /** + * @param {String} description Match Look description. + */ + description: String? = nil, + /** + * @param {Int64} content_favorite_id Select looks with a particular content favorite id + */ + content_favorite_id: Int64? = nil, + /** + * @param {String} space_id Select looks in a particular space. + */ + space_id: String? = nil, + /** + * @param {String} user_id Select looks created by a particular user. + */ + user_id: String? = nil, + /** + * @param {String} view_count Select looks with particular view_count value + */ + view_count: String? = nil, /** - * @param {String} lookml_model_name Name of lookml model. + * @param {Bool} deleted Select soft-deleted looks */ - _ lookml_model_name: String, + deleted: Bool? = nil, + /** + * @param {Int64} query_id Select looks that reference a particular query by query_id + */ + query_id: Int64? = nil, + /** + * @param {Bool} curate Exclude items that exist only in personal spaces other than the users + */ + curate: Bool? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_lookml_model_name = encodeParam(lookml_model_name) - let result: SDKResponse = self.get("/lookml_models/\(path_lookml_model_name)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update a lookml model using the specified configuration. - * - * PATCH /lookml_models/{lookml_model_name} -> LookmlModel - */ - public func update_lookml_model( /** - * @param {String} lookml_model_name Name of lookml model. + * @param {Int64} page Requested page. */ - _ lookml_model_name: String, + page: Int64? = nil, /** - * @param {WriteLookmlModel} body + * @param {Int64} per_page Results per page. */ - _ body: WriteLookmlModel, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_lookml_model_name = encodeParam(lookml_model_name) - let result: SDKResponse = self.patch("/lookml_models/\(path_lookml_model_name)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete a lookml model. - * - * DELETE /lookml_models/{lookml_model_name} -> String - */ - public func delete_lookml_model( + per_page: Int64? = nil, /** - * @param {String} lookml_model_name Name of lookml model. + * @param {String} sorts One or more fields to sort results by. Sortable fields: [:title, :user_id, :id, :created_at, :space_id, :folder_id, :description, :updated_at, :last_updater_id, :view_count, :favorite_count, :content_favorite_id, :deleted, :deleted_at, :last_viewed_at, :last_accessed_at, :query_id] */ - _ lookml_model_name: String, + sorts: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_lookml_model_name = encodeParam(lookml_model_name) - let result: SDKResponse = self.delete("/lookml_models/\(path_lookml_model_name)", nil, nil, options) + ) -> SDKResponse<[Look], SDKError> { + let result: SDKResponse<[Look], SDKError> = self.get("/looks/search", + ["id": id, "title": title, "description": description, "content_favorite_id": content_favorite_id, "space_id": space_id, "user_id": user_id, "view_count": view_count, "deleted": deleted as Any?, "query_id": query_id, "curate": curate as Any?, "fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) return result } /** - * ### Get information about a lookml model explore. + * ### Get a Look. * - * GET /lookml_models/{lookml_model_name}/explores/{explore_name} -> LookmlModelExplore + * Returns detailed information about a Look and its associated Query. + * + * GET /looks/{look_id} -> LookWithQuery */ - public func lookml_model_explore( - /** - * @param {String} lookml_model_name Name of lookml model. - */ - _ lookml_model_name: String, + public func look( /** - * @param {String} explore_name Name of explore. + * @param {Int64} look_id Id of look */ - _ explore_name: String, + _ look_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_lookml_model_name = encodeParam(lookml_model_name) - let path_explore_name = encodeParam(explore_name) - let result: SDKResponse = self.get("/lookml_models/\(path_lookml_model_name)/explores/\(path_explore_name)", + ) -> SDKResponse { + let path_look_id = encodeParam(look_id) + let result: SDKResponse = self.get("/looks/\(path_look_id)", ["fields": fields], nil, options) return result } - - - // MARK Metadata: Connection Metadata Features - /** - * ### Field name suggestions for a model and view - * - * `filters` is a string hash of values, with the key as the field name and the string value as the filter expression: + * ### Modify a Look * - * ```ruby - * {'users.age': '>=60'} - * ``` + * Use this function to modify parts of a look. Property values given in a call to `update_look` are + * applied to the existing look, so there's no need to include properties whose values are not changing. + * It's best to specify only the properties you want to change and leave everything else out + * of your `update_look` call. **Look properties marked 'read-only' will be ignored.** * - * or + * When a user deletes a look in the Looker UI, the look data remains in the database but is + * marked with a deleted flag ("soft-deleted"). Soft-deleted looks can be undeleted (by an admin) + * if the delete was in error. * - * ```ruby - * {'users.age': '<30'} - * ``` + * To soft-delete a look via the API, use [update_look()](#!/Look/update_look) to change the look's `deleted` property to `true`. + * You can undelete a look by calling `update_look` to change the look's `deleted` property to `false`. * - * or + * Soft-deleted looks are excluded from the results of [all_looks()](#!/Look/all_looks) and [search_looks()](#!/Look/search_looks), so they + * essentially disappear from view even though they still reside in the db. + * In API 3.1 and later, you can pass `deleted: true` as a parameter to [search_looks()](#!/3.1/Look/search_looks) to list soft-deleted looks. * - * ```ruby - * {'users.age': '=50'} - * ``` + * NOTE: [delete_look()](#!/Look/delete_look) performs a "hard delete" - the look data is removed from the Looker + * database and destroyed. There is no "undo" for `delete_look()`. * - * GET /models/{model_name}/views/{view_name}/fields/{field_name}/suggestions -> ModelFieldSuggestions + * PATCH /looks/{look_id} -> LookWithQuery */ - public func model_fieldname_suggestions( - /** - * @param {String} model_name Name of model - */ - _ model_name: String, - /** - * @param {String} view_name Name of view - */ - _ view_name: String, + public func update_look( /** - * @param {String} field_name Name of field to use for suggestions + * @param {Int64} look_id Id of look */ - _ field_name: String, + _ look_id: Int64, /** - * @param {String} term Search term pattern (evaluated as as `%term%`) + * @param {WriteLookWithQuery} body */ - term: String? = nil, + _ body: WriteLookWithQuery, /** - * @param {Any} filters Suggestion filters with field name keys and comparison expressions + * @param {String} fields Requested fields. */ - filters: Any? = nil, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_model_name = encodeParam(model_name) - let path_view_name = encodeParam(view_name) - let path_field_name = encodeParam(field_name) - let result: SDKResponse = self.get("/models/\(path_model_name)/views/\(path_view_name)/fields/\(path_field_name)/suggestions", - ["term": term, "filters": filters], nil, options) + ) -> SDKResponse { + let path_look_id = encodeParam(look_id) + let result: SDKResponse = self.patch("/looks/\(path_look_id)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Get a single model + * ### Permanently Delete a Look + * + * This operation **permanently** removes a look from the Looker database. + * + * NOTE: There is no "undo" for this kind of delete. + * + * For information about soft-delete (which can be undone) see [update_look()](#!/Look/update_look). * - * GET /models/{model_name} -> Model + * DELETE /looks/{look_id} -> String */ - public func get_model( + public func delete_look( /** - * @param {String} model_name Name of model + * @param {Int64} look_id Id of look */ - _ model_name: String, + _ look_id: Int64, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_model_name = encodeParam(model_name) - let result: SDKResponse = self.get("/models/\(path_model_name)", nil, nil, options) + ) -> SDKResponse { + let path_look_id = encodeParam(look_id) + let result: SDKResponse = self.delete("/looks/\(path_look_id)", nil, nil, options) return result } /** - * ### List databases available to this connection + * ### Run a Look + * + * Runs a given look's query and returns the results in the requested format. * - * Certain dialects can support multiple databases per single connection. - * If this connection supports multiple databases, the database names will be returned in an array. + * Supported formats: * - * Connections using dialects that do not support multiple databases will return an empty array. + * | result_format | Description + * | :-----------: | :--- | + * | json | Plain json + * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query + * | csv | Comma separated values with a header + * | txt | Tab separated values with a header + * | html | Simple html + * | md | Simple markdown + * | xlsx | MS Excel spreadsheet + * | sql | Returns the generated SQL rather than running the query + * | png | A PNG image of the visualization of the query + * | jpg | A JPG image of the visualization of the query * - * **Note**: [Connection Features](#!/Metadata/connection_features) can be used to determine if a connection supports - * multiple databases. + * GET /looks/{look_id}/run/{result_format} -> String * - * GET /connections/{connection_name}/databases -> [String] + * **Note**: Binary content may be returned by this method. */ - public func connection_databases( + public func run_look( /** - * @param {String} connection_name Name of connection + * @param {Int64} look_id Id of look */ - _ connection_name: String, - options: ITransportSettings? = nil - ) -> SDKResponse<[String], SDKError> { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse<[String], SDKError> = self.get("/connections/\(path_connection_name)/databases", nil, nil, options) - return result - } - - /** - * ### Retrieve metadata features for this connection - * - * Returns a list of feature names with `true` (available) or `false` (not available) - * - * GET /connections/{connection_name}/features -> ConnectionFeatures - */ - public func connection_features( + _ look_id: Int64, /** - * @param {String} connection_name Name of connection + * @param {String} result_format Format of result */ - _ connection_name: String, + _ result_format: String, /** - * @param {String} fields Requested fields. + * @param {Int64} limit Row limit (may override the limit in the saved query). */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.get("/connections/\(path_connection_name)/features", - ["fields": fields], nil, options) - return result - } - - /** - * ### Get the list of schemas and tables for a connection - * - * GET /connections/{connection_name}/schemas -> [Schema] - */ - public func connection_schemas( + limit: Int64? = nil, /** - * @param {String} connection_name Name of connection + * @param {Bool} apply_formatting Apply model-specified formatting to each result. */ - _ connection_name: String, + apply_formatting: Bool? = nil, /** - * @param {String} database For dialects that support multiple databases, optionally identify which to use + * @param {Bool} apply_vis Apply visualization options to results. */ - database: String? = nil, + apply_vis: Bool? = nil, /** - * @param {Bool} cache True to use fetch from cache, false to load fresh + * @param {Bool} cache Get results from cache if available. */ cache: Bool? = nil, /** - * @param {String} fields Requested fields. + * @param {Int64} image_width Render width for image formats. */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[Schema], SDKError> { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse<[Schema], SDKError> = self.get("/connections/\(path_connection_name)/schemas", - ["database": database, "cache": cache as Any?, "fields": fields], nil, options) - return result - } - - /** - * ### Get the list of tables for a schema - * - * For dialects that support multiple databases, optionally identify which to use. If not provided, the default - * database for the connection will be used. - * - * For dialects that do **not** support multiple databases, **do not use** the database parameter - * - * GET /connections/{connection_name}/tables -> [SchemaTables] - */ - public func connection_tables( + image_width: Int64? = nil, /** - * @param {String} connection_name Name of connection + * @param {Int64} image_height Render height for image formats. */ - _ connection_name: String, + image_height: Int64? = nil, /** - * @param {String} database Optional. Name of database to use for the query, only if applicable + * @param {Bool} generate_drill_links Generate drill links (only applicable to 'json_detail' format. */ - database: String? = nil, + generate_drill_links: Bool? = nil, /** - * @param {String} schema_name Optional. Return only tables for this schema + * @param {Bool} force_production Force use of production models even if the user is in development mode. Note that this flag being false does not guarantee development models will be used. */ - schema_name: String? = nil, + force_production: Bool? = nil, /** - * @param {Bool} cache True to fetch from cache, false to load fresh + * @param {Bool} cache_only Retrieve any results from cache even if the results have expired. */ - cache: Bool? = nil, + cache_only: Bool? = nil, /** - * @param {String} fields Requested fields. + * @param {String} path_prefix Prefix to use for drill links (url encoded). */ - fields: String? = nil, + path_prefix: String? = nil, + /** + * @param {Bool} rebuild_pdts Rebuild PDTS used in query. + */ + rebuild_pdts: Bool? = nil, + /** + * @param {Bool} server_table_calcs Perform table calculations on query results + */ + server_table_calcs: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_look_id = encodeParam(look_id) + let path_result_format = encodeParam(result_format) + let result: SDKResponse = self.get("/looks/\(path_look_id)/run/\(path_result_format)", + ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?], nil, options) + return result + } + + + + // MARK LookmlModel: Manage LookML Models + + /** + * ### Get information about all lookml models. + * + * GET /lookml_models -> [LookmlModel] + */ + public func all_lookml_models( /** - * @param {String} table_filter Optional. Return tables with names that contain this value + * @param {String} fields Requested fields. */ - table_filter: String? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[LookmlModel], SDKError> { + let result: SDKResponse<[LookmlModel], SDKError> = self.get("/lookml_models", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create a lookml model using the specified configuration. + * + * POST /lookml_models -> LookmlModel + */ + public func create_lookml_model( /** - * @param {Int64} table_limit Optional. Return tables up to the table_limit + * @param {WriteLookmlModel} body */ - table_limit: Int64? = nil, + _ body: WriteLookmlModel, options: ITransportSettings? = nil - ) -> SDKResponse<[SchemaTables], SDKError> { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse<[SchemaTables], SDKError> = self.get("/connections/\(path_connection_name)/tables", - ["database": database, "schema_name": schema_name, "cache": cache as Any?, "fields": fields, "table_filter": table_filter, "table_limit": table_limit], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/lookml_models", nil, try! self.encode(body), options) return result } /** - * ### Get the columns (and therefore also the tables) in a specific schema + * ### Get information about a lookml model. * - * GET /connections/{connection_name}/columns -> [SchemaColumns] + * GET /lookml_models/{lookml_model_name} -> LookmlModel */ - public func connection_columns( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {String} database For dialects that support multiple databases, optionally identify which to use - */ - database: String? = nil, - /** - * @param {String} schema_name Name of schema to use. - */ - schema_name: String? = nil, - /** - * @param {Bool} cache True to fetch from cache, false to load fresh - */ - cache: Bool? = nil, - /** - * @param {Int64} table_limit limits the tables per schema returned - */ - table_limit: Int64? = nil, + public func lookml_model( /** - * @param {String} table_names only fetch columns for a given (comma-separated) list of tables + * @param {String} lookml_model_name Name of lookml model. */ - table_names: String? = nil, + _ lookml_model_name: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[SchemaColumns], SDKError> { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse<[SchemaColumns], SDKError> = self.get("/connections/\(path_connection_name)/columns", - ["database": database, "schema_name": schema_name, "cache": cache as Any?, "table_limit": table_limit, "table_names": table_names, "fields": fields], nil, options) + ) -> SDKResponse { + let path_lookml_model_name = encodeParam(lookml_model_name) + let result: SDKResponse = self.get("/lookml_models/\(path_lookml_model_name)", + ["fields": fields], nil, options) return result } /** - * ### Search a connection for columns matching the specified name - * - * **Note**: `column_name` must be a valid column name. It is not a search pattern. + * ### Update a lookml model using the specified configuration. * - * GET /connections/{connection_name}/search_columns -> [ColumnSearch] + * PATCH /lookml_models/{lookml_model_name} -> LookmlModel */ - public func connection_search_columns( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, + public func update_lookml_model( /** - * @param {String} column_name Column name to find + * @param {String} lookml_model_name Name of lookml model. */ - column_name: String? = nil, + _ lookml_model_name: String, /** - * @param {String} fields Requested fields. + * @param {WriteLookmlModel} body */ - fields: String? = nil, + _ body: WriteLookmlModel, options: ITransportSettings? = nil - ) -> SDKResponse<[ColumnSearch], SDKError> { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse<[ColumnSearch], SDKError> = self.get("/connections/\(path_connection_name)/search_columns", - ["column_name": column_name, "fields": fields], nil, options) + ) -> SDKResponse { + let path_lookml_model_name = encodeParam(lookml_model_name) + let result: SDKResponse = self.patch("/lookml_models/\(path_lookml_model_name)", nil, try! self.encode(body), options) return result } /** - * ### Connection cost estimating - * - * Assign a `sql` statement to the body of the request. e.g., for Ruby, `{sql: 'select * from users'}` - * - * **Note**: If the connection's dialect has no support for cost estimates, an error will be returned + * ### Delete a lookml model. * - * POST /connections/{connection_name}/cost_estimate -> CostEstimate + * DELETE /lookml_models/{lookml_model_name} -> String */ - public func connection_cost_estimate( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {CreateCostEstimate} body WARNING: no writeable properties found for POST, PUT, or PATCH - */ - _ body: CreateCostEstimate, + public func delete_lookml_model( /** - * @param {String} fields Requested fields. + * @param {String} lookml_model_name Name of lookml model. */ - fields: String? = nil, + _ lookml_model_name: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.post("/connections/\(path_connection_name)/cost_estimate", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse { + let path_lookml_model_name = encodeParam(lookml_model_name) + let result: SDKResponse = self.delete("/lookml_models/\(path_lookml_model_name)", nil, nil, options) return result } - - - // MARK Project: Manage Projects - /** - * ### Generate Lockfile for All LookML Dependencies - * - * Git must have been configured, must be in dev mode and deploy permission required - * - * Install_all is a two step process - * 1. For each remote_dependency in a project the dependency manager will resolve any ambiguous ref. - * 2. The project will then write out a lockfile including each remote_dependency with its resolved ref. + * ### Get information about a lookml model explore. * - * POST /projects/{project_id}/manifest/lock_all -> String + * GET /lookml_models/{lookml_model_name}/explores/{explore_name} -> LookmlModelExplore */ - public func lock_all( + public func lookml_model_explore( /** - * @param {String} project_id Id of project + * @param {String} lookml_model_name Name of lookml model. */ - _ project_id: String, + _ lookml_model_name: String, /** - * @param {String} fields Requested fields + * @param {String} explore_name Name of explore. + */ + _ explore_name: String, + /** + * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.post("/projects/\(path_project_id)/manifest/lock_all", + ) -> SDKResponse { + let path_lookml_model_name = encodeParam(lookml_model_name) + let path_explore_name = encodeParam(explore_name) + let result: SDKResponse = self.get("/lookml_models/\(path_lookml_model_name)/explores/\(path_explore_name)", ["fields": fields], nil, options) return result } + + + // MARK Project: Manage Projects + /** * ### Get All Git Branches * @@ -8065,11 +5782,11 @@ open class LookerSDK: APIMethods { */ server_table_calcs: Bool? = nil, /** - * @param {Int64} image_width DEPRECATED. Render width for image formats. Note that this parameter is always ignored by this method. + * @param {Int64} image_width Render width for image formats. */ image_width: Int64? = nil, /** - * @param {Int64} image_height DEPRECATED. Render height for image formats. Note that this parameter is always ignored by this method. + * @param {Int64} image_height Render height for image formats. */ image_height: Int64? = nil, /** @@ -8196,9 +5913,9 @@ open class LookerSDK: APIMethods { */ public func query( /** - * @param {String} query_id Id of query + * @param {Int64} query_id Id of query */ - _ query_id: String, + _ query_id: Int64, /** * @param {String} fields Requested fields. */ @@ -8306,9 +6023,9 @@ open class LookerSDK: APIMethods { */ public func run_query( /** - * @param {String} query_id Id of query + * @param {Int64} query_id Id of query */ - _ query_id: String, + _ query_id: Int64, /** * @param {String} result_format Format of result */ @@ -8361,16 +6078,12 @@ open class LookerSDK: APIMethods { * @param {Bool} server_table_calcs Perform table calculations on query results */ server_table_calcs: Bool? = nil, - /** - * @param {String} source Specifies the source of this call. - */ - source: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let path_query_id = encodeParam(query_id) let path_result_format = encodeParam(result_format) let result: SDKResponse = self.get("/queries/\(path_query_id)/run/\(path_result_format)", - ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?, "source": source], nil, options) + ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?], nil, options) return result } @@ -8733,6 +6446,60 @@ open class LookerSDK: APIMethods { // MARK RenderTask: Manage Render Tasks + /** + * ### Create a new task to render a lookml dashboard to a document or image. + * + * # DEPRECATED: Use [create_dashboard_render_task()](#!/RenderTask/create_dashboard_render_task) in API 4.0+ + * + * Returns a render task object. + * To check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task). + * Once the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results). + * + * POST /render_tasks/lookml_dashboards/{dashboard_id}/{result_format} -> RenderTask + */ + @available(*, deprecated) + public func create_lookml_dashboard_render_task( + /** + * @param {String} dashboard_id Id of lookml dashboard to render + */ + _ dashboard_id: String, + /** + * @param {String} result_format Output type: pdf, png, or jpg + */ + _ result_format: String, + /** + * @param {CreateDashboardRenderTask} body + */ + _ body: CreateDashboardRenderTask, + /** + * @param {Int64} width Output width in pixels + */ + _ width: Int64, + /** + * @param {Int64} height Output height in pixels + */ + _ height: Int64, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {String} pdf_paper_size Paper size for pdf. Value can be one of: ["letter","legal","tabloid","a0","a1","a2","a3","a4","a5"] + */ + pdf_paper_size: String? = nil, + /** + * @param {Bool} pdf_landscape Whether to render pdf in landscape + */ + pdf_landscape: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_dashboard_id = encodeParam(dashboard_id) + let path_result_format = encodeParam(result_format) + let result: SDKResponse = self.post("/render_tasks/lookml_dashboards/\(path_dashboard_id)/\(path_result_format)", + ["width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape as Any?], try! self.encode(body), options) + return result + } + /** * ### Create a new task to render a look to an image. * @@ -8744,9 +6511,9 @@ open class LookerSDK: APIMethods { */ public func create_look_render_task( /** - * @param {String} look_id Id of look to render + * @param {Int64} look_id Id of look to render */ - _ look_id: String, + _ look_id: Int64, /** * @param {String} result_format Output type: png, or jpg */ @@ -8783,9 +6550,9 @@ open class LookerSDK: APIMethods { */ public func create_query_render_task( /** - * @param {String} query_id Id of the query to render + * @param {Int64} query_id Id of the query to render */ - _ query_id: String, + _ query_id: Int64, /** * @param {String} result_format Output type: png or jpg */ @@ -8822,9 +6589,9 @@ open class LookerSDK: APIMethods { */ public func create_dashboard_render_task( /** - * @param {String} dashboard_id Id of dashboard to render. The ID can be a LookML dashboard also. + * @param {Int64} dashboard_id Id of dashboard to render */ - _ dashboard_id: String, + _ dashboard_id: Int64, /** * @param {String} result_format Output type: pdf, png, or jpg */ @@ -8853,16 +6620,12 @@ open class LookerSDK: APIMethods { * @param {Bool} pdf_landscape Whether to render pdf in landscape paper orientation */ pdf_landscape: Bool? = nil, - /** - * @param {Bool} long_tables Whether or not to expand table vis to full length - */ - long_tables: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let path_dashboard_id = encodeParam(dashboard_id) let path_result_format = encodeParam(result_format) let result: SDKResponse = self.post("/render_tasks/dashboards/\(path_dashboard_id)/\(path_result_format)", - ["width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape as Any?, "long_tables": long_tables as Any?], try! self.encode(body), options) + ["width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape as Any?], try! self.encode(body), options) return result } @@ -8928,45 +6691,6 @@ open class LookerSDK: APIMethods { return result } - /** - * ### Create a new task to render a dashboard element to an image. - * - * Returns a render task object. - * To check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task). - * Once the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results). - * - * POST /render_tasks/dashboard_elements/{dashboard_element_id}/{result_format} -> RenderTask - */ - public func create_dashboard_element_render_task( - /** - * @param {String} dashboard_element_id Id of dashboard element to render: UDD dashboard element would be numeric and LookML dashboard element would be model_name::dashboard_title::lookml_link_id - */ - _ dashboard_element_id: String, - /** - * @param {String} result_format Output type: png or jpg - */ - _ result_format: String, - /** - * @param {Int64} width Output width in pixels - */ - _ width: Int64, - /** - * @param {Int64} height Output height in pixels - */ - _ height: Int64, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_element_id = encodeParam(dashboard_element_id) - let path_result_format = encodeParam(result_format) - let result: SDKResponse = self.post("/render_tasks/dashboard_elements/\(path_dashboard_element_id)/\(path_result_format)", - ["width": width, "height": height, "fields": fields], nil, options) - return result - } - // MARK Role: Manage Roles @@ -9015,9 +6739,9 @@ open class LookerSDK: APIMethods { */ sorts: String? = nil, /** - * @param {String} id Match model set id. + * @param {Int64} id Match model set id. */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} name Match model set name. */ @@ -9048,9 +6772,9 @@ open class LookerSDK: APIMethods { */ public func model_set( /** - * @param {String} model_set_id Id of model set + * @param {Int64} model_set_id Id of model set */ - _ model_set_id: String, + _ model_set_id: Int64, /** * @param {String} fields Requested fields. */ @@ -9070,9 +6794,9 @@ open class LookerSDK: APIMethods { */ public func update_model_set( /** - * @param {String} model_set_id id of model set + * @param {Int64} model_set_id id of model set */ - _ model_set_id: String, + _ model_set_id: Int64, /** * @param {WriteModelSet} body */ @@ -9091,9 +6815,9 @@ open class LookerSDK: APIMethods { */ public func delete_model_set( /** - * @param {String} model_set_id id of model set + * @param {Int64} model_set_id id of model set */ - _ model_set_id: String, + _ model_set_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_model_set_id = encodeParam(model_set_id) @@ -9190,9 +6914,9 @@ open class LookerSDK: APIMethods { */ sorts: String? = nil, /** - * @param {String} id Match permission set id. + * @param {Int64} id Match permission set id. */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} name Match permission set name. */ @@ -9223,9 +6947,9 @@ open class LookerSDK: APIMethods { */ public func permission_set( /** - * @param {String} permission_set_id Id of permission set + * @param {Int64} permission_set_id Id of permission set */ - _ permission_set_id: String, + _ permission_set_id: Int64, /** * @param {String} fields Requested fields. */ @@ -9245,9 +6969,9 @@ open class LookerSDK: APIMethods { */ public func update_permission_set( /** - * @param {String} permission_set_id Id of permission set + * @param {Int64} permission_set_id Id of permission set */ - _ permission_set_id: String, + _ permission_set_id: Int64, /** * @param {WritePermissionSet} body */ @@ -9266,9 +6990,9 @@ open class LookerSDK: APIMethods { */ public func delete_permission_set( /** - * @param {String} permission_set_id Id of permission set + * @param {Int64} permission_set_id Id of permission set */ - _ permission_set_id: String, + _ permission_set_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_permission_set_id = encodeParam(permission_set_id) @@ -9320,9 +7044,9 @@ open class LookerSDK: APIMethods { */ fields: String? = nil, /** - * @param {DelimArray} ids Optional list of ids to get specific roles. + * @param {DelimArray} ids Optional list of ids to get specific roles. */ - ids: DelimArray? = nil, + ids: DelimArray? = nil, options: ITransportSettings? = nil ) -> SDKResponse<[Role], SDKError> { let result: SDKResponse<[Role], SDKError> = self.get("/roles", @@ -9392,9 +7116,9 @@ open class LookerSDK: APIMethods { */ sorts: String? = nil, /** - * @param {String} id Match role id. + * @param {Int64} id Match role id. */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} name Match role name. */ @@ -9409,76 +7133,7 @@ open class LookerSDK: APIMethods { filter_or: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse<[Role], SDKError> { - let result: SDKResponse<[Role], SDKError> = self.get("/roles/search", - ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "name": name, "built_in": built_in as Any?, "filter_or": filter_or as Any?], nil, options) - return result - } - - /** - * ### Search roles include user count - * - * Returns all role records that match the given search criteria, and attaches - * associated user counts. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. - * - * GET /roles/search/with_user_count -> [RoleSearch] - */ - public func search_roles_with_user_count( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Int64} limit Number of results to return (used with `offset`). - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any (used with `limit`). - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {String} id Match role id. - */ - id: String? = nil, - /** - * @param {String} name Match role name. - */ - name: String? = nil, - /** - * @param {Bool} built_in Match roles by built_in status. - */ - built_in: Bool? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression. - */ - filter_or: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[RoleSearch], SDKError> { - let result: SDKResponse<[RoleSearch], SDKError> = self.get("/roles/search/with_user_count", + let result: SDKResponse<[Role], SDKError> = self.get("/roles/search", ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "name": name, "built_in": built_in as Any?, "filter_or": filter_or as Any?], nil, options) return result } @@ -9490,9 +7145,9 @@ open class LookerSDK: APIMethods { */ public func role( /** - * @param {String} role_id id of role + * @param {Int64} role_id id of role */ - _ role_id: String, + _ role_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_role_id = encodeParam(role_id) @@ -9507,9 +7162,9 @@ open class LookerSDK: APIMethods { */ public func update_role( /** - * @param {String} role_id id of role + * @param {Int64} role_id id of role */ - _ role_id: String, + _ role_id: Int64, /** * @param {WriteRole} body */ @@ -9528,9 +7183,9 @@ open class LookerSDK: APIMethods { */ public func delete_role( /** - * @param {String} role_id id of role + * @param {Int64} role_id id of role */ - _ role_id: String, + _ role_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_role_id = encodeParam(role_id) @@ -9545,9 +7200,9 @@ open class LookerSDK: APIMethods { */ public func role_groups( /** - * @param {String} role_id id of role + * @param {Int64} role_id id of role */ - _ role_id: String, + _ role_id: Int64, /** * @param {String} fields Requested fields. */ @@ -9569,9 +7224,9 @@ open class LookerSDK: APIMethods { */ public func set_role_groups( /** - * @param {String} role_id id of role + * @param {Int64} role_id id of role */ - _ role_id: String, + _ role_id: Int64, /** * @param {[String]} body */ @@ -9590,9 +7245,9 @@ open class LookerSDK: APIMethods { */ public func role_users( /** - * @param {String} role_id id of role + * @param {Int64} role_id id of role */ - _ role_id: String, + _ role_id: Int64, /** * @param {String} fields Requested fields. */ @@ -9616,9 +7271,9 @@ open class LookerSDK: APIMethods { */ public func set_role_users( /** - * @param {String} role_id id of role + * @param {Int64} role_id id of role */ - _ role_id: String, + _ role_id: Int64, /** * @param {[String]} body */ @@ -9643,9 +7298,9 @@ open class LookerSDK: APIMethods { */ public func scheduled_plans_for_space( /** - * @param {String} space_id Space Id + * @param {Int64} space_id Space Id */ - _ space_id: String, + _ space_id: Int64, /** * @param {String} fields Requested fields. */ @@ -9667,9 +7322,9 @@ open class LookerSDK: APIMethods { */ public func scheduled_plan( /** - * @param {String} scheduled_plan_id Scheduled Plan Id + * @param {Int64} scheduled_plan_id Scheduled Plan Id */ - _ scheduled_plan_id: String, + _ scheduled_plan_id: Int64, /** * @param {String} fields Requested fields. */ @@ -9730,9 +7385,9 @@ open class LookerSDK: APIMethods { */ public func update_scheduled_plan( /** - * @param {String} scheduled_plan_id Scheduled Plan Id + * @param {Int64} scheduled_plan_id Scheduled Plan Id */ - _ scheduled_plan_id: String, + _ scheduled_plan_id: Int64, /** * @param {WriteScheduledPlan} body */ @@ -9755,9 +7410,9 @@ open class LookerSDK: APIMethods { */ public func delete_scheduled_plan( /** - * @param {String} scheduled_plan_id Scheduled Plan Id + * @param {Int64} scheduled_plan_id Scheduled Plan Id */ - _ scheduled_plan_id: String, + _ scheduled_plan_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_scheduled_plan_id = encodeParam(scheduled_plan_id) @@ -9782,9 +7437,9 @@ open class LookerSDK: APIMethods { */ public func all_scheduled_plans( /** - * @param {String} user_id Return scheduled plans belonging to this user_id. If not provided, returns scheduled plans owned by the caller. + * @param {Int64} user_id Return scheduled plans belonging to this user_id. If not provided, returns scheduled plans owned by the caller. */ - user_id: String? = nil, + user_id: Int64? = nil, /** * @param {String} fields Comma delimited list of field names. If provided, only the fields specified will be included in the response */ @@ -9942,13 +7597,13 @@ open class LookerSDK: APIMethods { */ public func scheduled_plans_for_look( /** - * @param {String} look_id Look Id + * @param {Int64} look_id Look Id */ - _ look_id: String, + _ look_id: Int64, /** - * @param {String} user_id User Id (default is requesting user if not specified) + * @param {Int64} user_id User Id (default is requesting user if not specified) */ - user_id: String? = nil, + user_id: Int64? = nil, /** * @param {String} fields Requested fields. */ @@ -9982,13 +7637,13 @@ open class LookerSDK: APIMethods { */ public func scheduled_plans_for_dashboard( /** - * @param {String} dashboard_id Dashboard Id + * @param {Int64} dashboard_id Dashboard Id */ - _ dashboard_id: String, + _ dashboard_id: Int64, /** - * @param {String} user_id User Id (default is requesting user if not specified) + * @param {Int64} user_id User Id (default is requesting user if not specified) */ - user_id: String? = nil, + user_id: Int64? = nil, /** * @param {Bool} all_users Return scheduled plans belonging to all users for the dashboard */ @@ -10026,9 +7681,9 @@ open class LookerSDK: APIMethods { */ _ lookml_dashboard_id: String, /** - * @param {String} user_id User Id (default is requesting user if not specified) + * @param {Int64} user_id User Id (default is requesting user if not specified) */ - user_id: String? = nil, + user_id: Int64? = nil, /** * @param {String} fields Requested fields. */ @@ -10094,74 +7749,439 @@ open class LookerSDK: APIMethods { * * This API is rate limited to prevent it from being used for relay spam or DoS attacks * - * POST /scheduled_plans/{scheduled_plan_id}/run_once -> ScheduledPlan + * POST /scheduled_plans/{scheduled_plan_id}/run_once -> ScheduledPlan + */ + public func scheduled_plan_run_once_by_id( + /** + * @param {Int64} scheduled_plan_id Id of schedule plan to copy and run + */ + _ scheduled_plan_id: Int64, + /** + * @param {WriteScheduledPlan} body + */ + body: WriteScheduledPlan?, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_scheduled_plan_id = encodeParam(scheduled_plan_id) + let result: SDKResponse = self.post("/scheduled_plans/\(path_scheduled_plan_id)/run_once", nil, try! self.encode(body), options) + return result + } + + + + // MARK Session: Session Information + + /** + * ### Get API Session + * + * Returns information about the current API session, such as which workspace is selected for the session. + * + * GET /session -> ApiSession + */ + public func session( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/session", nil, nil, options) + return result + } + + /** + * ### Update API Session + * + * #### API Session Workspace + * + * You can use this endpoint to change the active workspace for the current API session. + * + * Only one workspace can be active in a session. The active workspace can be changed + * any number of times in a session. + * + * The default workspace for API sessions is the "production" workspace. + * + * All Looker APIs that use projects or lookml models (such as running queries) will + * use the version of project and model files defined by this workspace for the lifetime of the + * current API session or until the session workspace is changed again. + * + * An API session has the same lifetime as the access_token used to authenticate API requests. Each successful + * API login generates a new access_token and a new API session. + * + * If your Looker API client application needs to work in a dev workspace across multiple + * API sessions, be sure to select the dev workspace after each login. + * + * PATCH /session -> ApiSession + */ + public func update_session( + /** + * @param {WriteApiSession} body + */ + _ body: WriteApiSession, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.patch("/session", nil, try! self.encode(body), options) + return result + } + + + + // MARK Space: Manage Spaces + + /** + * ### Search Spaces + * + * Returns an **array of space objects** that match the given search criteria. + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * + * The parameters `limit`, and `offset` are recommended for fetching results in page-size chunks. + * + * Get a **single space** by id with [Space](#!/Space/space) + * + * GET /spaces/search -> [Space] + */ + @available(*, deprecated) + public func search_spaces( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Int64} page Requested page. + */ + page: Int64? = nil, + /** + * @param {Int64} per_page Results per page. + */ + per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {String} name Match Space title. + */ + name: String? = nil, + /** + * @param {Int64} id Match Space id + */ + id: Int64? = nil, + /** + * @param {String} parent_id Filter on a children of a particular space. + */ + parent_id: String? = nil, + /** + * @param {String} creator_id Filter on spaces created by a particular user. + */ + creator_id: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + /** + * @param {Bool} is_shared_root Match is shared root + */ + is_shared_root: Bool? = nil, + /** + * @param {Bool} is_users_root Match is users root + */ + is_users_root: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[Space], SDKError> { + let result: SDKResponse<[Space], SDKError> = self.get("/spaces/search", + ["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 as Any?, "is_shared_root": is_shared_root as Any?, "is_users_root": is_users_root as Any?], nil, options) + return result + } + + /** + * ### Get information about the space with a specific id. + * + * GET /spaces/{space_id} -> Space + */ + @available(*, deprecated) + public func space( + /** + * @param {String} space_id Id of space + */ + _ space_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.get("/spaces/\(path_space_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update the space with a specific id. + * + * PATCH /spaces/{space_id} -> Space + */ + @available(*, deprecated) + public func update_space( + /** + * @param {String} space_id Id of space + */ + _ space_id: String, + /** + * @param {UpdateSpace} body + */ + _ body: UpdateSpace, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.patch("/spaces/\(path_space_id)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Delete the space with a specific id including any children spaces. + * **DANGER** this will delete all looks and dashboards in the space. + * + * DELETE /spaces/{space_id} -> String + */ + @available(*, deprecated) + public func delete_space( + /** + * @param {String} space_id Id of space + */ + _ space_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.delete("/spaces/\(path_space_id)", nil, nil, options) + return result + } + + /** + * ### Get information about all spaces. + * + * In API 3.x, this will not return empty personal spaces, unless they belong to the calling user, + * or if they contain soft-deleted content. + * + * In API 4.0+, all personal spaces will be returned. + * + * GET /spaces -> [SpaceBase] + */ + @available(*, deprecated) + public func all_spaces( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[SpaceBase], SDKError> { + let result: SDKResponse<[SpaceBase], SDKError> = self.get("/spaces", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create a space with specified information. + * + * Caller must have permission to edit the parent space and to create spaces, otherwise the request + * returns 404 Not Found. + * + * POST /spaces -> Space + */ + @available(*, deprecated) + public func create_space( + /** + * @param {CreateSpace} body + */ + _ body: CreateSpace, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/spaces", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get the children of a space. + * + * GET /spaces/{space_id}/children -> [Space] + */ + @available(*, deprecated) + public func space_children( + /** + * @param {String} space_id Id of space + */ + _ space_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Int64} page Requested page. + */ + page: Int64? = nil, + /** + * @param {Int64} per_page Results per page. + */ + per_page: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[Space], SDKError> { + let path_space_id = encodeParam(space_id) + let result: SDKResponse<[Space], SDKError> = self.get("/spaces/\(path_space_id)/children", + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts], nil, options) + return result + } + + /** + * ### Search the children of a space + * + * GET /spaces/{space_id}/children/search -> [Space] */ - public func scheduled_plan_run_once_by_id( + @available(*, deprecated) + public func space_children_search( /** - * @param {String} scheduled_plan_id Id of schedule plan to copy and run + * @param {String} space_id Id of space */ - _ scheduled_plan_id: String, + _ space_id: String, /** - * @param {WriteScheduledPlan} body + * @param {String} fields Requested fields. */ - body: WriteScheduledPlan?, + fields: String? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {String} name Match Space name. + */ + name: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_scheduled_plan_id = encodeParam(scheduled_plan_id) - let result: SDKResponse = self.post("/scheduled_plans/\(path_scheduled_plan_id)/run_once", nil, try! self.encode(body), options) + ) -> SDKResponse<[Space], SDKError> { + let path_space_id = encodeParam(space_id) + let result: SDKResponse<[Space], SDKError> = self.get("/spaces/\(path_space_id)/children/search", + ["fields": fields, "sorts": sorts, "name": name], nil, options) return result } - - - // MARK Session: Session Information - /** - * ### Get API Session - * - * Returns information about the current API session, such as which workspace is selected for the session. + * ### Get the parent of a space * - * GET /session -> ApiSession + * GET /spaces/{space_id}/parent -> Space */ - public func session( + @available(*, deprecated) + public func space_parent( + /** + * @param {String} space_id Id of space + */ + _ space_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/session", nil, nil, options) + ) -> SDKResponse { + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.get("/spaces/\(path_space_id)/parent", + ["fields": fields], nil, options) return result } /** - * ### Update API Session + * ### Get the ancestors of a space * - * #### API Session Workspace - * - * You can use this endpoint to change the active workspace for the current API session. - * - * Only one workspace can be active in a session. The active workspace can be changed - * any number of times in a session. - * - * The default workspace for API sessions is the "production" workspace. - * - * All Looker APIs that use projects or lookml models (such as running queries) will - * use the version of project and model files defined by this workspace for the lifetime of the - * current API session or until the session workspace is changed again. - * - * An API session has the same lifetime as the access_token used to authenticate API requests. Each successful - * API login generates a new access_token and a new API session. + * GET /spaces/{space_id}/ancestors -> [Space] + */ + @available(*, deprecated) + public func space_ancestors( + /** + * @param {String} space_id Id of space + */ + _ space_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[Space], SDKError> { + let path_space_id = encodeParam(space_id) + let result: SDKResponse<[Space], SDKError> = self.get("/spaces/\(path_space_id)/ancestors", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get all looks in a space. + * In API 3.x, this will return all looks in a space, including looks in the trash. + * In API 4.0+, all looks in a space will be returned, excluding looks in the trash. * - * If your Looker API client application needs to work in a dev workspace across multiple - * API sessions, be sure to select the dev workspace after each login. + * GET /spaces/{space_id}/looks -> [LookWithQuery] + */ + @available(*, deprecated) + public func space_looks( + /** + * @param {String} space_id Id of space + */ + _ space_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[LookWithQuery], SDKError> { + let path_space_id = encodeParam(space_id) + let result: SDKResponse<[LookWithQuery], SDKError> = self.get("/spaces/\(path_space_id)/looks", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get the dashboards in a space * - * PATCH /session -> ApiSession + * GET /spaces/{space_id}/dashboards -> [Dashboard] */ - public func update_session( + @available(*, deprecated) + public func space_dashboards( /** - * @param {WriteApiSession} body + * @param {String} space_id Id of space */ - _ body: WriteApiSession, + _ space_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/session", nil, try! self.encode(body), options) + ) -> SDKResponse<[Dashboard], SDKError> { + let path_space_id = encodeParam(space_id) + let result: SDKResponse<[Dashboard], SDKError> = self.get("/spaces/\(path_space_id)/dashboards", + ["fields": fields], nil, options) return result } @@ -10266,9 +8286,9 @@ open class LookerSDK: APIMethods { */ public func search_themes( /** - * @param {String} id Match theme id. + * @param {Int64} id Match theme id. */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} name Match theme name. */ @@ -10517,77 +8537,6 @@ open class LookerSDK: APIMethods { // MARK User: Manage Users - /** - * ### Search email credentials - * - * Returns all credentials_email records that match the given search criteria. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. - * - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * GET /credentials_email/search -> [CredentialsEmailSearch] - */ - public func search_credentials_email( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Int64} limit Number of results to return (used with `offset`). - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any (used with `limit`). - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {String} id Match credentials_email id. - */ - id: String? = nil, - /** - * @param {String} email Match credentials_email email. - */ - email: String? = nil, - /** - * @param {String} emails Find credentials_email that match given emails. - */ - emails: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression. - */ - filter_or: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[CredentialsEmailSearch], SDKError> { - let result: SDKResponse<[CredentialsEmailSearch], SDKError> = self.get("/credentials_email/search", - ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "email": email, "emails": emails, "filter_or": filter_or as Any?], nil, options) - return result - } - /** * ### Get information about the current user; i.e. the user account currently calling the API. * @@ -10616,33 +8565,25 @@ open class LookerSDK: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + * @param {Int64} page Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} per_page Return N rows of data per page */ per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ sorts: String? = nil, /** - * @param {DelimArray} ids Optional list of ids to get specific users. + * @param {DelimArray} ids Optional list of ids to get specific users. */ - ids: DelimArray? = nil, + ids: DelimArray? = nil, options: ITransportSettings? = nil ) -> SDKResponse<[User], SDKError> { let result: SDKResponse<[User], SDKError> = self.get("/users", - ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "ids": ids as Any?], nil, options) + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "ids": ids as Any?], nil, options) return result } @@ -10707,29 +8648,21 @@ open class LookerSDK: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + * @param {Int64} page Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} per_page Return N rows of data per page */ per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ sorts: String? = nil, /** - * @param {String} id Match User Id. + * @param {Int64} id Match User Id. */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} first_name Match First name. */ @@ -10759,17 +8692,17 @@ open class LookerSDK: APIMethods { */ filter_or: Bool? = nil, /** - * @param {String} content_metadata_id Search for users who have access to this content_metadata item + * @param {Int64} content_metadata_id Search for users who have access to this content_metadata item */ - content_metadata_id: String? = nil, + content_metadata_id: Int64? = nil, /** - * @param {String} group_id Search for users who are direct members of this group + * @param {Int64} group_id Search for users who are direct members of this group */ - group_id: String? = nil, + group_id: Int64? = nil, options: ITransportSettings? = nil ) -> SDKResponse<[User], SDKError> { let result: SDKResponse<[User], SDKError> = self.get("/users/search", - ["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 as Any?, "embed_user": embed_user as Any?, "email": email, "is_disabled": is_disabled as Any?, "filter_or": filter_or as Any?, "content_metadata_id": content_metadata_id, "group_id": group_id], nil, options) + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "id": id, "first_name": first_name, "last_name": last_name, "verified_looker_employee": verified_looker_employee as Any?, "embed_user": embed_user as Any?, "email": email, "is_disabled": is_disabled as Any?, "filter_or": filter_or as Any?, "content_metadata_id": content_metadata_id, "group_id": group_id], nil, options) return result } @@ -10793,29 +8726,21 @@ open class LookerSDK: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + * @param {Int64} page Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} per_page Return N rows of data per page */ per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, /** * @param {String} sorts Fields to sort by */ sorts: String? = nil, /** - * @param {String} id Match User Id + * @param {Int64} id Match User Id */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} first_name Match First name */ @@ -10840,7 +8765,7 @@ open class LookerSDK: APIMethods { ) -> SDKResponse<[User], SDKError> { let path_pattern = encodeParam(pattern) let result: SDKResponse<[User], SDKError> = self.get("/users/search/names/\(path_pattern)", - ["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 as Any?, "email": email, "is_disabled": is_disabled as Any?], nil, options) + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "id": id, "first_name": first_name, "last_name": last_name, "verified_looker_employee": verified_looker_employee as Any?, "email": email, "is_disabled": is_disabled as Any?], nil, options) return result } @@ -10855,9 +8780,9 @@ open class LookerSDK: APIMethods { */ public func user( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -10877,9 +8802,9 @@ open class LookerSDK: APIMethods { */ public func update_user( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {WriteUser} body */ @@ -10905,9 +8830,9 @@ open class LookerSDK: APIMethods { */ public func delete_user( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -10980,9 +8905,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_email( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11004,9 +8929,9 @@ open class LookerSDK: APIMethods { */ public func create_user_credentials_email( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {WriteCredentialsEmail} body */ @@ -11032,9 +8957,9 @@ open class LookerSDK: APIMethods { */ public func update_user_credentials_email( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {WriteCredentialsEmail} body */ @@ -11060,9 +8985,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_email( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11079,9 +9004,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_totp( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11103,9 +9028,9 @@ open class LookerSDK: APIMethods { */ public func create_user_credentials_totp( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {CredentialsTotp} body WARNING: no writeable properties found for POST, PUT, or PATCH */ @@ -11131,9 +9056,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_totp( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11150,9 +9075,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_ldap( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11174,9 +9099,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_ldap( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11193,9 +9118,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_google( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11217,9 +9142,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_google( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11236,9 +9161,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_saml( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11260,9 +9185,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_saml( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11279,9 +9204,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_oidc( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11303,9 +9228,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_oidc( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11322,13 +9247,13 @@ open class LookerSDK: APIMethods { */ public func user_credentials_api3( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} credentials_api3_id Id of API Credential + * @param {Int64} credentials_api3_id Id of API Credential */ - _ credentials_api3_id: String, + _ credentials_api3_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11351,13 +9276,13 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_api3( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} credentials_api3_id Id of API Credential + * @param {Int64} credentials_api3_id Id of API Credential */ - _ credentials_api3_id: String, + _ credentials_api3_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11375,9 +9300,9 @@ open class LookerSDK: APIMethods { */ public func all_user_credentials_api3s( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11395,22 +9320,26 @@ open class LookerSDK: APIMethods { * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /users/{user_id}/credentials_api3 -> CreateCredentialsApi3 + * POST /users/{user_id}/credentials_api3 -> CredentialsApi3 */ public func create_user_credentials_api3( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, + /** + * @param {CredentialsApi3} body WARNING: no writeable properties found for POST, PUT, or PATCH + */ + body: CredentialsApi3?, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { + ) -> SDKResponse { let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.post("/users/\(path_user_id)/credentials_api3", - ["fields": fields], nil, options) + let result: SDKResponse = self.post("/users/\(path_user_id)/credentials_api3", + ["fields": fields], try! self.encode(body), options) return result } @@ -11423,13 +9352,13 @@ open class LookerSDK: APIMethods { */ public func user_credentials_embed( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} credentials_embed_id Id of Embedding Credential + * @param {Int64} credentials_embed_id Id of Embedding Credential */ - _ credentials_embed_id: String, + _ credentials_embed_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11452,13 +9381,13 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_embed( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} credentials_embed_id Id of Embedding Credential + * @param {Int64} credentials_embed_id Id of Embedding Credential */ - _ credentials_embed_id: String, + _ credentials_embed_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11476,9 +9405,9 @@ open class LookerSDK: APIMethods { */ public func all_user_credentials_embeds( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11500,9 +9429,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_looker_openid( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11524,9 +9453,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_looker_openid( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11543,13 +9472,13 @@ open class LookerSDK: APIMethods { */ public func user_session( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} session_id Id of Web Login Session + * @param {Int64} session_id Id of Web Login Session */ - _ session_id: String, + _ session_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11572,13 +9501,13 @@ open class LookerSDK: APIMethods { */ public func delete_user_session( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} session_id Id of Web Login Session + * @param {Int64} session_id Id of Web Login Session */ - _ session_id: String, + _ session_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11596,9 +9525,9 @@ open class LookerSDK: APIMethods { */ public func all_user_sessions( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11628,9 +9557,9 @@ open class LookerSDK: APIMethods { */ public func create_user_credentials_email_password_reset( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {Bool} expires Expiring token. */ @@ -11654,9 +9583,9 @@ open class LookerSDK: APIMethods { */ public func user_roles( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11680,9 +9609,9 @@ open class LookerSDK: APIMethods { */ public func set_user_roles( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {[String]} body */ @@ -11721,17 +9650,17 @@ open class LookerSDK: APIMethods { */ public func user_attribute_user_values( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {DelimArray} user_attribute_ids Specific user attributes to request. Omit or leave blank to request all user attributes. + * @param {DelimArray} user_attribute_ids Specific user attributes to request. Omit or leave blank to request all user attributes. */ - user_attribute_ids: DelimArray? = nil, + user_attribute_ids: DelimArray? = nil, /** * @param {Bool} all_values If true, returns all values in the search path instead of just the first value found. Useful for debugging group precedence. */ @@ -11757,13 +9686,13 @@ open class LookerSDK: APIMethods { */ public func set_user_attribute_user_value( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, /** * @param {WriteUserAttributeWithValue} body */ @@ -11788,13 +9717,13 @@ open class LookerSDK: APIMethods { */ public func delete_user_attribute_user_value( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11803,87 +9732,6 @@ open class LookerSDK: APIMethods { return result } - /** - * ### Send a password reset token. - * This will send a password reset email to the user. If a password reset token does not already exist - * for this user, it will create one and then send it. - * If the user has not yet set up their account, it will send a setup email to the user. - * The URL sent in the email is expressed as the 'password_reset_url' of the user's email/password credential object. - * Password reset URLs will expire in 60 minutes. - * This method can be called with an empty body. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * POST /users/{user_id}/credentials_email/send_password_reset -> CredentialsEmail - */ - public func send_user_credentials_email_password_reset( - /** - * @param {String} user_id Id of user - */ - _ user_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.post("/users/\(path_user_id)/credentials_email/send_password_reset", - ["fields": fields], nil, options) - return result - } - - /** - * ### Change a disabled user's email addresses - * - * Allows the admin to change the email addresses for all the user's - * associated credentials. Will overwrite all associated email addresses with - * the value supplied in the 'email' body param. - * The user's 'is_disabled' status must be true. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * POST /users/{user_id}/update_emails -> User - */ - public func wipeout_user_emails( - /** - * @param {String} user_id Id of user - */ - _ user_id: String, - /** - * @param {UserEmailOnly} body - */ - _ body: UserEmailOnly, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.post("/users/\(path_user_id)/update_emails", - ["fields": fields], try! self.encode(body), options) - return result - } - - /** - * Create an embed user from an external user ID - * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled - * - * POST /users/embed_user -> UserPublic - */ - public func create_embed_user( - /** - * @param {CreateEmbedUserRequest} body - */ - _ body: CreateEmbedUserRequest, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/users/embed_user", nil, try! self.encode(body), options) - return result - } - // MARK UserAttribute: Manage User Attributes @@ -11946,9 +9794,9 @@ open class LookerSDK: APIMethods { */ public func user_attribute( /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11968,9 +9816,9 @@ open class LookerSDK: APIMethods { */ public func update_user_attribute( /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, /** * @param {WriteUserAttribute} body */ @@ -11994,9 +9842,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_attribute( /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_attribute_id = encodeParam(user_attribute_id) @@ -12017,9 +9865,9 @@ open class LookerSDK: APIMethods { */ public func all_user_attribute_group_values( /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, /** * @param {String} fields Requested fields. */ @@ -12058,9 +9906,9 @@ open class LookerSDK: APIMethods { */ public func set_user_attribute_group_values( /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, /** * @param {[UserAttributeGroupValue]} body */ diff --git a/swift/looker/sdk/models.swift b/swift/looker/sdk/models.swift index 8ef229916..1801e5a69 100644 --- a/swift/looker/sdk/models.swift +++ b/swift/looker/sdk/models.swift @@ -25,11 +25,11 @@ */ /** - * 327 API models: 245 Spec, 0 Request, 60 Write, 22 Enum + * 258 API models: 190 Spec, 0 Request, 51 Write, 17 Enum */ -/// NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0 +/// NOTE: Do not edit this file generated by Looker SDK Codegen for API 3.1 import Foundation @@ -39,7 +39,6 @@ public struct AccessToken: SDKModel { case _access_token = "access_token" case _token_type = "token_type" case _expires_in = "expires_in" - case _refresh_token = "refresh_token" } private var _access_token: AnyString? /** @@ -68,1589 +67,1624 @@ public struct AccessToken: SDKModel { set { _expires_in = newValue.map(AnyInt.init) } } - private var _refresh_token: AnyString? - /** - * Refresh token which can be used to obtain a new access token (read-only) - */ - public var refresh_token: String? { - get { _refresh_token?.value } - set { _refresh_token = newValue.map(AnyString.init) } - } - - public init(access_token: String? = nil, token_type: String? = nil, expires_in: Int64? = nil, refresh_token: String? = nil) { + public init(access_token: String? = nil, token_type: String? = nil, expires_in: Int64? = nil) { self._access_token = access_token.map(AnyString.init) self._token_type = token_type.map(AnyString.init) self._expires_in = expires_in.map(AnyInt.init) - self._refresh_token = refresh_token.map(AnyString.init) } } -public struct Alert: SDKModel { +/** + * The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: "left", "right". (Enum defined in LookmlModelExploreField) + */ +public enum Align: String, Codable { + case left = "left" + case right = "right" +} + +public struct ApiSession: SDKModel { private enum CodingKeys : String, CodingKey { - case applied_dashboard_filters - case comparison_type - case _cron = "cron" - case _custom_url_base = "custom_url_base" - case _custom_url_params = "custom_url_params" - case _custom_url_label = "custom_url_label" - case show_custom_url - case _custom_title = "custom_title" - case _dashboard_element_id = "dashboard_element_id" - case _description = "description" - case destinations - case field - case followed - case followable - case _id = "id" - case is_disabled - case _disabled_reason = "disabled_reason" - case is_public - case investigative_content_type - case _investigative_content_id = "investigative_content_id" - case _investigative_content_title = "investigative_content_title" - case _lookml_dashboard_id = "lookml_dashboard_id" - case _lookml_link_id = "lookml_link_id" - case _owner_id = "owner_id" - case _owner_display_name = "owner_display_name" - case threshold - case time_series_condition_state + case can + case _workspace_id = "workspace_id" + case _sudo_user_id = "sudo_user_id" } /** - * Filters coming from the dashboard that are applied. Example `[{ "filter_title": "Name", "field_name": "distribution_centers.name", "filter_value": "Los Angeles CA" }]` - */ - public var applied_dashboard_filters: [AlertAppliedDashboardFilter]? - - /** - * 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://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". + * Operations the current user is able to perform on this object (read-only) */ - public var comparison_type: ComparisonType + public var can: StringDictionary? - private var _cron: AnyString + private var _workspace_id: AnyString? /** - * Vixie-Style crontab specification when to run. At minumum, it has to be longer than 15 minute intervals + * The id of active workspace for this session */ - public var cron: String { - get { _cron.value } - set { _cron = AnyString.init(newValue) } + public var workspace_id: String? { + get { _workspace_id?.value } + set { _workspace_id = newValue.map(AnyString.init) } } - private var _custom_url_base: AnyString? + private var _sudo_user_id: AnyInt? /** - * Domain for the custom url selected by the alert creator from the admin defined domain allowlist + * The id of the actual user in the case when this session represents one user sudo'ing as another (read-only) */ - public var custom_url_base: String? { - get { _custom_url_base?.value } - set { _custom_url_base = newValue.map(AnyString.init) } + public var sudo_user_id: Int64? { + get { _sudo_user_id?.value } + set { _sudo_user_id = newValue.map(AnyInt.init) } } - private var _custom_url_params: AnyString? - /** - * Parameters and path for the custom url defined by the alert creator - */ - public var custom_url_params: String? { - get { _custom_url_params?.value } - set { _custom_url_params = newValue.map(AnyString.init) } + public init(can: StringDictionary? = nil, workspace_id: String? = nil, sudo_user_id: Int64? = nil) { + self.can = can + self._workspace_id = workspace_id.map(AnyString.init) + self._sudo_user_id = sudo_user_id.map(AnyInt.init) } - private var _custom_url_label: AnyString? +} + +public struct ApiVersion: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _looker_release_version = "looker_release_version" + case current_version + case supported_versions + case _api_server_url = "api_server_url" + case _web_server_url = "web_server_url" + } + private var _looker_release_version: AnyString? /** - * Label for the custom url defined by the alert creator + * Current Looker release version number (read-only) */ - public var custom_url_label: String? { - get { _custom_url_label?.value } - set { _custom_url_label = newValue.map(AnyString.init) } + public var looker_release_version: String? { + get { _looker_release_version?.value } + set { _looker_release_version = newValue.map(AnyString.init) } } + public var current_version: ApiVersionElement? + /** - * Boolean to determine if the custom url should be used + * Array of versions supported by this Looker instance (read-only) */ - public var show_custom_url: Bool? + public var supported_versions: [ApiVersionElement]? - private var _custom_title: AnyString? + private var _api_server_url: AnyString? /** - * An optional, user-defined title for the alert + * API server base url (read-only) */ - public var custom_title: String? { - get { _custom_title?.value } - set { _custom_title = newValue.map(AnyString.init) } + public var api_server_url: String? { + get { _api_server_url?.value } + set { _api_server_url = newValue.map(AnyString.init) } } - private var _dashboard_element_id: AnyString? + private var _web_server_url: AnyString? /** - * ID of the dashboard element associated with the alert. Refer to [dashboard_element()](#!/Dashboard/DashboardElement) + * Web server base url (read-only) */ - public var dashboard_element_id: String? { - get { _dashboard_element_id?.value } - set { _dashboard_element_id = newValue.map(AnyString.init) } + public var web_server_url: String? { + get { _web_server_url?.value } + set { _web_server_url = newValue.map(AnyString.init) } } - private var _description: AnyString? - /** - * An optional description for the alert. This supplements the title - */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + public init(looker_release_version: String? = nil, current_version: ApiVersionElement? = nil, supported_versions: [ApiVersionElement]? = nil, api_server_url: String? = nil, web_server_url: String? = nil) { + self._looker_release_version = looker_release_version.map(AnyString.init) + self.current_version = current_version + self.supported_versions = supported_versions + self._api_server_url = api_server_url.map(AnyString.init) + self._web_server_url = web_server_url.map(AnyString.init) } - /** - * Array of destinations to send alerts to. Must be the same type of destination. Example `[{ "destination_type": "EMAIL", "email_address": "test@test.com" }]` - */ - public var destinations: [AlertDestination] +} - public var field: AlertField +public struct ApiVersionElement: SDKModel { + private enum CodingKeys : String, CodingKey { + case _version = "version" + case _full_version = "full_version" + case _status = "status" + case swagger_url + } + private var _version: AnyString? /** - * Whether or not the user follows this alert. (read-only) + * Version number as it appears in '/api/xxx/' urls (read-only) */ - public var followed: Bool? + public var version: String? { + get { _version?.value } + set { _version = newValue.map(AnyString.init) } + } + private var _full_version: AnyString? /** - * Whether or not the alert is followable (read-only) + * Full version number including minor version (read-only) */ - public var followable: Bool? + public var full_version: String? { + get { _full_version?.value } + set { _full_version = newValue.map(AnyString.init) } + } - private var _id: AnyString? + private var _status: AnyString? /** - * ID of the alert (read-only) + * Status of this version (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var status: String? { + get { _status?.value } + set { _status = newValue.map(AnyString.init) } } /** - * Whether or not the alert is disabled + * Url for swagger.json for this version (read-only) */ - public var is_disabled: Bool? + public var swagger_url: URI? - private var _disabled_reason: AnyString? - /** - * Reason for disabling alert - */ - public var disabled_reason: String? { - get { _disabled_reason?.value } - set { _disabled_reason = newValue.map(AnyString.init) } + public init(version: String? = nil, full_version: String? = nil, status: String? = nil, swagger_url: URI? = nil) { + self._version = version.map(AnyString.init) + self._full_version = full_version.map(AnyString.init) + self._status = status.map(AnyString.init) + self.swagger_url = swagger_url } - /** - * Whether or not the alert is public - */ - public var is_public: Bool? +} - /** - * The type of the investigative content Valid values are: "dashboard". - */ - public var investigative_content_type: InvestigativeContentType? +public struct BackupConfiguration: SDKModel { - private var _investigative_content_id: AnyString? + private enum CodingKeys : String, CodingKey { + case can + case _type = "type" + case _custom_s3_bucket = "custom_s3_bucket" + case _custom_s3_bucket_region = "custom_s3_bucket_region" + case _custom_s3_key = "custom_s3_key" + case _custom_s3_secret = "custom_s3_secret" + case url + } /** - * The ID of the investigative content. For dashboards, this will be the dashboard ID + * Operations the current user is able to perform on this object (read-only) */ - public var investigative_content_id: String? { - get { _investigative_content_id?.value } - set { _investigative_content_id = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _investigative_content_title: AnyString? + private var _type: AnyString? /** - * The title of the investigative content. (read-only) + * Type of backup: looker-s3 or custom-s3 */ - public var investigative_content_title: String? { - get { _investigative_content_title?.value } - set { _investigative_content_title = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - private var _lookml_dashboard_id: AnyString? + private var _custom_s3_bucket: AnyString? /** - * ID of the LookML dashboard associated with the alert + * Name of bucket for custom-s3 backups */ - public var lookml_dashboard_id: String? { - get { _lookml_dashboard_id?.value } - set { _lookml_dashboard_id = newValue.map(AnyString.init) } + public var custom_s3_bucket: String? { + get { _custom_s3_bucket?.value } + set { _custom_s3_bucket = newValue.map(AnyString.init) } } - private var _lookml_link_id: AnyString? + private var _custom_s3_bucket_region: AnyString? /** - * ID of the LookML dashboard element associated with the alert + * Name of region where the bucket is located */ - public var lookml_link_id: String? { - get { _lookml_link_id?.value } - set { _lookml_link_id = newValue.map(AnyString.init) } + public var custom_s3_bucket_region: String? { + get { _custom_s3_bucket_region?.value } + set { _custom_s3_bucket_region = newValue.map(AnyString.init) } } - private var _owner_id: AnyString + private var _custom_s3_key: AnyString? /** - * User id of alert owner + * (Write-Only) AWS S3 key used for custom-s3 backups */ - public var owner_id: String { - get { _owner_id.value } - set { _owner_id = AnyString.init(newValue) } + public var custom_s3_key: String? { + get { _custom_s3_key?.value } + set { _custom_s3_key = newValue.map(AnyString.init) } } - private var _owner_display_name: AnyString? + private var _custom_s3_secret: AnyString? /** - * Alert owner's display name (read-only) + * (Write-Only) AWS S3 secret used for custom-s3 backups */ - public var owner_display_name: String? { - get { _owner_display_name?.value } - set { _owner_display_name = newValue.map(AnyString.init) } + public var custom_s3_secret: String? { + get { _custom_s3_secret?.value } + set { _custom_s3_secret = newValue.map(AnyString.init) } } /** - * Value of the alert threshold + * Link to get this item (read-only) */ - public var threshold: Double + public var url: URI? - public var time_series_condition_state: AlertConditionState? - - public init(applied_dashboard_filters: [AlertAppliedDashboardFilter]? = nil, comparison_type: ComparisonType, cron: String, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, custom_title: String? = nil, dashboard_element_id: String? = nil, description: String? = nil, destinations: [AlertDestination], field: AlertField, followed: Bool? = nil, followable: Bool? = nil, id: String? = nil, is_disabled: Bool? = nil, disabled_reason: String? = nil, is_public: Bool? = nil, investigative_content_type: InvestigativeContentType? = nil, investigative_content_id: String? = nil, investigative_content_title: String? = nil, lookml_dashboard_id: String? = nil, lookml_link_id: String? = nil, owner_id: String, owner_display_name: String? = nil, threshold: Double, time_series_condition_state: AlertConditionState? = nil) { - self.applied_dashboard_filters = applied_dashboard_filters - self.comparison_type = comparison_type - self._cron = AnyString.init(cron) - 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) - self.show_custom_url = show_custom_url - self._custom_title = custom_title.map(AnyString.init) - self._dashboard_element_id = dashboard_element_id.map(AnyString.init) - self._description = description.map(AnyString.init) - self.destinations = destinations - self.field = field - self.followed = followed - self.followable = followable - self._id = id.map(AnyString.init) - self.is_disabled = is_disabled - self._disabled_reason = disabled_reason.map(AnyString.init) - self.is_public = is_public - self.investigative_content_type = investigative_content_type - self._investigative_content_id = investigative_content_id.map(AnyString.init) - self._investigative_content_title = investigative_content_title.map(AnyString.init) - self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) - self._lookml_link_id = lookml_link_id.map(AnyString.init) - self._owner_id = AnyString.init(owner_id) - self._owner_display_name = owner_display_name.map(AnyString.init) - self.threshold = threshold - self.time_series_condition_state = time_series_condition_state + public init(can: StringDictionary? = nil, type: String? = nil, custom_s3_bucket: String? = nil, custom_s3_bucket_region: String? = nil, custom_s3_key: String? = nil, custom_s3_secret: String? = nil, url: URI? = nil) { + self.can = can + self._type = type.map(AnyString.init) + self._custom_s3_bucket = custom_s3_bucket.map(AnyString.init) + self._custom_s3_bucket_region = custom_s3_bucket_region.map(AnyString.init) + self._custom_s3_key = custom_s3_key.map(AnyString.init) + self._custom_s3_secret = custom_s3_secret.map(AnyString.init) + self.url = url } - public init(applied_dashboard_filters: [AlertAppliedDashboardFilter]? = nil, _ comparison_type: ComparisonType, _ cron: String, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, custom_title: String? = nil, dashboard_element_id: String? = nil, description: String? = nil, _ destinations: [AlertDestination], _ field: AlertField, followed: Bool? = nil, followable: Bool? = nil, id: String? = nil, is_disabled: Bool? = nil, disabled_reason: String? = nil, is_public: Bool? = nil, investigative_content_type: InvestigativeContentType? = nil, investigative_content_id: String? = nil, investigative_content_title: String? = nil, lookml_dashboard_id: String? = nil, lookml_link_id: String? = nil, _ owner_id: String, owner_display_name: String? = nil, _ threshold: Double, time_series_condition_state: AlertConditionState? = nil) { - self.init(applied_dashboard_filters: applied_dashboard_filters, comparison_type: comparison_type, cron: cron, custom_url_base: custom_url_base, custom_url_params: custom_url_params, custom_url_label: custom_url_label, show_custom_url: show_custom_url, custom_title: custom_title, dashboard_element_id: dashboard_element_id, description: description, destinations: destinations, field: field, followed: followed, followable: followable, id: id, is_disabled: is_disabled, disabled_reason: disabled_reason, is_public: is_public, investigative_content_type: investigative_content_type, investigative_content_id: investigative_content_id, investigative_content_title: investigative_content_title, lookml_dashboard_id: lookml_dashboard_id, lookml_link_id: lookml_link_id, owner_id: owner_id, owner_display_name: owner_display_name, threshold: threshold, time_series_condition_state: time_series_condition_state) - } +} +/** + * Field category Valid values are: "parameter", "filter", "measure", "dimension". (Enum defined in LookmlModelExploreField) + */ +public enum Category: String, Codable { + case parameter = "parameter" + case filter = "filter" + case measure = "measure" + case dimension = "dimension" } -public struct AlertAppliedDashboardFilter: SDKModel { +public struct ColorCollection: SDKModel { private enum CodingKeys : String, CodingKey { - case _filter_title = "filter_title" - case _field_name = "field_name" - case _filter_value = "filter_value" - case _filter_description = "filter_description" + case _id = "id" + case _label = "label" + case categoricalPalettes + case sequentialPalettes + case divergingPalettes } - private var _filter_title: AnyString + private var _id: AnyString? /** - * Field Title. Refer to `DashboardFilter.title` in [DashboardFilter](#!/types/DashboardFilter). Example `Name` + * Unique Id (read-only) */ - public var filter_title: String { - get { _filter_title.value } - set { _filter_title = AnyString.init(newValue) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _field_name: AnyString + private var _label: AnyString? /** - * Field Name. Refer to `DashboardFilter.dimension` in [DashboardFilter](#!/types/DashboardFilter). Example `distribution_centers.name` + * Label of color collection */ - public var field_name: String { - get { _field_name.value } - set { _field_name = AnyString.init(newValue) } + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } } - private var _filter_value: AnyString /** - * Field Value. [Filter Expressions](https://cloud.google.com/looker/docs/reference/filter-expressions). Example `Los Angeles CA` + * Array of categorical palette definitions */ - public var filter_value: String { - get { _filter_value.value } - set { _filter_value = AnyString.init(newValue) } - } + public var categoricalPalettes: [DiscretePalette]? - private var _filter_description: AnyString? /** - * Human Readable Filter Description. This may be null or auto-generated. Example `is Los Angeles CA` (read-only) + * Array of discrete palette definitions */ - public var filter_description: String? { - get { _filter_description?.value } - set { _filter_description = newValue.map(AnyString.init) } - } - - public init(filter_title: String, field_name: String, filter_value: String, filter_description: String? = nil) { - self._filter_title = AnyString.init(filter_title) - self._field_name = AnyString.init(field_name) - self._filter_value = AnyString.init(filter_value) - self._filter_description = filter_description.map(AnyString.init) - } + public var sequentialPalettes: [ContinuousPalette]? - public init(_ filter_title: String, _ field_name: String, _ filter_value: String, filter_description: String? = nil) { - self.init(filter_title: filter_title, field_name: field_name, filter_value: filter_value, filter_description: filter_description) + /** + * Array of diverging palette definitions + */ + public var divergingPalettes: [ContinuousPalette]? + + public init(id: String? = nil, label: String? = nil, categoricalPalettes: [DiscretePalette]? = nil, sequentialPalettes: [ContinuousPalette]? = nil, divergingPalettes: [ContinuousPalette]? = nil) { + self._id = id.map(AnyString.init) + self._label = label.map(AnyString.init) + self.categoricalPalettes = categoricalPalettes + self.sequentialPalettes = sequentialPalettes + self.divergingPalettes = divergingPalettes } } -public struct AlertConditionState: SDKModel { +public struct ColorStop: SDKModel { private enum CodingKeys : String, CodingKey { - case _previous_time_series_id = "previous_time_series_id" - case _latest_time_series_id = "latest_time_series_id" + case _color = "color" + case _offset = "offset" } - private var _previous_time_series_id: AnyString? + private var _color: AnyString? /** - * (Write-Only) The second latest time string the alert has seen. + * CSS color string */ - public var previous_time_series_id: String? { - get { _previous_time_series_id?.value } - set { _previous_time_series_id = newValue.map(AnyString.init) } + public var color: String? { + get { _color?.value } + set { _color = newValue.map(AnyString.init) } } - private var _latest_time_series_id: AnyString? + private var _offset: AnyInt? /** - * (Write-Only) Latest time string the alert has seen. + * Offset in continuous palette (0 to 100) */ - public var latest_time_series_id: String? { - get { _latest_time_series_id?.value } - set { _latest_time_series_id = newValue.map(AnyString.init) } + public var offset: Int64? { + get { _offset?.value } + set { _offset = newValue.map(AnyInt.init) } } - public init(previous_time_series_id: String? = nil, latest_time_series_id: String? = nil) { - self._previous_time_series_id = previous_time_series_id.map(AnyString.init) - self._latest_time_series_id = latest_time_series_id.map(AnyString.init) + public init(color: String? = nil, offset: Int64? = nil) { + self._color = color.map(AnyString.init) + self._offset = offset.map(AnyInt.init) } } -public struct AlertDestination: SDKModel { +public struct ContentFavorite: SDKModel { private enum CodingKeys : String, CodingKey { - case destination_type - case _email_address = "email_address" - case _action_hub_integration_id = "action_hub_integration_id" - case _action_hub_form_params_json = "action_hub_form_params_json" + case _id = "id" + case _user_id = "user_id" + case _content_metadata_id = "content_metadata_id" + case _look_id = "look_id" + case _dashboard_id = "dashboard_id" + case look + case dashboard } + private var _id: AnyInt? /** - * Type of destination that the alert will be sent to Valid values are: "EMAIL", "ACTION_HUB". + * Unique Id (read-only) */ - public var destination_type: DestinationType + public var id: Int64? { + get { _id?.value } + set { _id = newValue.map(AnyInt.init) } + } - private var _email_address: AnyString? + private var _user_id: AnyInt? /** - * Email address for the 'email' type + * User Id which owns this ContentFavorite */ - public var email_address: String? { - get { _email_address?.value } - set { _email_address = newValue.map(AnyString.init) } + public var user_id: Int64? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyInt.init) } } - private var _action_hub_integration_id: AnyString? + private var _content_metadata_id: AnyInt? /** - * Action hub integration id for the 'action_hub' type. [Integration](#!/types/Integration) + * Content Metadata Id associated with this ContentFavorite */ - public var action_hub_integration_id: String? { - get { _action_hub_integration_id?.value } - set { _action_hub_integration_id = newValue.map(AnyString.init) } + public var content_metadata_id: Int64? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyInt.init) } } - private var _action_hub_form_params_json: AnyString? + private var _look_id: AnyInt? /** - * Action hub form params json for the 'action_hub' type [IntegrationParam](#!/types/IntegrationParam) + * Id of a look (read-only) */ - public var action_hub_form_params_json: String? { - get { _action_hub_form_params_json?.value } - set { _action_hub_form_params_json = newValue.map(AnyString.init) } + public var look_id: Int64? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyInt.init) } } - public init(destination_type: DestinationType, email_address: String? = nil, action_hub_integration_id: String? = nil, action_hub_form_params_json: String? = nil) { - self.destination_type = destination_type - self._email_address = email_address.map(AnyString.init) - self._action_hub_integration_id = action_hub_integration_id.map(AnyString.init) - self._action_hub_form_params_json = action_hub_form_params_json.map(AnyString.init) + private var _dashboard_id: AnyInt? + /** + * Id of a dashboard (read-only) + */ + public var dashboard_id: Int64? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyInt.init) } } - public init(_ destination_type: DestinationType, email_address: String? = nil, action_hub_integration_id: String? = nil, action_hub_form_params_json: String? = nil) { - self.init(destination_type: destination_type, email_address: email_address, action_hub_integration_id: action_hub_integration_id, action_hub_form_params_json: action_hub_form_params_json) + public var look: LookBasic? + + public var dashboard: DashboardBase? + + public init(id: Int64? = nil, user_id: Int64? = nil, content_metadata_id: Int64? = nil, look_id: Int64? = nil, dashboard_id: Int64? = nil, look: LookBasic? = nil, dashboard: DashboardBase? = nil) { + self._id = id.map(AnyInt.init) + self._user_id = user_id.map(AnyInt.init) + self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self._look_id = look_id.map(AnyInt.init) + self._dashboard_id = dashboard_id.map(AnyInt.init) + self.look = look + self.dashboard = dashboard } } -public struct AlertField: SDKModel { +public struct ContentMeta: SDKModel { private enum CodingKeys : String, CodingKey { - case _title = "title" + case can + case _id = "id" case _name = "name" - case filter + case _parent_id = "parent_id" + case _dashboard_id = "dashboard_id" + case _look_id = "look_id" + case _folder_id = "folder_id" + case _content_type = "content_type" + case inherits + case _inheriting_id = "inheriting_id" + case _slug = "slug" + case _space_id = "space_id" } - private var _title: AnyString /** - * Field's title. Usually auto-generated to reflect field name and its filters + * Operations the current user is able to perform on this object (read-only) */ - public var title: String { - get { _title.value } - set { _title = AnyString.init(newValue) } - } + public var can: StringDictionary? - private var _name: AnyString + private var _id: AnyInt? /** - * Field's name. Has the format `.` Refer to [docs](https://cloud.google.com/looker/docs/sharing-and-publishing/creating-alerts) for more details + * Unique Id (read-only) */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } + public var id: Int64? { + get { _id?.value } + set { _id = newValue.map(AnyInt.init) } } + private var _name: AnyString? /** - * (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 }] }` + * Name or title of underlying content (read-only) */ - public var filter: [AlertFieldFilter]? - - public init(title: String, name: String, filter: [AlertFieldFilter]? = nil) { - self._title = AnyString.init(title) - self._name = AnyString.init(name) - self.filter = filter - } - - public init(_ title: String, _ name: String, filter: [AlertFieldFilter]? = nil) { - self.init(title: title, name: name, filter: filter) + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } -} - -public struct AlertFieldFilter: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _field_name = "field_name" - case field_value - case _filter_value = "filter_value" - } - private var _field_name: AnyString + private var _parent_id: AnyInt? /** - * Field Name. Has format `.` + * Id of Parent Content (read-only) */ - public var field_name: String { - get { _field_name.value } - set { _field_name = AnyString.init(newValue) } + public var parent_id: Int64? { + get { _parent_id?.value } + set { _parent_id = newValue.map(AnyInt.init) } } + private var _dashboard_id: AnyString? /** - * Field Value. Depends on the type of field - numeric or string. For [location](https://cloud.google.com/looker/docs/reference/field-reference/dimension-type-reference#location) type, it's a list of floats. Example `[1.0, 56.0]` - */ - public var field_value: AnyCodable - - private var _filter_value: AnyString? - /** - * Filter Value. Usually null except for [location](https://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'` + * Id of associated dashboard when content_type is "dashboard" (read-only) */ - public var filter_value: String? { - get { _filter_value?.value } - set { _filter_value = newValue.map(AnyString.init) } - } - - public init(field_name: String, field_value: AnyCodable, filter_value: String? = nil) { - self._field_name = AnyString.init(field_name) - self.field_value = field_value - self._filter_value = filter_value.map(AnyString.init) - } - - public init(_ field_name: String, _ field_value: AnyCodable, filter_value: String? = nil) { - self.init(field_name: field_name, field_value: field_value, filter_value: filter_value) + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } -} - -public struct AlertNotifications: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _notification_id = "notification_id" - case _alert_condition_id = "alert_condition_id" - case _user_id = "user_id" - case is_read - case field_value - case threshold_value - case _ran_at = "ran_at" - case alert - } - private var _notification_id: AnyString? + private var _look_id: AnyInt? /** - * ID of the notification (read-only) + * Id of associated look when content_type is "look" (read-only) */ - public var notification_id: String? { - get { _notification_id?.value } - set { _notification_id = newValue.map(AnyString.init) } + public var look_id: Int64? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyInt.init) } } - private var _alert_condition_id: AnyString? + private var _folder_id: AnyString? /** - * ID of the alert (read-only) + * Id of associated folder when content_type is "space" (read-only) */ - public var alert_condition_id: String? { - get { _alert_condition_id?.value } - set { _alert_condition_id = newValue.map(AnyString.init) } + public var folder_id: String? { + get { _folder_id?.value } + set { _folder_id = newValue.map(AnyString.init) } } - private var _user_id: AnyString? + private var _content_type: AnyString? /** - * ID of the user (read-only) + * Content Type ("dashboard", "look", or "space") (read-only) */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + public var content_type: String? { + get { _content_type?.value } + set { _content_type = newValue.map(AnyString.init) } } /** - * Read state of the notification + * Whether content inherits its access levels from parent */ - public var is_read: Bool? + public var inherits: Bool? + private var _inheriting_id: AnyInt? /** - * The value of the field on which the alert condition is set (read-only) + * Id of Inherited Content (read-only) */ - public var field_value: Double? + public var inheriting_id: Int64? { + get { _inheriting_id?.value } + set { _inheriting_id = newValue.map(AnyInt.init) } + } + private var _slug: AnyString? /** - * The value of the threshold which triggers the alert notification (read-only) + * Content Slug (read-only) */ - public var threshold_value: Double? + public var slug: String? { + get { _slug?.value } + set { _slug = newValue.map(AnyString.init) } + } - private var _ran_at: AnyString? + private var _space_id: AnyString? /** - * The time at which the alert query ran (read-only) + * Id of associated space when content_type is "space" (read-only) */ - public var ran_at: String? { - get { _ran_at?.value } - set { _ran_at = newValue.map(AnyString.init) } + public var space_id: String? { + get { _space_id?.value } + set { _space_id = newValue.map(AnyString.init) } } - public var alert: MobilePayload? - - public init(notification_id: String? = nil, alert_condition_id: String? = nil, user_id: String? = nil, is_read: Bool? = nil, field_value: Double? = nil, threshold_value: Double? = nil, ran_at: String? = nil, alert: MobilePayload? = nil) { - self._notification_id = notification_id.map(AnyString.init) - self._alert_condition_id = alert_condition_id.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) - self.is_read = is_read - self.field_value = field_value - self.threshold_value = threshold_value - self._ran_at = ran_at.map(AnyString.init) - self.alert = alert + public init(can: StringDictionary? = nil, id: Int64? = nil, name: String? = nil, parent_id: Int64? = nil, dashboard_id: String? = nil, look_id: Int64? = nil, folder_id: String? = nil, content_type: String? = nil, inherits: Bool? = nil, inheriting_id: Int64? = nil, slug: String? = nil, space_id: String? = nil) { + self.can = can + self._id = id.map(AnyInt.init) + self._name = name.map(AnyString.init) + self._parent_id = parent_id.map(AnyInt.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self._look_id = look_id.map(AnyInt.init) + self._folder_id = folder_id.map(AnyString.init) + self._content_type = content_type.map(AnyString.init) + self.inherits = inherits + self._inheriting_id = inheriting_id.map(AnyInt.init) + self._slug = slug.map(AnyString.init) + self._space_id = space_id.map(AnyString.init) } } -public struct AlertPatch: SDKModel { +/** + * WARNING: no writeable properties found for POST, PUT, or PATCH + */ +public struct ContentMetaGroupUser: SDKModel { private enum CodingKeys : String, CodingKey { - case _owner_id = "owner_id" - case is_disabled - case _disabled_reason = "disabled_reason" - case is_public - case threshold + case can + case _id = "id" + case _content_metadata_id = "content_metadata_id" + case permission_type + case _group_id = "group_id" + case _user_id = "user_id" } - private var _owner_id: AnyString? /** - * New owner ID of the alert + * Operations the current user is able to perform on this object (read-only) */ - public var owner_id: String? { - get { _owner_id?.value } - set { _owner_id = newValue.map(AnyString.init) } - } + public var can: StringDictionary? + private var _id: AnyString? /** - * Set alert enabled or disabled + * Unique Id (read-only) */ - public var is_disabled: Bool? + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } - private var _disabled_reason: AnyString? + private var _content_metadata_id: AnyString? /** - * The reason this alert is disabled + * Id of associated Content Metadata (read-only) */ - public var disabled_reason: String? { - get { _disabled_reason?.value } - set { _disabled_reason = newValue.map(AnyString.init) } + public var content_metadata_id: String? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyString.init) } } /** - * Set alert public or private + * Type of permission: "view" or "edit" Valid values are: "view", "edit". (read-only) */ - public var is_public: Bool? + public var permission_type: PermissionType? + private var _group_id: AnyInt? /** - * New threshold value + * ID of associated group (read-only) */ - public var threshold: Double? + public var group_id: Int64? { + get { _group_id?.value } + set { _group_id = newValue.map(AnyInt.init) } + } - public init(owner_id: String? = nil, is_disabled: Bool? = nil, disabled_reason: String? = nil, is_public: Bool? = nil, threshold: Double? = nil) { - self._owner_id = owner_id.map(AnyString.init) - self.is_disabled = is_disabled - self._disabled_reason = disabled_reason.map(AnyString.init) - self.is_public = is_public - self.threshold = threshold + private var _user_id: AnyInt? + /** + * ID of associated user (read-only) + */ + public var user_id: Int64? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyInt.init) } } -} + public init(can: StringDictionary? = nil, id: String? = nil, content_metadata_id: String? = nil, permission_type: PermissionType? = nil, group_id: Int64? = nil, user_id: Int64? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) + self.permission_type = permission_type + self._group_id = group_id.map(AnyInt.init) + self._user_id = user_id.map(AnyInt.init) + } -/** - * The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: "left", "right". (Enum defined in LookmlModelExploreField) - */ -public enum Align: String, Codable { - case left = "left" - case right = "right" } -public struct ApiSession: SDKModel { +public struct ContentValidation: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _workspace_id = "workspace_id" - case _sudo_user_id = "sudo_user_id" + case content_with_errors + case computation_time + case _total_looks_validated = "total_looks_validated" + case _total_dashboard_elements_validated = "total_dashboard_elements_validated" + case _total_dashboard_filters_validated = "total_dashboard_filters_validated" + case _total_scheduled_plans_validated = "total_scheduled_plans_validated" + case _total_alerts_validated = "total_alerts_validated" + case _total_explores_validated = "total_explores_validated" } /** - * Operations the current user is able to perform on this object (read-only) + * A list of content errors (read-only) */ - public var can: StringDictionary? + public var content_with_errors: [ContentValidatorError]? - private var _workspace_id: AnyString? /** - * The id of active workspace for this session + * Duration of content validation in seconds (read-only) */ - public var workspace_id: String? { - get { _workspace_id?.value } - set { _workspace_id = newValue.map(AnyString.init) } - } + public var computation_time: Float? - private var _sudo_user_id: AnyString? + private var _total_looks_validated: AnyInt? /** - * The id of the actual user in the case when this session represents one user sudo'ing as another (read-only) + * The number of looks validated (read-only) */ - public var sudo_user_id: String? { - get { _sudo_user_id?.value } - set { _sudo_user_id = newValue.map(AnyString.init) } + public var total_looks_validated: Int64? { + get { _total_looks_validated?.value } + set { _total_looks_validated = newValue.map(AnyInt.init) } } - public init(can: StringDictionary? = nil, workspace_id: String? = nil, sudo_user_id: String? = nil) { - self.can = can - self._workspace_id = workspace_id.map(AnyString.init) - self._sudo_user_id = sudo_user_id.map(AnyString.init) + private var _total_dashboard_elements_validated: AnyInt? + /** + * The number of dashboard elements validated (read-only) + */ + public var total_dashboard_elements_validated: Int64? { + get { _total_dashboard_elements_validated?.value } + set { _total_dashboard_elements_validated = newValue.map(AnyInt.init) } } -} + private var _total_dashboard_filters_validated: AnyInt? + /** + * The number of dashboard filters validated (read-only) + */ + public var total_dashboard_filters_validated: Int64? { + get { _total_dashboard_filters_validated?.value } + set { _total_dashboard_filters_validated = newValue.map(AnyInt.init) } + } -public struct ApiVersion: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _looker_release_version = "looker_release_version" - case current_version - case supported_versions - case _api_server_url = "api_server_url" - case _web_server_url = "web_server_url" - } - private var _looker_release_version: AnyString? + private var _total_scheduled_plans_validated: AnyInt? /** - * Current Looker release version number (read-only) + * The number of scheduled plans validated (read-only) */ - public var looker_release_version: String? { - get { _looker_release_version?.value } - set { _looker_release_version = newValue.map(AnyString.init) } + public var total_scheduled_plans_validated: Int64? { + get { _total_scheduled_plans_validated?.value } + set { _total_scheduled_plans_validated = newValue.map(AnyInt.init) } } - public var current_version: ApiVersionElement? - - /** - * Array of versions supported by this Looker instance (read-only) - */ - public var supported_versions: [ApiVersionElement]? - - private var _api_server_url: AnyString? + private var _total_alerts_validated: AnyInt? /** - * API server base url (read-only) + * The number of alerts validated (read-only) */ - public var api_server_url: String? { - get { _api_server_url?.value } - set { _api_server_url = newValue.map(AnyString.init) } + public var total_alerts_validated: Int64? { + get { _total_alerts_validated?.value } + set { _total_alerts_validated = newValue.map(AnyInt.init) } } - private var _web_server_url: AnyString? + private var _total_explores_validated: AnyInt? /** - * Web server base url (read-only) + * The number of explores used across all content validated (read-only) */ - public var web_server_url: String? { - get { _web_server_url?.value } - set { _web_server_url = newValue.map(AnyString.init) } + public var total_explores_validated: Int64? { + get { _total_explores_validated?.value } + set { _total_explores_validated = newValue.map(AnyInt.init) } } - public init(looker_release_version: String? = nil, current_version: ApiVersionElement? = nil, supported_versions: [ApiVersionElement]? = nil, api_server_url: String? = nil, web_server_url: String? = nil) { - self._looker_release_version = looker_release_version.map(AnyString.init) - self.current_version = current_version - self.supported_versions = supported_versions - self._api_server_url = api_server_url.map(AnyString.init) - self._web_server_url = web_server_url.map(AnyString.init) + public init(content_with_errors: [ContentValidatorError]? = nil, computation_time: Float? = nil, total_looks_validated: Int64? = nil, total_dashboard_elements_validated: Int64? = nil, total_dashboard_filters_validated: Int64? = nil, total_scheduled_plans_validated: Int64? = nil, total_alerts_validated: Int64? = nil, total_explores_validated: Int64? = nil) { + self.content_with_errors = content_with_errors + self.computation_time = computation_time + self._total_looks_validated = total_looks_validated.map(AnyInt.init) + self._total_dashboard_elements_validated = total_dashboard_elements_validated.map(AnyInt.init) + self._total_dashboard_filters_validated = total_dashboard_filters_validated.map(AnyInt.init) + self._total_scheduled_plans_validated = total_scheduled_plans_validated.map(AnyInt.init) + self._total_alerts_validated = total_alerts_validated.map(AnyInt.init) + self._total_explores_validated = total_explores_validated.map(AnyInt.init) } } -public struct ApiVersionElement: SDKModel { +public struct ContentValidationAlert: SDKModel { private enum CodingKeys : String, CodingKey { - case _version = "version" - case _full_version = "full_version" - case _status = "status" - case _swagger_url = "swagger_url" + case _id = "id" + case _lookml_dashboard_id = "lookml_dashboard_id" + case _lookml_link_id = "lookml_link_id" + case _custom_url_base = "custom_url_base" + case _custom_url_params = "custom_url_params" + case _custom_url_label = "custom_url_label" + case show_custom_url + case _custom_title = "custom_title" } - private var _version: AnyString? + private var _id: AnyInt? /** - * Version number as it appears in '/api/xxx/' urls (read-only) + * ID of the alert */ - public var version: String? { - get { _version?.value } - set { _version = newValue.map(AnyString.init) } + public var id: Int64? { + get { _id?.value } + set { _id = newValue.map(AnyInt.init) } } - private var _full_version: AnyString? + private var _lookml_dashboard_id: AnyString? /** - * Full version number including minor version (read-only) + * ID of the LookML dashboard associated with the alert */ - public var full_version: String? { - get { _full_version?.value } - set { _full_version = newValue.map(AnyString.init) } + public var lookml_dashboard_id: String? { + get { _lookml_dashboard_id?.value } + set { _lookml_dashboard_id = newValue.map(AnyString.init) } } - private var _status: AnyString? + private var _lookml_link_id: AnyString? /** - * Status of this version (read-only) + * ID of the LookML dashboard element associated with the alert */ - public var status: String? { - get { _status?.value } - set { _status = newValue.map(AnyString.init) } + public var lookml_link_id: String? { + get { _lookml_link_id?.value } + set { _lookml_link_id = newValue.map(AnyString.init) } } - private var _swagger_url: AnyString? + private var _custom_url_base: AnyString? /** - * Url for swagger.json for this version (read-only) + * Domain for the custom url selected by the alert creator from the admin defined domain allowlist */ - public var swagger_url: String? { - get { _swagger_url?.value } - set { _swagger_url = newValue.map(AnyString.init) } - } - - public init(version: String? = nil, full_version: String? = nil, status: String? = nil, swagger_url: String? = nil) { - self._version = version.map(AnyString.init) - self._full_version = full_version.map(AnyString.init) - self._status = status.map(AnyString.init) - self._swagger_url = swagger_url.map(AnyString.init) + public var custom_url_base: String? { + get { _custom_url_base?.value } + set { _custom_url_base = newValue.map(AnyString.init) } } -} - -public struct Artifact: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _key = "key" - case _value = "value" - case _content_type = "content_type" - case _version = "version" - case _namespace = "namespace" - case created_at - case updated_at - case _value_size = "value_size" - case _created_by_userid = "created_by_userid" - case _updated_by_userid = "updated_by_userid" - } - private var _key: AnyString + private var _custom_url_params: AnyString? /** - * Key of value to store. Namespace + Key must be unique. + * Parameters and path for the custom url defined by the alert creator */ - public var key: String { - get { _key.value } - set { _key = AnyString.init(newValue) } + public var custom_url_params: String? { + get { _custom_url_params?.value } + set { _custom_url_params = newValue.map(AnyString.init) } } - private var _value: AnyString + private var _custom_url_label: AnyString? /** - * Value to store. + * Label for the custom url defined by the alert creator */ - public var value: String { - get { _value.value } - set { _value = AnyString.init(newValue) } + public var custom_url_label: String? { + get { _custom_url_label?.value } + set { _custom_url_label = newValue.map(AnyString.init) } } - private var _content_type: AnyString? /** - * 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. + * Boolean to determine if the custom url should be used */ - public var content_type: String? { - get { _content_type?.value } - set { _content_type = newValue.map(AnyString.init) } - } + public var show_custom_url: Bool? - private var _version: AnyInt? + private var _custom_title: AnyString? /** - * Version number of the stored value. The version must be provided for any updates to an existing artifact. (read-only) + * An optional, user-defined title for the alert */ - public var version: Int64? { - get { _version?.value } - set { _version = newValue.map(AnyInt.init) } + public var custom_title: String? { + get { _custom_title?.value } + set { _custom_title = newValue.map(AnyString.init) } } - private var _namespace: AnyString - /** - * Artifact storage namespace. (read-only) - */ - public var namespace: String { - get { _namespace.value } - set { _namespace = AnyString.init(newValue) } + public init(id: Int64? = nil, lookml_dashboard_id: String? = nil, lookml_link_id: String? = nil, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, custom_title: String? = nil) { + self._id = id.map(AnyInt.init) + self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) + self._lookml_link_id = lookml_link_id.map(AnyString.init) + 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) + self.show_custom_url = show_custom_url + self._custom_title = custom_title.map(AnyString.init) } - /** - * Timestamp when this artifact was created. (read-only) - */ - public var created_at: Date +} - /** - * Timestamp when this artifact was updated. (read-only) - */ - public var updated_at: Date +public struct ContentValidationDashboard: SDKModel { - private var _value_size: AnyInt + private enum CodingKeys : String, CodingKey { + case _description = "description" + case _id = "id" + case folder + case _title = "title" + case space + } + private var _description: AnyString? /** - * Size (in bytes) of the stored value. (read-only) + * Description */ - public var value_size: Int64 { - get { _value_size.value } - set { _value_size = AnyInt.init(newValue) } + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } } - private var _created_by_userid: AnyString + private var _id: AnyString? /** - * User id of the artifact creator. (read-only) + * Unique Id (read-only) */ - public var created_by_userid: String { - get { _created_by_userid.value } - set { _created_by_userid = AnyString.init(newValue) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _updated_by_userid: AnyString + public var folder: ContentValidationFolder? + + private var _title: AnyString? /** - * User id of the artifact updater. (read-only) + * Dashboard Title */ - public var updated_by_userid: String { - get { _updated_by_userid.value } - set { _updated_by_userid = AnyString.init(newValue) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } - public init(key: String, value: String, content_type: String? = nil, version: Int64? = nil, namespace: String, created_at: Date, updated_at: Date, value_size: Int64, created_by_userid: String, updated_by_userid: String) { - self._key = AnyString.init(key) - self._value = AnyString.init(value) - self._content_type = content_type.map(AnyString.init) - self._version = version.map(AnyInt.init) - self._namespace = AnyString.init(namespace) - self.created_at = created_at - self.updated_at = updated_at - self._value_size = AnyInt.init(value_size) - self._created_by_userid = AnyString.init(created_by_userid) - self._updated_by_userid = AnyString.init(updated_by_userid) - } + public var space: ContentValidationSpace? - public init(_ key: String, _ value: String, content_type: String? = nil, version: Int64? = nil, _ namespace: String, _ created_at: Date, _ updated_at: Date, _ value_size: Int64, _ created_by_userid: String, _ updated_by_userid: String) { - self.init(key: key, value: value, content_type: content_type, version: version, namespace: namespace, created_at: created_at, updated_at: updated_at, value_size: value_size, created_by_userid: created_by_userid, updated_by_userid: updated_by_userid) + public init(description: String? = nil, id: String? = nil, folder: ContentValidationFolder? = nil, title: String? = nil, space: ContentValidationSpace? = nil) { + self._description = description.map(AnyString.init) + self._id = id.map(AnyString.init) + self.folder = folder + self._title = title.map(AnyString.init) + self.space = space } } -public struct ArtifactNamespace: SDKModel { +public struct ContentValidationDashboardElement: SDKModel { private enum CodingKeys : String, CodingKey { - case _namespace = "namespace" - case _count = "count" + case _body_text = "body_text" + case _dashboard_id = "dashboard_id" + case _id = "id" + case _look_id = "look_id" + case _note_display = "note_display" + case _note_state = "note_state" + case _note_text = "note_text" + case _note_text_as_html = "note_text_as_html" + case _query_id = "query_id" + case _subtitle_text = "subtitle_text" + case _title = "title" + case title_hidden + case _title_text = "title_text" + case _type = "type" + case _rich_content_json = "rich_content_json" } - private var _namespace: AnyString + private var _body_text: AnyString? /** - * Artifact storage namespace. (read-only) + * Text tile body text */ - public var namespace: String { - get { _namespace.value } - set { _namespace = AnyString.init(newValue) } + public var body_text: String? { + get { _body_text?.value } + set { _body_text = newValue.map(AnyString.init) } } - private var _count: AnyInt + private var _dashboard_id: AnyString? /** - * The number of artifacts stored in the namespace. (read-only) + * Id of Dashboard */ - public var count: Int64 { - get { _count.value } - set { _count = AnyInt.init(newValue) } + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } - public init(namespace: String, count: Int64) { - self._namespace = AnyString.init(namespace) - self._count = AnyInt.init(count) + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - public init(_ namespace: String, _ count: Int64) { - self.init(namespace: namespace, count: count) + private var _look_id: AnyString? + /** + * Id Of Look + */ + public var look_id: String? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyString.init) } } -} - -public struct ArtifactUsage: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _max_size = "max_size" - case _usage = "usage" - } - private var _max_size: AnyInt + private var _note_display: AnyString? /** - * The configured maximum size in bytes of the entire artifact store. (read-only) + * Note Display */ - public var max_size: Int64 { - get { _max_size.value } - set { _max_size = AnyInt.init(newValue) } + public var note_display: String? { + get { _note_display?.value } + set { _note_display = newValue.map(AnyString.init) } } - private var _usage: AnyInt + private var _note_state: AnyString? /** - * The currently used storage size in bytes of the entire artifact store. (read-only) + * Note State */ - public var usage: Int64 { - get { _usage.value } - set { _usage = AnyInt.init(newValue) } + public var note_state: String? { + get { _note_state?.value } + set { _note_state = newValue.map(AnyString.init) } } - public init(max_size: Int64, usage: Int64) { - self._max_size = AnyInt.init(max_size) - self._usage = AnyInt.init(usage) + private var _note_text: AnyString? + /** + * Note Text + */ + public var note_text: String? { + get { _note_text?.value } + set { _note_text = newValue.map(AnyString.init) } } - public init(_ max_size: Int64, _ usage: Int64) { - self.init(max_size: max_size, usage: usage) - } - -} - -public struct BackupConfiguration: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _type = "type" - case _custom_s3_bucket = "custom_s3_bucket" - case _custom_s3_bucket_region = "custom_s3_bucket_region" - case _custom_s3_key = "custom_s3_key" - case _custom_s3_secret = "custom_s3_secret" - case _url = "url" - } + private var _note_text_as_html: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * Note Text as Html (read-only) */ - public var can: StringDictionary? + public var note_text_as_html: String? { + get { _note_text_as_html?.value } + set { _note_text_as_html = newValue.map(AnyString.init) } + } - private var _type: AnyString? + private var _query_id: AnyInt? /** - * Type of backup: looker-s3 or custom-s3 + * Id Of Query */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var query_id: Int64? { + get { _query_id?.value } + set { _query_id = newValue.map(AnyInt.init) } } - private var _custom_s3_bucket: AnyString? + private var _subtitle_text: AnyString? /** - * Name of bucket for custom-s3 backups + * Text tile subtitle text */ - public var custom_s3_bucket: String? { - get { _custom_s3_bucket?.value } - set { _custom_s3_bucket = newValue.map(AnyString.init) } + public var subtitle_text: String? { + get { _subtitle_text?.value } + set { _subtitle_text = newValue.map(AnyString.init) } } - private var _custom_s3_bucket_region: AnyString? + private var _title: AnyString? /** - * Name of region where the bucket is located + * Title of dashboard element */ - public var custom_s3_bucket_region: String? { - get { _custom_s3_bucket_region?.value } - set { _custom_s3_bucket_region = newValue.map(AnyString.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } - private var _custom_s3_key: AnyString? /** - * (Write-Only) AWS S3 key used for custom-s3 backups + * Whether title is hidden */ - public var custom_s3_key: String? { - get { _custom_s3_key?.value } - set { _custom_s3_key = newValue.map(AnyString.init) } + public var title_hidden: Bool? + + private var _title_text: AnyString? + /** + * Text tile title + */ + public var title_text: String? { + get { _title_text?.value } + set { _title_text = newValue.map(AnyString.init) } } - private var _custom_s3_secret: AnyString? + private var _type: AnyString? /** - * (Write-Only) AWS S3 secret used for custom-s3 backups + * Type */ - public var custom_s3_secret: String? { - get { _custom_s3_secret?.value } - set { _custom_s3_secret = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - private var _url: AnyString? + private var _rich_content_json: AnyString? /** - * Link to get this item (read-only) + * JSON with all the properties required for rich editor and buttons elements */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } + public var rich_content_json: String? { + get { _rich_content_json?.value } + set { _rich_content_json = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, type: String? = nil, custom_s3_bucket: String? = nil, custom_s3_bucket_region: String? = nil, custom_s3_key: String? = nil, custom_s3_secret: String? = nil, url: String? = nil) { - self.can = can + public init(body_text: String? = nil, dashboard_id: String? = nil, id: String? = nil, look_id: String? = nil, note_display: String? = nil, note_state: String? = nil, note_text: String? = nil, note_text_as_html: String? = nil, query_id: Int64? = nil, subtitle_text: String? = nil, title: String? = nil, title_hidden: Bool? = nil, title_text: String? = nil, type: String? = nil, rich_content_json: String? = nil) { + self._body_text = body_text.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self._id = id.map(AnyString.init) + self._look_id = look_id.map(AnyString.init) + self._note_display = note_display.map(AnyString.init) + self._note_state = note_state.map(AnyString.init) + self._note_text = note_text.map(AnyString.init) + self._note_text_as_html = note_text_as_html.map(AnyString.init) + self._query_id = query_id.map(AnyInt.init) + self._subtitle_text = subtitle_text.map(AnyString.init) + self._title = title.map(AnyString.init) + self.title_hidden = title_hidden + self._title_text = title_text.map(AnyString.init) self._type = type.map(AnyString.init) - self._custom_s3_bucket = custom_s3_bucket.map(AnyString.init) - self._custom_s3_bucket_region = custom_s3_bucket_region.map(AnyString.init) - self._custom_s3_key = custom_s3_key.map(AnyString.init) - self._custom_s3_secret = custom_s3_secret.map(AnyString.init) - self._url = url.map(AnyString.init) + self._rich_content_json = rich_content_json.map(AnyString.init) } } -public struct Board: SDKModel { +public struct ContentValidationDashboardFilter: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _content_metadata_id = "content_metadata_id" - case created_at - case deleted_at - case _description = "description" - case board_sections case _id = "id" - case _section_order = "section_order" + case _dashboard_id = "dashboard_id" + case _name = "name" case _title = "title" - case updated_at - case _user_id = "user_id" - case primary_homepage + case _type = "type" + case _default_value = "default_value" + case _model = "model" + case _explore = "explore" + case _dimension = "dimension" } + private var _id: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * Unique Id (read-only) */ - public var can: StringDictionary? + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } - private var _content_metadata_id: AnyString? + private var _dashboard_id: AnyString? /** - * Id of associated content_metadata record (read-only) + * Id of Dashboard (read-only) */ - public var content_metadata_id: String? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } + private var _name: AnyString? /** - * Date of board creation (read-only) + * Name of filter */ - public var created_at: Date? + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + private var _title: AnyString? /** - * Date of board deletion + * Title of filter */ - public var deleted_at: Date? + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } + } - private var _description: AnyString? + private var _type: AnyString? /** - * Description of the board + * Type of filter: one of date, number, string, or field */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } + private var _default_value: AnyString? /** - * Sections of the board (read-only) + * Default value of filter */ - public var board_sections: [BoardSection]? + public var default_value: String? { + get { _default_value?.value } + set { _default_value = newValue.map(AnyString.init) } + } - private var _id: AnyString? + private var _model: AnyString? /** - * Unique Id (read-only) + * Model of filter (required if type = field) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var model: String? { + get { _model?.value } + set { _model = newValue.map(AnyString.init) } } - private var _section_order: [AnyString]? + private var _explore: AnyString? /** - * ids of the board sections in the order they should be displayed + * Explore of filter (required if type = field) */ - public var section_order: [String]? { - get { if let v = _section_order { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _section_order = v.map { AnyString.init($0) } } else { _section_order = nil } } + public var explore: String? { + get { _explore?.value } + set { _explore = newValue.map(AnyString.init) } } - private var _title: AnyString? + private var _dimension: AnyString? /** - * Title of the board + * Dimension of filter (required if type = field) */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var dimension: String? { + get { _dimension?.value } + set { _dimension = newValue.map(AnyString.init) } } + public init(id: String? = nil, dashboard_id: String? = nil, name: String? = nil, title: String? = nil, type: String? = nil, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil) { + self._id = id.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self._name = name.map(AnyString.init) + self._title = title.map(AnyString.init) + self._type = type.map(AnyString.init) + self._default_value = default_value.map(AnyString.init) + self._model = model.map(AnyString.init) + self._explore = explore.map(AnyString.init) + self._dimension = dimension.map(AnyString.init) + } + +} + +public struct ContentValidationError: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _message = "message" + case _field_name = "field_name" + case _model_name = "model_name" + case _explore_name = "explore_name" + case removable + } + private var _message: AnyString? /** - * Date of last board update (read-only) + * Error message (read-only) */ - public var updated_at: Date? + public var message: String? { + get { _message?.value } + set { _message = newValue.map(AnyString.init) } + } - private var _user_id: AnyString? + private var _field_name: AnyString? /** - * User id of board creator (read-only) + * Name of the field involved in the error (read-only) */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + public var field_name: String? { + get { _field_name?.value } + set { _field_name = newValue.map(AnyString.init) } } + private var _model_name: AnyString? /** - * Whether the board is the primary homepage or not (read-only) + * Name of the model involved in the error (read-only) */ - public var primary_homepage: Bool? + public var model_name: String? { + get { _model_name?.value } + set { _model_name = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, content_metadata_id: String? = nil, created_at: Date? = nil, deleted_at: Date? = nil, description: String? = nil, board_sections: [BoardSection]? = nil, id: String? = nil, section_order: [String]? = nil, title: String? = nil, updated_at: Date? = nil, user_id: String? = nil, primary_homepage: Bool? = nil) { - self.can = can - self._content_metadata_id = content_metadata_id.map(AnyString.init) - self.created_at = created_at - self.deleted_at = deleted_at - self._description = description.map(AnyString.init) - self.board_sections = board_sections - self._id = id.map(AnyString.init) - if let v = section_order { _section_order = v.map { AnyString.init($0) } } else { _section_order = nil } - self._title = title.map(AnyString.init) - self.updated_at = updated_at - self._user_id = user_id.map(AnyString.init) - self.primary_homepage = primary_homepage + private var _explore_name: AnyString? + /** + * Name of the explore involved in the error (read-only) + */ + public var explore_name: String? { + get { _explore_name?.value } + set { _explore_name = newValue.map(AnyString.init) } } -} + /** + * Whether this validation error is removable (read-only) + */ + public var removable: Bool? + + public init(message: String? = nil, field_name: String? = nil, model_name: String? = nil, explore_name: String? = nil, removable: Bool? = nil) { + self._message = message.map(AnyString.init) + self._field_name = field_name.map(AnyString.init) + self._model_name = model_name.map(AnyString.init) + self._explore_name = explore_name.map(AnyString.init) + self.removable = removable + } -public struct BoardItem: SDKModel { +} + +public struct ContentValidationFolder: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _content_created_by = "content_created_by" - case _content_favorite_id = "content_favorite_id" - case _content_metadata_id = "content_metadata_id" - case _content_updated_at = "content_updated_at" - case _custom_description = "custom_description" - case _custom_title = "custom_title" - case _custom_url = "custom_url" - case _dashboard_id = "dashboard_id" - case _description = "description" - case _favorite_count = "favorite_count" - case _board_section_id = "board_section_id" + case _name = "name" case _id = "id" - case _image_url = "image_url" - case _location = "location" - case _look_id = "look_id" - case _lookml_dashboard_id = "lookml_dashboard_id" - case _order = "order" - case _title = "title" - case _url = "url" - case use_custom_description - case use_custom_title - case use_custom_url - case _view_count = "view_count" - case _custom_image_data_base64 = "custom_image_data_base64" - case _custom_image_url = "custom_image_url" - case use_custom_image } + private var _name: AnyString /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _content_created_by: AnyString? - /** - * Name of user who created the content this item is based on (read-only) + * Unique Name */ - public var content_created_by: String? { - get { _content_created_by?.value } - set { _content_created_by = newValue.map(AnyString.init) } + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } } - private var _content_favorite_id: AnyString? + private var _id: AnyString? /** - * Content favorite id associated with the item this content is based on (read-only) + * Unique Id (read-only) */ - public var content_favorite_id: String? { - get { _content_favorite_id?.value } - set { _content_favorite_id = newValue.map(AnyString.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _content_metadata_id: AnyString? - /** - * Content metadata id associated with the item this content is based on (read-only) - */ - public var content_metadata_id: String? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } + public init(name: String, id: String? = nil) { + self._name = AnyString.init(name) + self._id = id.map(AnyString.init) } - private var _content_updated_at: AnyString? - /** - * Last time the content that this item is based on was updated (read-only) - */ - public var content_updated_at: String? { - get { _content_updated_at?.value } - set { _content_updated_at = newValue.map(AnyString.init) } + public init(_ name: String, id: String? = nil) { + self.init(name: name, id: id) } - private var _custom_description: AnyString? - /** - * Custom description entered by the user, if present - */ - public var custom_description: String? { - get { _custom_description?.value } - set { _custom_description = newValue.map(AnyString.init) } - } +} - private var _custom_title: AnyString? - /** - * Custom title entered by the user, if present - */ - public var custom_title: String? { - get { _custom_title?.value } - set { _custom_title = newValue.map(AnyString.init) } - } +public struct ContentValidationLook: SDKModel { - private var _custom_url: AnyString? - /** - * Custom url entered by the user, if present - */ - public var custom_url: String? { - get { _custom_url?.value } - set { _custom_url = newValue.map(AnyString.init) } + private enum CodingKeys : String, CodingKey { + case _id = "id" + case _title = "title" + case _short_url = "short_url" + case folder + case space } - - private var _dashboard_id: AnyString? + private var _id: AnyInt? /** - * Dashboard to base this item on + * Unique Id (read-only) */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + public var id: Int64? { + get { _id?.value } + set { _id = newValue.map(AnyInt.init) } } - private var _description: AnyString? + private var _title: AnyString? /** - * The actual description for display (read-only) + * Look Title */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } - private var _favorite_count: AnyInt? + private var _short_url: AnyString? /** - * Number of times content has been favorited, if present (read-only) + * Short Url (read-only) */ - public var favorite_count: Int64? { - get { _favorite_count?.value } - set { _favorite_count = newValue.map(AnyInt.init) } + public var short_url: String? { + get { _short_url?.value } + set { _short_url = newValue.map(AnyString.init) } } - private var _board_section_id: AnyString? - /** - * Associated Board Section - */ - public var board_section_id: String? { - get { _board_section_id?.value } - set { _board_section_id = newValue.map(AnyString.init) } + public var folder: ContentValidationFolder? + + public var space: ContentValidationSpace? + + public init(id: Int64? = nil, title: String? = nil, short_url: String? = nil, folder: ContentValidationFolder? = nil, space: ContentValidationSpace? = nil) { + self._id = id.map(AnyInt.init) + self._title = title.map(AnyString.init) + self._short_url = short_url.map(AnyString.init) + self.folder = folder + self.space = space } +} + +public struct ContentValidationLookMLDashboard: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _id = "id" + case _title = "title" + case _space_id = "space_id" + case space + } private var _id: AnyString? /** - * Unique Id (read-only) + * ID of the LookML Dashboard (read-only) */ public var id: String? { get { _id?.value } set { _id = newValue.map(AnyString.init) } } - private var _image_url: AnyString? + private var _title: AnyString? /** - * The actual image_url for display (read-only) + * Title of the LookML Dashboard (read-only) */ - public var image_url: String? { - get { _image_url?.value } - set { _image_url = newValue.map(AnyString.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } - private var _location: AnyString? + private var _space_id: AnyString? /** - * The container folder name of the content (read-only) + * ID of Space (read-only) */ - public var location: String? { - get { _location?.value } - set { _location = newValue.map(AnyString.init) } + public var space_id: String? { + get { _space_id?.value } + set { _space_id = newValue.map(AnyString.init) } } - private var _look_id: AnyString? - /** - * Look to base this item on - */ - public var look_id: String? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } - } + public var space: SpaceBase? - private var _lookml_dashboard_id: AnyString? - /** - * LookML Dashboard to base this item on - */ - public var lookml_dashboard_id: String? { - get { _lookml_dashboard_id?.value } - set { _lookml_dashboard_id = newValue.map(AnyString.init) } + public init(id: String? = nil, title: String? = nil, space_id: String? = nil, space: SpaceBase? = nil) { + self._id = id.map(AnyString.init) + self._title = title.map(AnyString.init) + self._space_id = space_id.map(AnyString.init) + self.space = space } - private var _order: AnyInt? +} + +public struct ContentValidationLookMLDashboardElement: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _lookml_link_id = "lookml_link_id" + case _title = "title" + } + private var _lookml_link_id: AnyString? /** - * An arbitrary integer representing the sort order within the section + * Link ID of the LookML Dashboard Element (read-only) */ - public var order: Int64? { - get { _order?.value } - set { _order = newValue.map(AnyInt.init) } + public var lookml_link_id: String? { + get { _lookml_link_id?.value } + set { _lookml_link_id = newValue.map(AnyString.init) } } private var _title: AnyString? /** - * The actual title for display (read-only) + * Title of the LookML Dashboard Element (read-only) */ public var title: String? { get { _title?.value } set { _title = newValue.map(AnyString.init) } } - private var _url: AnyString? - /** - * Relative url for the associated content (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } + public init(lookml_link_id: String? = nil, title: String? = nil) { + self._lookml_link_id = lookml_link_id.map(AnyString.init) + self._title = title.map(AnyString.init) } - /** - * Whether the custom description should be used instead of the content description, if the item is associated with content - */ - public var use_custom_description: Bool? +} - /** - * Whether the custom title should be used instead of the content title, if the item is associated with content - */ - public var use_custom_title: Bool? +public struct ContentValidationScheduledPlan: SDKModel { + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _look_id = "look_id" + case _id = "id" + } + private var _name: AnyString? /** - * Whether the custom url should be used instead of the content url, if the item is associated with content + * Name of this scheduled plan */ - public var use_custom_url: Bool? + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } - private var _view_count: AnyInt? + private var _look_id: AnyInt? /** - * Number of times content has been viewed, if present (read-only) + * Id of a look */ - public var view_count: Int64? { - get { _view_count?.value } - set { _view_count = newValue.map(AnyInt.init) } + public var look_id: Int64? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyInt.init) } } - private var _custom_image_data_base64: AnyString? + private var _id: AnyInt? /** - * (Write-Only) base64 encoded image data + * Unique Id (read-only) */ - public var custom_image_data_base64: String? { - get { _custom_image_data_base64?.value } - set { _custom_image_data_base64 = newValue.map(AnyString.init) } + public var id: Int64? { + get { _id?.value } + set { _id = newValue.map(AnyInt.init) } } - private var _custom_image_url: AnyString? + public init(name: String? = nil, look_id: Int64? = nil, id: Int64? = nil) { + self._name = name.map(AnyString.init) + self._look_id = look_id.map(AnyInt.init) + self._id = id.map(AnyInt.init) + } + +} + +public struct ContentValidationSpace: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _id = "id" + } + private var _name: AnyString /** - * Custom image_url entered by the user, if present (read-only) + * Unique Name */ - public var custom_image_url: String? { - get { _custom_image_url?.value } - set { _custom_image_url = newValue.map(AnyString.init) } + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } } + private var _id: AnyString? /** - * Whether the custom image should be used instead of the content image, if the item is associated with content + * Unique Id (read-only) */ - public var use_custom_image: Bool? + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, content_created_by: String? = nil, content_favorite_id: String? = nil, content_metadata_id: String? = nil, content_updated_at: String? = nil, custom_description: String? = nil, custom_title: String? = nil, custom_url: String? = nil, dashboard_id: String? = nil, description: String? = nil, favorite_count: Int64? = nil, board_section_id: String? = nil, id: String? = nil, image_url: String? = nil, location: String? = nil, look_id: String? = nil, lookml_dashboard_id: String? = nil, order: Int64? = nil, title: String? = nil, url: String? = nil, use_custom_description: Bool? = nil, use_custom_title: Bool? = nil, use_custom_url: Bool? = nil, view_count: Int64? = nil, custom_image_data_base64: String? = nil, custom_image_url: String? = nil, use_custom_image: Bool? = nil) { - self.can = can - self._content_created_by = content_created_by.map(AnyString.init) - self._content_favorite_id = content_favorite_id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyString.init) - self._content_updated_at = content_updated_at.map(AnyString.init) - self._custom_description = custom_description.map(AnyString.init) - self._custom_title = custom_title.map(AnyString.init) - self._custom_url = custom_url.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._description = description.map(AnyString.init) - self._favorite_count = favorite_count.map(AnyInt.init) - self._board_section_id = board_section_id.map(AnyString.init) + public init(name: String, id: String? = nil) { + self._name = AnyString.init(name) + self._id = id.map(AnyString.init) + } + + public init(_ name: String, id: String? = nil) { + self.init(name: name, id: id) + } + +} + +public struct ContentValidatorError: SDKModel { + + private enum CodingKeys : String, CodingKey { + case look + case dashboard + case dashboard_element + case dashboard_filter + case scheduled_plan + case alert + case lookml_dashboard + case lookml_dashboard_element + case errors + case _id = "id" + } + public var look: ContentValidationLook? + + public var dashboard: ContentValidationDashboard? + + public var dashboard_element: ContentValidationDashboardElement? + + public var dashboard_filter: ContentValidationDashboardFilter? + + public var scheduled_plan: ContentValidationScheduledPlan? + + public var alert: ContentValidationAlert? + + public var lookml_dashboard: ContentValidationLookMLDashboard? + + public var lookml_dashboard_element: ContentValidationLookMLDashboardElement? + + /** + * A list of errors found for this piece of content (read-only) + */ + public var errors: [ContentValidationError]? + + private var _id: AnyString? + /** + * An id unique to this piece of content for this validation run (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + public init(look: ContentValidationLook? = nil, dashboard: ContentValidationDashboard? = nil, dashboard_element: ContentValidationDashboardElement? = nil, dashboard_filter: ContentValidationDashboardFilter? = nil, scheduled_plan: ContentValidationScheduledPlan? = nil, alert: ContentValidationAlert? = nil, lookml_dashboard: ContentValidationLookMLDashboard? = nil, lookml_dashboard_element: ContentValidationLookMLDashboardElement? = nil, errors: [ContentValidationError]? = nil, id: String? = nil) { + self.look = look + self.dashboard = dashboard + self.dashboard_element = dashboard_element + self.dashboard_filter = dashboard_filter + self.scheduled_plan = scheduled_plan + self.alert = alert + self.lookml_dashboard = lookml_dashboard + self.lookml_dashboard_element = lookml_dashboard_element + self.errors = errors self._id = id.map(AnyString.init) - self._image_url = image_url.map(AnyString.init) - self._location = location.map(AnyString.init) - self._look_id = look_id.map(AnyString.init) - self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) - self._order = order.map(AnyInt.init) - self._title = title.map(AnyString.init) - self._url = url.map(AnyString.init) - self.use_custom_description = use_custom_description - self.use_custom_title = use_custom_title - self.use_custom_url = use_custom_url - self._view_count = view_count.map(AnyInt.init) - self._custom_image_data_base64 = custom_image_data_base64.map(AnyString.init) - self._custom_image_url = custom_image_url.map(AnyString.init) - self.use_custom_image = use_custom_image } } -public struct BoardSection: SDKModel { +public struct ContentView: SDKModel { private enum CodingKeys : String, CodingKey { case can - case created_at - case deleted_at - case _description = "description" - case _board_id = "board_id" - case board_items case _id = "id" - case _item_order = "item_order" - case _visible_item_order = "visible_item_order" + case _look_id = "look_id" + case _dashboard_id = "dashboard_id" case _title = "title" - case updated_at + case _content_metadata_id = "content_metadata_id" + case _user_id = "user_id" + case _group_id = "group_id" + case _view_count = "view_count" + case _favorite_count = "favorite_count" + case _last_viewed_at = "last_viewed_at" + case _start_of_week_date = "start_of_week_date" } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? + private var _id: AnyInt? /** - * Time at which this section was created. (read-only) + * Unique Id (read-only) */ - public var created_at: Date? + public var id: Int64? { + get { _id?.value } + set { _id = newValue.map(AnyInt.init) } + } + private var _look_id: AnyInt? /** - * Time at which this section was deleted. + * Id of viewed Look (read-only) */ - public var deleted_at: Date? + public var look_id: Int64? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyInt.init) } + } - private var _description: AnyString? + private var _dashboard_id: AnyInt? /** - * Description of the content found in this section. + * Id of the viewed Dashboard (read-only) */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + public var dashboard_id: Int64? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyInt.init) } } - private var _board_id: AnyString? + private var _title: AnyString? /** - * Id reference to parent board + * Name or title of underlying content (read-only) */ - public var board_id: String? { - get { _board_id?.value } - set { _board_id = newValue.map(AnyString.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } + private var _content_metadata_id: AnyInt? /** - * Items in the board section (read-only) + * Content metadata id of the Look or Dashboard (read-only) */ - public var board_items: [BoardItem]? + public var content_metadata_id: Int64? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyInt.init) } + } - private var _id: AnyString? + private var _user_id: AnyInt? /** - * Unique Id (read-only) + * Id of user content was viewed by (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var user_id: Int64? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyInt.init) } } - private var _item_order: [AnyString]? + private var _group_id: AnyInt? /** - * ids of the board items in the order they should be displayed + * Id of group content was viewed by (read-only) */ - public var item_order: [String]? { - get { if let v = _item_order { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _item_order = v.map { AnyString.init($0) } } else { _item_order = nil } } + public var group_id: Int64? { + get { _group_id?.value } + set { _group_id = newValue.map(AnyInt.init) } } - private var _visible_item_order: [AnyString]? + private var _view_count: AnyInt? /** - * ids of the homepage items the user can see in the order they should be displayed (read-only) + * Number of times piece of content was viewed (read-only) */ - public var visible_item_order: [String]? { - get { if let v = _visible_item_order { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _visible_item_order = v.map { AnyString.init($0) } } else { _visible_item_order = nil } } + public var view_count: Int64? { + get { _view_count?.value } + set { _view_count = newValue.map(AnyInt.init) } } - private var _title: AnyString? + private var _favorite_count: AnyInt? /** - * Name of row + * Number of times piece of content was favorited (read-only) */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var favorite_count: Int64? { + get { _favorite_count?.value } + set { _favorite_count = newValue.map(AnyInt.init) } } + private var _last_viewed_at: AnyString? /** - * Time at which this section was last updated. (read-only) + * Date the piece of content was last viewed (read-only) */ - public var updated_at: Date? + public var last_viewed_at: String? { + get { _last_viewed_at?.value } + set { _last_viewed_at = newValue.map(AnyString.init) } + } + + private var _start_of_week_date: AnyString? + /** + * Week start date for the view and favorite count during that given week (read-only) + */ + public var start_of_week_date: String? { + get { _start_of_week_date?.value } + set { _start_of_week_date = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, created_at: Date? = nil, deleted_at: Date? = nil, description: String? = nil, board_id: String? = nil, board_items: [BoardItem]? = nil, id: String? = nil, item_order: [String]? = nil, visible_item_order: [String]? = nil, title: String? = nil, updated_at: Date? = nil) { + public init(can: StringDictionary? = nil, id: Int64? = nil, look_id: Int64? = nil, dashboard_id: Int64? = nil, title: String? = nil, content_metadata_id: Int64? = nil, user_id: Int64? = nil, group_id: Int64? = nil, view_count: Int64? = nil, favorite_count: Int64? = nil, last_viewed_at: String? = nil, start_of_week_date: String? = nil) { self.can = can - self.created_at = created_at - self.deleted_at = deleted_at - self._description = description.map(AnyString.init) - self._board_id = board_id.map(AnyString.init) - self.board_items = board_items - self._id = id.map(AnyString.init) - if let v = item_order { _item_order = v.map { AnyString.init($0) } } else { _item_order = nil } - if let v = visible_item_order { _visible_item_order = v.map { AnyString.init($0) } } else { _visible_item_order = nil } + self._id = id.map(AnyInt.init) + self._look_id = look_id.map(AnyInt.init) + self._dashboard_id = dashboard_id.map(AnyInt.init) self._title = title.map(AnyString.init) - self.updated_at = updated_at + self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self._user_id = user_id.map(AnyInt.init) + self._group_id = group_id.map(AnyInt.init) + self._view_count = view_count.map(AnyInt.init) + self._favorite_count = favorite_count.map(AnyInt.init) + self._last_viewed_at = last_viewed_at.map(AnyString.init) + self._start_of_week_date = start_of_week_date.map(AnyString.init) } } -/** - * Field category Valid values are: "parameter", "filter", "measure", "dimension". (Enum defined in LookmlModelExploreField) - */ -public enum Category: String, Codable { - case parameter = "parameter" - case filter = "filter" - case measure = "measure" - case dimension = "dimension" -} - -public struct ColorCollection: SDKModel { +public struct ContinuousPalette: SDKModel { private enum CodingKeys : String, CodingKey { case _id = "id" case _label = "label" - case categoricalPalettes - case sequentialPalettes - case divergingPalettes + case _type = "type" + case stops } private var _id: AnyString? /** - * Unique Id (read-only) + * Unique identity string (read-only) */ public var id: String? { get { _id?.value } @@ -1659,1406 +1693,1333 @@ public struct ColorCollection: SDKModel { private var _label: AnyString? /** - * Label of color collection + * Label for palette */ public var label: String? { get { _label?.value } set { _label = newValue.map(AnyString.init) } } + private var _type: AnyString? /** - * Array of categorical palette definitions + * Type of palette */ - public var categoricalPalettes: [DiscretePalette]? + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } /** - * Array of discrete palette definitions + * Array of ColorStops in the palette */ - public var sequentialPalettes: [ContinuousPalette]? + public var stops: [ColorStop]? - /** - * Array of diverging palette definitions - */ - public var divergingPalettes: [ContinuousPalette]? - - public init(id: String? = nil, label: String? = nil, categoricalPalettes: [DiscretePalette]? = nil, sequentialPalettes: [ContinuousPalette]? = nil, divergingPalettes: [ContinuousPalette]? = nil) { + public init(id: String? = nil, label: String? = nil, type: String? = nil, stops: [ColorStop]? = nil) { self._id = id.map(AnyString.init) self._label = label.map(AnyString.init) - self.categoricalPalettes = categoricalPalettes - self.sequentialPalettes = sequentialPalettes - self.divergingPalettes = divergingPalettes + self._type = type.map(AnyString.init) + self.stops = stops } } -public struct ColorStop: SDKModel { +public struct CreateDashboardFilter: SDKModel { private enum CodingKeys : String, CodingKey { - case _color = "color" - case _offset = "offset" + case _id = "id" + case _dashboard_id = "dashboard_id" + case _name = "name" + case _title = "title" + case _type = "type" + case _default_value = "default_value" + case _model = "model" + case _explore = "explore" + case _dimension = "dimension" + case field + case _row = "row" + case _listens_to_filters = "listens_to_filters" + case allow_multiple_values + case required + case ui_config } - private var _color: AnyString? + private var _id: AnyString? /** - * CSS color string + * Unique Id (read-only) */ - public var color: String? { - get { _color?.value } - set { _color = newValue.map(AnyString.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _offset: AnyInt? + private var _dashboard_id: AnyString /** - * Offset in continuous palette (0 to 100) + * Id of Dashboard */ - public var offset: Int64? { - get { _offset?.value } - set { _offset = newValue.map(AnyInt.init) } - } - - public init(color: String? = nil, offset: Int64? = nil) { - self._color = color.map(AnyString.init) - self._offset = offset.map(AnyInt.init) + public var dashboard_id: String { + get { _dashboard_id.value } + set { _dashboard_id = AnyString.init(newValue) } } -} - -public struct ColumnSearch: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _schema_name = "schema_name" - case _table_name = "table_name" - case _column_name = "column_name" - case _data_type = "data_type" - } - private var _schema_name: AnyString? + private var _name: AnyString /** - * Name of schema containing the table (read-only) + * Name of filter */ - public var schema_name: String? { - get { _schema_name?.value } - set { _schema_name = newValue.map(AnyString.init) } + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } } - private var _table_name: AnyString? + private var _title: AnyString /** - * Name of table containing the column (read-only) + * Title of filter */ - public var table_name: String? { - get { _table_name?.value } - set { _table_name = newValue.map(AnyString.init) } + public var title: String { + get { _title.value } + set { _title = AnyString.init(newValue) } } - private var _column_name: AnyString? + private var _type: AnyString /** - * Name of column (read-only) + * Type of filter: one of date, number, string, or field */ - public var column_name: String? { - get { _column_name?.value } - set { _column_name = newValue.map(AnyString.init) } + public var type: String { + get { _type.value } + set { _type = AnyString.init(newValue) } } - private var _data_type: AnyString? + private var _default_value: AnyString? /** - * Column data type (read-only) + * Default value of filter */ - public var data_type: String? { - get { _data_type?.value } - set { _data_type = newValue.map(AnyString.init) } - } - - public init(schema_name: String? = nil, table_name: String? = nil, column_name: String? = nil, data_type: String? = nil) { - self._schema_name = schema_name.map(AnyString.init) - self._table_name = table_name.map(AnyString.init) - self._column_name = column_name.map(AnyString.init) - self._data_type = data_type.map(AnyString.init) + public var default_value: String? { + get { _default_value?.value } + set { _default_value = newValue.map(AnyString.init) } } -} - -/** - * 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://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) - */ -public enum ComparisonType: String, Codable { - case EQUAL_TO = "EQUAL_TO" - case GREATER_THAN = "GREATER_THAN" - case GREATER_THAN_OR_EQUAL_TO = "GREATER_THAN_OR_EQUAL_TO" - case LESS_THAN = "LESS_THAN" - case LESS_THAN_OR_EQUAL_TO = "LESS_THAN_OR_EQUAL_TO" - case INCREASES_BY = "INCREASES_BY" - case DECREASES_BY = "DECREASES_BY" - case CHANGES_BY = "CHANGES_BY" -} - -public struct ConnectionFeatures: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _dialect_name = "dialect_name" - case cost_estimate - case multiple_databases - case column_search - case persistent_table_indexes - case persistent_derived_tables - case turtles - case percentile - case distinct_percentile - case stable_views - case milliseconds - case microseconds - case subtotals - case location - case timezone - case connection_pooling - } - private var _dialect_name: AnyString? + private var _model: AnyString? /** - * Name of the dialect for this connection (read-only) + * Model of filter (required if type = field) */ - public var dialect_name: String? { - get { _dialect_name?.value } - set { _dialect_name = newValue.map(AnyString.init) } + public var model: String? { + get { _model?.value } + set { _model = newValue.map(AnyString.init) } } + private var _explore: AnyString? /** - * True for cost estimating support (read-only) + * Explore of filter (required if type = field) */ - public var cost_estimate: Bool? + public var explore: String? { + get { _explore?.value } + set { _explore = newValue.map(AnyString.init) } + } + private var _dimension: AnyString? /** - * True for multiple database support (read-only) + * Dimension of filter (required if type = field) */ - public var multiple_databases: Bool? + public var dimension: String? { + get { _dimension?.value } + set { _dimension = newValue.map(AnyString.init) } + } /** - * True for cost estimating support (read-only) + * Field information (read-only) */ - public var column_search: Bool? + public var field: StringDictionary? + private var _row: AnyInt? /** - * True for secondary index support (read-only) + * Display order of this filter relative to other filters */ - public var persistent_table_indexes: Bool? + public var row: Int64? { + get { _row?.value } + set { _row = newValue.map(AnyInt.init) } + } + private var _listens_to_filters: [AnyString]? /** - * True for persistent derived table support (read-only) + * Array of listeners for faceted filters */ - public var persistent_derived_tables: Bool? + public var listens_to_filters: [String]? { + get { if let v = _listens_to_filters { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } } + } /** - * True for turtles support (read-only) + * Whether the filter allows multiple filter values (deprecated in the latest version of dashboards) */ - public var turtles: Bool? + public var allow_multiple_values: Bool? /** - * True for percentile support (read-only) + * Whether the filter requires a value to run the dashboard */ - public var percentile: Bool? + public var required: Bool? /** - * True for distinct percentile support (read-only) + * The visual configuration for this filter. Used to set up how the UI for this filter should appear. */ - public var distinct_percentile: Bool? + public var ui_config: StringDictionary? - /** - * True for stable views support (read-only) - */ - public var stable_views: Bool? + public init(id: String? = nil, dashboard_id: String, name: String, title: String, type: String, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil, field: StringDictionary? = nil, row: Int64? = nil, listens_to_filters: [String]? = nil, allow_multiple_values: Bool? = nil, required: Bool? = nil, ui_config: StringDictionary? = nil) { + self._id = id.map(AnyString.init) + self._dashboard_id = AnyString.init(dashboard_id) + self._name = AnyString.init(name) + self._title = AnyString.init(title) + self._type = AnyString.init(type) + self._default_value = default_value.map(AnyString.init) + self._model = model.map(AnyString.init) + self._explore = explore.map(AnyString.init) + self._dimension = dimension.map(AnyString.init) + self.field = field + self._row = row.map(AnyInt.init) + if let v = listens_to_filters { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } + self.allow_multiple_values = allow_multiple_values + self.required = required + self.ui_config = ui_config + } - /** - * True for millisecond support (read-only) - */ - public var milliseconds: Bool? + public init(id: String? = nil, _ dashboard_id: String, _ name: String, _ title: String, _ type: String, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil, field: StringDictionary? = nil, row: Int64? = nil, listens_to_filters: [String]? = nil, allow_multiple_values: Bool? = nil, required: Bool? = nil, ui_config: StringDictionary? = nil) { + self.init(id: id, dashboard_id: dashboard_id, name: name, title: title, type: type, default_value: default_value, model: model, explore: explore, dimension: dimension, field: field, row: row, listens_to_filters: listens_to_filters, allow_multiple_values: allow_multiple_values, required: required, ui_config: ui_config) + } - /** - * True for microsecond support (read-only) - */ - public var microseconds: Bool? +} + +public struct CreateDashboardRenderTask: SDKModel { + private enum CodingKeys : String, CodingKey { + case _dashboard_filters = "dashboard_filters" + case _dashboard_style = "dashboard_style" + } + private var _dashboard_filters: AnyString? /** - * True for subtotal support (read-only) + * Filter values to apply to the dashboard queries, in URL query format */ - public var subtotals: Bool? + public var dashboard_filters: String? { + get { _dashboard_filters?.value } + set { _dashboard_filters = newValue.map(AnyString.init) } + } + private var _dashboard_style: AnyString? /** - * True for geographic location support (read-only) + * Dashboard layout style: single_column or tiled */ - public var location: Bool? + public var dashboard_style: String? { + get { _dashboard_style?.value } + set { _dashboard_style = newValue.map(AnyString.init) } + } + + public init(dashboard_filters: String? = nil, dashboard_style: String? = nil) { + self._dashboard_filters = dashboard_filters.map(AnyString.init) + self._dashboard_style = dashboard_style.map(AnyString.init) + } +} + +public struct CreateFolder: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _parent_id = "parent_id" + } + private var _name: AnyString /** - * True for timezone conversion in query support (read-only) + * Unique Name */ - public var timezone: Bool? + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } + } + private var _parent_id: AnyString /** - * True for connection pooling support (read-only) + * Id of Parent. If the parent id is null, this is a root-level entry */ - public var connection_pooling: Bool? + public var parent_id: String { + get { _parent_id.value } + set { _parent_id = AnyString.init(newValue) } + } - public init(dialect_name: String? = nil, cost_estimate: Bool? = nil, multiple_databases: Bool? = nil, column_search: Bool? = nil, persistent_table_indexes: Bool? = nil, persistent_derived_tables: Bool? = nil, turtles: Bool? = nil, percentile: Bool? = nil, distinct_percentile: Bool? = nil, stable_views: Bool? = nil, milliseconds: Bool? = nil, microseconds: Bool? = nil, subtotals: Bool? = nil, location: Bool? = nil, timezone: Bool? = nil, connection_pooling: Bool? = nil) { - self._dialect_name = dialect_name.map(AnyString.init) - self.cost_estimate = cost_estimate - self.multiple_databases = multiple_databases - self.column_search = column_search - self.persistent_table_indexes = persistent_table_indexes - self.persistent_derived_tables = persistent_derived_tables - self.turtles = turtles - self.percentile = percentile - self.distinct_percentile = distinct_percentile - self.stable_views = stable_views - self.milliseconds = milliseconds - self.microseconds = microseconds - self.subtotals = subtotals - self.location = location - self.timezone = timezone - self.connection_pooling = connection_pooling + public init(name: String, parent_id: String) { + self._name = AnyString.init(name) + self._parent_id = AnyString.init(parent_id) + } + + public init(_ name: String, _ parent_id: String) { + self.init(name: name, parent_id: parent_id) } } -public struct ContentFavorite: SDKModel { +public struct CreateQueryTask: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" - case _user_id = "user_id" - case _content_metadata_id = "content_metadata_id" + case can + case _query_id = "query_id" + case result_format + case _source = "source" + case deferred case _look_id = "look_id" case _dashboard_id = "dashboard_id" - case look - case dashboard - case _board_id = "board_id" } - private var _id: AnyString? /** - * Unique Id (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _user_id: AnyString? + private var _query_id: AnyInt /** - * User Id which owns this ContentFavorite + * Id of query to run */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + public var query_id: Int64 { + get { _query_id.value } + set { _query_id = AnyInt.init(newValue) } } - private var _content_metadata_id: AnyString? /** - * Content Metadata Id associated with this ContentFavorite + * Desired async query result format. Valid values are: "inline_json", "json", "json_detail", "json_fe", "json_bi", "csv", "html", "md", "txt", "xlsx", "gsxml", "sql". */ - public var content_metadata_id: String? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } - } + public var result_format: ResultFormat - private var _look_id: AnyString? + private var _source: AnyString? /** - * Id of a look (read-only) + * Source of query task */ - public var look_id: String? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } + public var source: String? { + get { _source?.value } + set { _source = newValue.map(AnyString.init) } + } + + /** + * Create the task but defer execution + */ + public var deferred: Bool? + + private var _look_id: AnyInt? + /** + * Id of look associated with query. + */ + public var look_id: Int64? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyInt.init) } } private var _dashboard_id: AnyString? /** - * Id of a dashboard (read-only) + * Id of dashboard associated with query. */ public var dashboard_id: String? { get { _dashboard_id?.value } set { _dashboard_id = newValue.map(AnyString.init) } } - public var look: LookBasic? - - public var dashboard: DashboardBase? - - private var _board_id: AnyString? - /** - * Id of a board (read-only) - */ - public var board_id: String? { - get { _board_id?.value } - set { _board_id = newValue.map(AnyString.init) } + public init(can: StringDictionary? = nil, query_id: Int64, result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: Int64? = nil, dashboard_id: String? = nil) { + self.can = can + self._query_id = AnyInt.init(query_id) + self.result_format = result_format + self._source = source.map(AnyString.init) + self.deferred = deferred + self._look_id = look_id.map(AnyInt.init) + self._dashboard_id = dashboard_id.map(AnyString.init) } - public init(id: String? = nil, user_id: String? = nil, content_metadata_id: String? = nil, look_id: String? = nil, dashboard_id: String? = nil, look: LookBasic? = nil, dashboard: DashboardBase? = nil, board_id: String? = nil) { - self._id = id.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyString.init) - self._look_id = look_id.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self.look = look - self.dashboard = dashboard - self._board_id = board_id.map(AnyString.init) + public init(can: StringDictionary? = nil, _ query_id: Int64, _ result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: Int64? = nil, dashboard_id: String? = nil) { + self.init(can: can, query_id: query_id, result_format: result_format, source: source, deferred: deferred, look_id: look_id, dashboard_id: dashboard_id) } } -public struct ContentMeta: SDKModel { +public struct CreateSpace: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _id = "id" case _name = "name" case _parent_id = "parent_id" - case _dashboard_id = "dashboard_id" - case _look_id = "look_id" - case _folder_id = "folder_id" - case _content_type = "content_type" - case inherits - case _inheriting_id = "inheriting_id" - case _slug = "slug" } + private var _name: AnyString /** - * Operations the current user is able to perform on this object (read-only) + * Unique Name */ - public var can: StringDictionary? + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } + } - private var _id: AnyString? + private var _parent_id: AnyString /** - * Unique Id (read-only) + * Id of Parent. If the parent id is null, this is a root-level entry */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var parent_id: String { + get { _parent_id.value } + set { _parent_id = AnyString.init(newValue) } } - private var _name: AnyString? - /** - * Name or title of underlying content (read-only) - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public init(name: String, parent_id: String) { + self._name = AnyString.init(name) + self._parent_id = AnyString.init(parent_id) } - private var _parent_id: AnyString? - /** - * Id of Parent Content (read-only) - */ - public var parent_id: String? { - get { _parent_id?.value } - set { _parent_id = newValue.map(AnyString.init) } + public init(_ name: String, _ parent_id: String) { + self.init(name: name, parent_id: parent_id) } - private var _dashboard_id: AnyString? +} + +/** + * WARNING: no writeable properties found for POST, PUT, or PATCH + */ +public struct CredentialsApi3: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _id = "id" + case _client_id = "client_id" + case _created_at = "created_at" + case is_disabled + case _type = "type" + case url + } /** - * Id of associated dashboard when content_type is "dashboard" (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _look_id: AnyString? + private var _id: AnyInt? /** - * Id of associated look when content_type is "look" (read-only) + * Unique Id (read-only) */ - public var look_id: String? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } + public var id: Int64? { + get { _id?.value } + set { _id = newValue.map(AnyInt.init) } } - private var _folder_id: AnyString? + private var _client_id: AnyString? /** - * Id of associated folder when content_type is "space" (read-only) + * API key client_id (read-only) */ - public var folder_id: String? { - get { _folder_id?.value } - set { _folder_id = newValue.map(AnyString.init) } + public var client_id: String? { + get { _client_id?.value } + set { _client_id = newValue.map(AnyString.init) } } - private var _content_type: AnyString? + private var _created_at: AnyString? /** - * Content Type ("dashboard", "look", or "folder") (read-only) + * Timestamp for the creation of this credential (read-only) */ - public var content_type: String? { - get { _content_type?.value } - set { _content_type = newValue.map(AnyString.init) } + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } } /** - * Whether content inherits its access levels from parent + * Has this credential been disabled? (read-only) */ - public var inherits: Bool? + public var is_disabled: Bool? - private var _inheriting_id: AnyString? + private var _type: AnyString? /** - * Id of Inherited Content (read-only) + * Short name for the type of this kind of credential (read-only) */ - public var inheriting_id: String? { - get { _inheriting_id?.value } - set { _inheriting_id = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - private var _slug: AnyString? /** - * Content Slug (read-only) + * Link to get this item (read-only) */ - public var slug: String? { - get { _slug?.value } - set { _slug = newValue.map(AnyString.init) } - } + public var url: URI? - public init(can: StringDictionary? = nil, id: String? = nil, name: String? = nil, parent_id: String? = nil, dashboard_id: String? = nil, look_id: String? = nil, folder_id: String? = nil, content_type: String? = nil, inherits: Bool? = nil, inheriting_id: String? = nil, slug: String? = nil) { + public init(can: StringDictionary? = nil, id: Int64? = nil, client_id: String? = nil, created_at: String? = nil, is_disabled: Bool? = nil, type: String? = nil, url: URI? = nil) { self.can = can - self._id = id.map(AnyString.init) - self._name = name.map(AnyString.init) - self._parent_id = parent_id.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._look_id = look_id.map(AnyString.init) - self._folder_id = folder_id.map(AnyString.init) - self._content_type = content_type.map(AnyString.init) - self.inherits = inherits - self._inheriting_id = inheriting_id.map(AnyString.init) - self._slug = slug.map(AnyString.init) + self._id = id.map(AnyInt.init) + self._client_id = client_id.map(AnyString.init) + self._created_at = created_at.map(AnyString.init) + self.is_disabled = is_disabled + self._type = type.map(AnyString.init) + self.url = url } } -/** - * WARNING: no writeable properties found for POST, PUT, or PATCH - */ -public struct ContentMetaGroupUser: SDKModel { +public struct CredentialsEmail: SDKModel { private enum CodingKeys : String, CodingKey { case can - case _id = "id" - case _content_metadata_id = "content_metadata_id" - case permission_type - case _group_id = "group_id" + case _created_at = "created_at" + case _email = "email" + case forced_password_reset_at_next_login case _user_id = "user_id" + case is_disabled + case _logged_in_at = "logged_in_at" + case _password_reset_url = "password_reset_url" + case _account_setup_url = "account_setup_url" + case _type = "type" + case url + case user_url } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _id: AnyString? + private var _created_at: AnyString? /** - * Unique Id (read-only) + * Timestamp for the creation of this credential (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } } - private var _content_metadata_id: AnyString? + private var _email: AnyString? /** - * Id of associated Content Metadata (read-only) + * EMail address used for user login */ - public var content_metadata_id: String? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } } /** - * Type of permission: "view" or "edit" Valid values are: "view", "edit". (read-only) - */ - public var permission_type: PermissionType? - - private var _group_id: AnyString? - /** - * ID of associated group (read-only) + * Force the user to change their password upon their next login */ - public var group_id: String? { - get { _group_id?.value } - set { _group_id = newValue.map(AnyString.init) } - } + public var forced_password_reset_at_next_login: Bool? private var _user_id: AnyString? /** - * ID of associated user (read-only) + * Unique Id of the user (read-only) */ public var user_id: String? { get { _user_id?.value } set { _user_id = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, id: String? = nil, content_metadata_id: String? = nil, permission_type: PermissionType? = nil, group_id: String? = nil, user_id: String? = nil) { - self.can = can - self._id = id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyString.init) - self.permission_type = permission_type - self._group_id = group_id.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) - } - -} - -public struct ContentSearch: SDKModel { + /** + * Has this credential been disabled? (read-only) + */ + public var is_disabled: Bool? - private enum CodingKeys : String, CodingKey { - case can - case _content_id = "content_id" - case _type = "type" - case _title = "title" - case _description = "description" - case _folder_id = "folder_id" - case _folder_name = "folder_name" - case _view_count = "view_count" - case _preferred_viewer = "preferred_viewer" + private var _logged_in_at: AnyString? + /** + * Timestamp for most recent login using credential (read-only) + */ + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } } + + private var _password_reset_url: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * Url with one-time use secret token that the user can use to reset password (read-only) */ - public var can: StringDictionary? + public var password_reset_url: String? { + get { _password_reset_url?.value } + set { _password_reset_url = newValue.map(AnyString.init) } + } - private var _content_id: AnyString? + private var _account_setup_url: AnyString? /** - * Primary id associated with the content (read-only) + * Url with one-time use secret token that the user can use to setup account (read-only) */ - public var content_id: String? { - get { _content_id?.value } - set { _content_id = newValue.map(AnyString.init) } + public var account_setup_url: String? { + get { _account_setup_url?.value } + set { _account_setup_url = newValue.map(AnyString.init) } } private var _type: AnyString? /** - * Type of content (read-only) + * Short name for the type of this kind of credential (read-only) */ public var type: String? { get { _type?.value } set { _type = newValue.map(AnyString.init) } } - private var _title: AnyString? /** - * Content title (read-only) - */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } - } - - private var _description: AnyString? - /** - * Content description (read-only) - */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } - } - - private var _folder_id: AnyString? - /** - * Id of the folder where the content is saved (read-only) - */ - public var folder_id: String? { - get { _folder_id?.value } - set { _folder_id = newValue.map(AnyString.init) } - } - - private var _folder_name: AnyString? - /** - * Name of the folder where the content is saved (read-only) - */ - public var folder_name: String? { - get { _folder_name?.value } - set { _folder_name = newValue.map(AnyString.init) } - } - - private var _view_count: AnyInt? - /** - * Number of times the content has been viewed (read-only) + * Link to get this item (read-only) */ - public var view_count: Int64? { - get { _view_count?.value } - set { _view_count = newValue.map(AnyInt.init) } - } + public var url: URI? - private var _preferred_viewer: AnyString? /** - * Preferred way of viewing the content (only applies to dashboards) (read-only) + * Link to get this user (read-only) */ - public var preferred_viewer: String? { - get { _preferred_viewer?.value } - set { _preferred_viewer = newValue.map(AnyString.init) } - } + public var user_url: URI? - public init(can: StringDictionary? = nil, content_id: String? = nil, type: String? = nil, title: String? = nil, description: String? = nil, folder_id: String? = nil, folder_name: String? = nil, view_count: Int64? = nil, preferred_viewer: String? = nil) { + public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, forced_password_reset_at_next_login: Bool? = nil, user_id: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, password_reset_url: String? = nil, account_setup_url: String? = nil, type: String? = nil, url: URI? = nil, user_url: URI? = nil) { self.can = can - self._content_id = content_id.map(AnyString.init) + self._created_at = created_at.map(AnyString.init) + self._email = email.map(AnyString.init) + self.forced_password_reset_at_next_login = forced_password_reset_at_next_login + self._user_id = user_id.map(AnyString.init) + self.is_disabled = is_disabled + self._logged_in_at = logged_in_at.map(AnyString.init) + self._password_reset_url = password_reset_url.map(AnyString.init) + self._account_setup_url = account_setup_url.map(AnyString.init) self._type = type.map(AnyString.init) - self._title = title.map(AnyString.init) - self._description = description.map(AnyString.init) - self._folder_id = folder_id.map(AnyString.init) - self._folder_name = folder_name.map(AnyString.init) - self._view_count = view_count.map(AnyInt.init) - self._preferred_viewer = preferred_viewer.map(AnyString.init) + self.url = url + self.user_url = user_url } } -public struct ContentValidation: SDKModel { +public struct CredentialsEmbed: SDKModel { private enum CodingKeys : String, CodingKey { - case content_with_errors - case computation_time - case _total_looks_validated = "total_looks_validated" - case _total_dashboard_elements_validated = "total_dashboard_elements_validated" - case _total_dashboard_filters_validated = "total_dashboard_filters_validated" - case _total_scheduled_plans_validated = "total_scheduled_plans_validated" - case _total_alerts_validated = "total_alerts_validated" - case _total_explores_validated = "total_explores_validated" + case can + case _created_at = "created_at" + case _external_group_id = "external_group_id" + case _external_user_id = "external_user_id" + case _id = "id" + case is_disabled + case _logged_in_at = "logged_in_at" + case _type = "type" + case url } /** - * A list of content errors (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var content_with_errors: [ContentValidatorError]? + public var can: StringDictionary? + private var _created_at: AnyString? /** - * Duration of content validation in seconds (read-only) + * Timestamp for the creation of this credential (read-only) */ - public var computation_time: Float? + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } + } - private var _total_looks_validated: AnyInt? + private var _external_group_id: AnyString? /** - * The number of looks validated (read-only) + * Embedder's id for a group to which this user was added during the most recent login (read-only) */ - public var total_looks_validated: Int64? { - get { _total_looks_validated?.value } - set { _total_looks_validated = newValue.map(AnyInt.init) } + public var external_group_id: String? { + get { _external_group_id?.value } + set { _external_group_id = newValue.map(AnyString.init) } } - private var _total_dashboard_elements_validated: AnyInt? + private var _external_user_id: AnyString? /** - * The number of dashboard elements validated (read-only) + * Embedder's unique id for the user (read-only) */ - public var total_dashboard_elements_validated: Int64? { - get { _total_dashboard_elements_validated?.value } - set { _total_dashboard_elements_validated = newValue.map(AnyInt.init) } + public var external_user_id: String? { + get { _external_user_id?.value } + set { _external_user_id = newValue.map(AnyString.init) } } - private var _total_dashboard_filters_validated: AnyInt? + private var _id: AnyInt? /** - * The number of dashboard filters validated (read-only) + * Unique Id (read-only) */ - public var total_dashboard_filters_validated: Int64? { - get { _total_dashboard_filters_validated?.value } - set { _total_dashboard_filters_validated = newValue.map(AnyInt.init) } + public var id: Int64? { + get { _id?.value } + set { _id = newValue.map(AnyInt.init) } } - private var _total_scheduled_plans_validated: AnyInt? /** - * The number of scheduled plans validated (read-only) + * Has this credential been disabled? (read-only) */ - public var total_scheduled_plans_validated: Int64? { - get { _total_scheduled_plans_validated?.value } - set { _total_scheduled_plans_validated = newValue.map(AnyInt.init) } - } + public var is_disabled: Bool? - private var _total_alerts_validated: AnyInt? + private var _logged_in_at: AnyString? /** - * The number of alerts validated (read-only) + * Timestamp for most recent login using credential (read-only) */ - public var total_alerts_validated: Int64? { - get { _total_alerts_validated?.value } - set { _total_alerts_validated = newValue.map(AnyInt.init) } + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } } - private var _total_explores_validated: AnyInt? + private var _type: AnyString? /** - * The number of explores used across all content validated (read-only) + * Short name for the type of this kind of credential (read-only) */ - public var total_explores_validated: Int64? { - get { _total_explores_validated?.value } - set { _total_explores_validated = newValue.map(AnyInt.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - public init(content_with_errors: [ContentValidatorError]? = nil, computation_time: Float? = nil, total_looks_validated: Int64? = nil, total_dashboard_elements_validated: Int64? = nil, total_dashboard_filters_validated: Int64? = nil, total_scheduled_plans_validated: Int64? = nil, total_alerts_validated: Int64? = nil, total_explores_validated: Int64? = nil) { - self.content_with_errors = content_with_errors - self.computation_time = computation_time - self._total_looks_validated = total_looks_validated.map(AnyInt.init) - self._total_dashboard_elements_validated = total_dashboard_elements_validated.map(AnyInt.init) - self._total_dashboard_filters_validated = total_dashboard_filters_validated.map(AnyInt.init) - self._total_scheduled_plans_validated = total_scheduled_plans_validated.map(AnyInt.init) - self._total_alerts_validated = total_alerts_validated.map(AnyInt.init) - self._total_explores_validated = total_explores_validated.map(AnyInt.init) + /** + * Link to get this item (read-only) + */ + public var url: URI? + + public init(can: StringDictionary? = nil, created_at: String? = nil, external_group_id: String? = nil, external_user_id: String? = nil, id: Int64? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, type: String? = nil, url: URI? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._external_group_id = external_group_id.map(AnyString.init) + self._external_user_id = external_user_id.map(AnyString.init) + self._id = id.map(AnyInt.init) + self.is_disabled = is_disabled + self._logged_in_at = logged_in_at.map(AnyString.init) + self._type = type.map(AnyString.init) + self.url = url } } -public struct ContentValidationAlert: SDKModel { +public struct CredentialsGoogle: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" - case _lookml_dashboard_id = "lookml_dashboard_id" - case _lookml_link_id = "lookml_link_id" - case _custom_url_base = "custom_url_base" - case _custom_url_params = "custom_url_params" - case _custom_url_label = "custom_url_label" - case show_custom_url - case _custom_title = "custom_title" + case can + case _created_at = "created_at" + case _domain = "domain" + case _email = "email" + case _google_user_id = "google_user_id" + case is_disabled + case _logged_in_at = "logged_in_at" + case _type = "type" + case url } - private var _id: AnyString? /** - * ID of the alert + * Operations the current user is able to perform on this object (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _lookml_dashboard_id: AnyString? + private var _created_at: AnyString? /** - * ID of the LookML dashboard associated with the alert + * Timestamp for the creation of this credential (read-only) */ - public var lookml_dashboard_id: String? { - get { _lookml_dashboard_id?.value } - set { _lookml_dashboard_id = newValue.map(AnyString.init) } + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } } - private var _lookml_link_id: AnyString? + private var _domain: AnyString? /** - * ID of the LookML dashboard element associated with the alert + * Google domain (read-only) */ - public var lookml_link_id: String? { - get { _lookml_link_id?.value } - set { _lookml_link_id = newValue.map(AnyString.init) } + public var domain: String? { + get { _domain?.value } + set { _domain = newValue.map(AnyString.init) } } - private var _custom_url_base: AnyString? + private var _email: AnyString? /** - * Domain for the custom url selected by the alert creator from the admin defined domain allowlist + * EMail address (read-only) */ - public var custom_url_base: String? { - get { _custom_url_base?.value } - set { _custom_url_base = newValue.map(AnyString.init) } + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } } - private var _custom_url_params: AnyString? + private var _google_user_id: AnyString? /** - * Parameters and path for the custom url defined by the alert creator + * Google's Unique ID for this user (read-only) */ - public var custom_url_params: String? { - get { _custom_url_params?.value } - set { _custom_url_params = newValue.map(AnyString.init) } + public var google_user_id: String? { + get { _google_user_id?.value } + set { _google_user_id = newValue.map(AnyString.init) } } - private var _custom_url_label: AnyString? /** - * Label for the custom url defined by the alert creator + * Has this credential been disabled? (read-only) */ - public var custom_url_label: String? { - get { _custom_url_label?.value } - set { _custom_url_label = newValue.map(AnyString.init) } - } + public var is_disabled: Bool? + private var _logged_in_at: AnyString? /** - * Boolean to determine if the custom url should be used + * Timestamp for most recent login using credential (read-only) */ - public var show_custom_url: Bool? + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } + } - private var _custom_title: AnyString? + private var _type: AnyString? /** - * An optional, user-defined title for the alert + * Short name for the type of this kind of credential (read-only) */ - public var custom_title: String? { - get { _custom_title?.value } - set { _custom_title = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - public init(id: String? = nil, lookml_dashboard_id: String? = nil, lookml_link_id: String? = nil, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, custom_title: String? = nil) { - self._id = id.map(AnyString.init) - self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) - self._lookml_link_id = lookml_link_id.map(AnyString.init) - 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) - self.show_custom_url = show_custom_url - self._custom_title = custom_title.map(AnyString.init) + /** + * Link to get this item (read-only) + */ + public var url: URI? + + public init(can: StringDictionary? = nil, created_at: String? = nil, domain: String? = nil, email: String? = nil, google_user_id: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, type: String? = nil, url: URI? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._domain = domain.map(AnyString.init) + self._email = email.map(AnyString.init) + self._google_user_id = google_user_id.map(AnyString.init) + self.is_disabled = is_disabled + self._logged_in_at = logged_in_at.map(AnyString.init) + self._type = type.map(AnyString.init) + self.url = url } } -public struct ContentValidationDashboard: SDKModel { +public struct CredentialsLDAP: SDKModel { private enum CodingKeys : String, CodingKey { - case _description = "description" - case _id = "id" - case folder - case _title = "title" - case _url = "url" + case can + case _created_at = "created_at" + case _email = "email" + case is_disabled + case _ldap_dn = "ldap_dn" + case _ldap_id = "ldap_id" + case _logged_in_at = "logged_in_at" + case _type = "type" + case url } - private var _description: AnyString? /** - * Description + * Operations the current user is able to perform on this object (read-only) */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _id: AnyString? + private var _created_at: AnyString? /** - * Unique Id (read-only) + * Timestamp for the creation of this credential (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } } - public var folder: ContentValidationFolder? - - private var _title: AnyString? + private var _email: AnyString? /** - * Dashboard Title + * EMail address (read-only) */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } } - private var _url: AnyString? /** - * Relative URL of the dashboard (read-only) + * Has this credential been disabled? (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - public init(description: String? = nil, id: String? = nil, folder: ContentValidationFolder? = nil, title: String? = nil, url: String? = nil) { - self._description = description.map(AnyString.init) - self._id = id.map(AnyString.init) - self.folder = folder - self._title = title.map(AnyString.init) - self._url = url.map(AnyString.init) - } - -} - -public struct ContentValidationDashboardElement: SDKModel { + public var is_disabled: Bool? - private enum CodingKeys : String, CodingKey { - case _body_text = "body_text" - case _dashboard_id = "dashboard_id" - case _id = "id" - case _look_id = "look_id" - case _note_display = "note_display" - case _note_state = "note_state" - case _note_text = "note_text" - case _note_text_as_html = "note_text_as_html" - case _query_id = "query_id" - case _subtitle_text = "subtitle_text" - case _title = "title" - case title_hidden - case _title_text = "title_text" - case _type = "type" - case _rich_content_json = "rich_content_json" - case _extension_id = "extension_id" - } - private var _body_text: AnyString? + private var _ldap_dn: AnyString? /** - * Text tile body text + * LDAP Distinguished name for this user (as-of the last login) (read-only) */ - public var body_text: String? { - get { _body_text?.value } - set { _body_text = newValue.map(AnyString.init) } + public var ldap_dn: String? { + get { _ldap_dn?.value } + set { _ldap_dn = newValue.map(AnyString.init) } } - private var _dashboard_id: AnyString? + private var _ldap_id: AnyString? /** - * Id of Dashboard + * LDAP Unique ID for this user (read-only) */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + public var ldap_id: String? { + get { _ldap_id?.value } + set { _ldap_id = newValue.map(AnyString.init) } } - private var _id: AnyString? + private var _logged_in_at: AnyString? /** - * Unique Id (read-only) + * Timestamp for most recent login using credential (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } } - private var _look_id: AnyString? + private var _type: AnyString? /** - * Id Of Look + * Short name for the type of this kind of credential (read-only) */ - public var look_id: String? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - private var _note_display: AnyString? /** - * Note Display + * Link to get this item (read-only) */ - public var note_display: String? { - get { _note_display?.value } - set { _note_display = newValue.map(AnyString.init) } - } + public var url: URI? - private var _note_state: AnyString? - /** - * Note State - */ - public var note_state: String? { - get { _note_state?.value } - set { _note_state = newValue.map(AnyString.init) } + public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, ldap_dn: String? = nil, ldap_id: String? = nil, logged_in_at: String? = nil, type: String? = nil, url: URI? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._email = email.map(AnyString.init) + self.is_disabled = is_disabled + self._ldap_dn = ldap_dn.map(AnyString.init) + self._ldap_id = ldap_id.map(AnyString.init) + self._logged_in_at = logged_in_at.map(AnyString.init) + self._type = type.map(AnyString.init) + self.url = url } - private var _note_text: AnyString? - /** - * Note Text - */ - public var note_text: String? { - get { _note_text?.value } - set { _note_text = newValue.map(AnyString.init) } - } +} - private var _note_text_as_html: AnyString? +public struct CredentialsLookerOpenid: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _created_at = "created_at" + case _email = "email" + case is_disabled + case _logged_in_at = "logged_in_at" + case _logged_in_ip = "logged_in_ip" + case _type = "type" + case url + case user_url + } /** - * Note Text as Html (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var note_text_as_html: String? { - get { _note_text_as_html?.value } - set { _note_text_as_html = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _query_id: AnyString? + private var _created_at: AnyString? /** - * Id Of Query + * Timestamp for the creation of this credential (read-only) */ - public var query_id: String? { - get { _query_id?.value } - set { _query_id = newValue.map(AnyString.init) } + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } } - private var _subtitle_text: AnyString? + private var _email: AnyString? /** - * Text tile subtitle text + * EMail address used for user login (read-only) */ - public var subtitle_text: String? { - get { _subtitle_text?.value } - set { _subtitle_text = newValue.map(AnyString.init) } + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } } - private var _title: AnyString? /** - * Title of dashboard element + * Has this credential been disabled? (read-only) */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } - } + public var is_disabled: Bool? + private var _logged_in_at: AnyString? /** - * Whether title is hidden + * Timestamp for most recent login using credential (read-only) */ - public var title_hidden: Bool? + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } + } - private var _title_text: AnyString? + private var _logged_in_ip: AnyString? /** - * Text tile title + * IP address of client for most recent login using credential (read-only) */ - public var title_text: String? { - get { _title_text?.value } - set { _title_text = newValue.map(AnyString.init) } + public var logged_in_ip: String? { + get { _logged_in_ip?.value } + set { _logged_in_ip = newValue.map(AnyString.init) } } private var _type: AnyString? /** - * Type + * Short name for the type of this kind of credential (read-only) */ public var type: String? { get { _type?.value } set { _type = newValue.map(AnyString.init) } } - private var _rich_content_json: AnyString? /** - * JSON with all the properties required for rich editor and buttons elements + * Link to get this item (read-only) */ - public var rich_content_json: String? { - get { _rich_content_json?.value } - set { _rich_content_json = newValue.map(AnyString.init) } - } + public var url: URI? - private var _extension_id: AnyString? /** - * Extension ID + * Link to get this user (read-only) */ - public var extension_id: String? { - get { _extension_id?.value } - set { _extension_id = newValue.map(AnyString.init) } - } - - public init(body_text: String? = nil, dashboard_id: String? = nil, id: String? = nil, look_id: String? = nil, note_display: String? = nil, note_state: String? = nil, note_text: String? = nil, note_text_as_html: String? = nil, query_id: String? = nil, subtitle_text: String? = nil, title: String? = nil, title_hidden: Bool? = nil, title_text: String? = nil, type: String? = nil, rich_content_json: String? = nil, extension_id: String? = nil) { - self._body_text = body_text.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._id = id.map(AnyString.init) - self._look_id = look_id.map(AnyString.init) - self._note_display = note_display.map(AnyString.init) - self._note_state = note_state.map(AnyString.init) - self._note_text = note_text.map(AnyString.init) - self._note_text_as_html = note_text_as_html.map(AnyString.init) - self._query_id = query_id.map(AnyString.init) - self._subtitle_text = subtitle_text.map(AnyString.init) - self._title = title.map(AnyString.init) - self.title_hidden = title_hidden - self._title_text = title_text.map(AnyString.init) - self._type = type.map(AnyString.init) - self._rich_content_json = rich_content_json.map(AnyString.init) - self._extension_id = extension_id.map(AnyString.init) + public var user_url: URI? + + public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, logged_in_ip: String? = nil, type: String? = nil, url: URI? = nil, user_url: URI? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._email = email.map(AnyString.init) + self.is_disabled = is_disabled + self._logged_in_at = logged_in_at.map(AnyString.init) + self._logged_in_ip = logged_in_ip.map(AnyString.init) + self._type = type.map(AnyString.init) + self.url = url + self.user_url = user_url } } -public struct ContentValidationDashboardFilter: SDKModel { +public struct CredentialsOIDC: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" - case _dashboard_id = "dashboard_id" - case _name = "name" - case _title = "title" + case can + case _created_at = "created_at" + case _email = "email" + case is_disabled + case _logged_in_at = "logged_in_at" + case _oidc_user_id = "oidc_user_id" case _type = "type" - case _default_value = "default_value" - case _model = "model" - case _explore = "explore" - case _dimension = "dimension" - } - private var _id: AnyString? - /** - * Unique Id (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + case url } - - private var _dashboard_id: AnyString? /** - * Id of Dashboard (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _name: AnyString? + private var _created_at: AnyString? /** - * Name of filter + * Timestamp for the creation of this credential (read-only) */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } } - private var _title: AnyString? + private var _email: AnyString? /** - * Title of filter + * EMail address (read-only) */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } } - private var _type: AnyString? /** - * Type of filter: one of date, number, string, or field + * Has this credential been disabled? (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } + public var is_disabled: Bool? - private var _default_value: AnyString? + private var _logged_in_at: AnyString? /** - * Default value of filter + * Timestamp for most recent login using credential (read-only) */ - public var default_value: String? { - get { _default_value?.value } - set { _default_value = newValue.map(AnyString.init) } + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } } - private var _model: AnyString? + private var _oidc_user_id: AnyString? /** - * Model of filter (required if type = field) + * OIDC OP's Unique ID for this user (read-only) */ - public var model: String? { - get { _model?.value } - set { _model = newValue.map(AnyString.init) } + public var oidc_user_id: String? { + get { _oidc_user_id?.value } + set { _oidc_user_id = newValue.map(AnyString.init) } } - private var _explore: AnyString? + private var _type: AnyString? /** - * Explore of filter (required if type = field) + * Short name for the type of this kind of credential (read-only) */ - public var explore: String? { - get { _explore?.value } - set { _explore = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - private var _dimension: AnyString? /** - * Dimension of filter (required if type = field) + * Link to get this item (read-only) */ - public var dimension: String? { - get { _dimension?.value } - set { _dimension = newValue.map(AnyString.init) } - } + public var url: URI? - public init(id: String? = nil, dashboard_id: String? = nil, name: String? = nil, title: String? = nil, type: String? = nil, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil) { - self._id = id.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._name = name.map(AnyString.init) - self._title = title.map(AnyString.init) + public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, oidc_user_id: String? = nil, type: String? = nil, url: URI? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._email = email.map(AnyString.init) + self.is_disabled = is_disabled + self._logged_in_at = logged_in_at.map(AnyString.init) + self._oidc_user_id = oidc_user_id.map(AnyString.init) self._type = type.map(AnyString.init) - self._default_value = default_value.map(AnyString.init) - self._model = model.map(AnyString.init) - self._explore = explore.map(AnyString.init) - self._dimension = dimension.map(AnyString.init) + self.url = url } } -public struct ContentValidationError: SDKModel { +public struct CredentialsSaml: SDKModel { private enum CodingKeys : String, CodingKey { - case _message = "message" - case _field_name = "field_name" - case _model_name = "model_name" - case _explore_name = "explore_name" - case removable + case can + case _created_at = "created_at" + case _email = "email" + case is_disabled + case _logged_in_at = "logged_in_at" + case _saml_user_id = "saml_user_id" + case _type = "type" + case url } - private var _message: AnyString? /** - * Error message (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var message: String? { - get { _message?.value } - set { _message = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _field_name: AnyString? + private var _created_at: AnyString? /** - * Name of the field involved in the error (read-only) + * Timestamp for the creation of this credential (read-only) */ - public var field_name: String? { - get { _field_name?.value } - set { _field_name = newValue.map(AnyString.init) } + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } } - private var _model_name: AnyString? + private var _email: AnyString? /** - * Name of the model involved in the error (read-only) + * EMail address (read-only) */ - public var model_name: String? { - get { _model_name?.value } - set { _model_name = newValue.map(AnyString.init) } + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } } - private var _explore_name: AnyString? /** - * Name of the explore involved in the error (read-only) + * Has this credential been disabled? (read-only) */ - public var explore_name: String? { - get { _explore_name?.value } - set { _explore_name = newValue.map(AnyString.init) } - } + public var is_disabled: Bool? + private var _logged_in_at: AnyString? /** - * Whether this validation error is removable (read-only) + * Timestamp for most recent login using credential (read-only) */ - public var removable: Bool? - - public init(message: String? = nil, field_name: String? = nil, model_name: String? = nil, explore_name: String? = nil, removable: Bool? = nil) { - self._message = message.map(AnyString.init) - self._field_name = field_name.map(AnyString.init) - self._model_name = model_name.map(AnyString.init) - self._explore_name = explore_name.map(AnyString.init) - self.removable = removable + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } } -} - -public struct ContentValidationFolder: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _id = "id" - } - private var _name: AnyString + private var _saml_user_id: AnyString? /** - * Unique Name + * Saml IdP's Unique ID for this user (read-only) */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } + public var saml_user_id: String? { + get { _saml_user_id?.value } + set { _saml_user_id = newValue.map(AnyString.init) } } - private var _id: AnyString? + private var _type: AnyString? /** - * Unique Id (read-only) + * Short name for the type of this kind of credential (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - public init(name: String, id: String? = nil) { - self._name = AnyString.init(name) - self._id = id.map(AnyString.init) - } + /** + * Link to get this item (read-only) + */ + public var url: URI? - public init(_ name: String, id: String? = nil) { - self.init(name: name, id: id) + public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, saml_user_id: String? = nil, type: String? = nil, url: URI? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._email = email.map(AnyString.init) + self.is_disabled = is_disabled + self._logged_in_at = logged_in_at.map(AnyString.init) + self._saml_user_id = saml_user_id.map(AnyString.init) + self._type = type.map(AnyString.init) + self.url = url } } -public struct ContentValidationLook: SDKModel { +/** + * WARNING: no writeable properties found for POST, PUT, or PATCH + */ +public struct CredentialsTotp: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" - case _title = "title" - case _short_url = "short_url" - case folder + case can + case _created_at = "created_at" + case is_disabled + case _type = "type" + case verified + case url } - private var _id: AnyString? /** - * Unique Id (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _title: AnyString? + private var _created_at: AnyString? /** - * Look Title + * Timestamp for the creation of this credential (read-only) */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } } - private var _short_url: AnyString? /** - * Short Url (read-only) + * Has this credential been disabled? (read-only) */ - public var short_url: String? { - get { _short_url?.value } - set { _short_url = newValue.map(AnyString.init) } + public var is_disabled: Bool? + + private var _type: AnyString? + /** + * Short name for the type of this kind of credential (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - public var folder: ContentValidationFolder? + /** + * User has verified (read-only) + */ + public var verified: Bool? - public init(id: String? = nil, title: String? = nil, short_url: String? = nil, folder: ContentValidationFolder? = nil) { - self._id = id.map(AnyString.init) - self._title = title.map(AnyString.init) - self._short_url = short_url.map(AnyString.init) - self.folder = folder + /** + * Link to get this item (read-only) + */ + public var url: URI? + + public init(can: StringDictionary? = nil, created_at: String? = nil, is_disabled: Bool? = nil, type: String? = nil, verified: Bool? = nil, url: URI? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self.is_disabled = is_disabled + self._type = type.map(AnyString.init) + self.verified = verified + self.url = url } } -public struct ContentValidationLookMLDashboard: SDKModel { +public struct CustomWelcomeEmail: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" - case _title = "title" - case _space_id = "space_id" + case can + case enabled + case _content = "content" + case _subject = "subject" + case _header = "header" } - private var _id: AnyString? /** - * ID of the LookML Dashboard (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var can: StringDictionary? + + /** + * If true, custom email content will replace the default body of welcome emails + */ + public var enabled: Bool? + + private var _content: AnyString? + /** + * The HTML to use as custom content for welcome emails. Script elements and other potentially dangerous markup will be removed. + */ + public var content: String? { + get { _content?.value } + set { _content = newValue.map(AnyString.init) } } - private var _title: AnyString? + private var _subject: AnyString? /** - * Title of the LookML Dashboard (read-only) + * The text to appear in the email subject line. Only available with a whitelabel license and whitelabel_configuration.advanced_custom_welcome_email enabled. */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var subject: String? { + get { _subject?.value } + set { _subject = newValue.map(AnyString.init) } } - private var _space_id: AnyString? + private var _header: AnyString? /** - * ID of Space (read-only) + * 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. */ - public var space_id: String? { - get { _space_id?.value } - set { _space_id = newValue.map(AnyString.init) } + public var header: String? { + get { _header?.value } + set { _header = newValue.map(AnyString.init) } } - public init(id: String? = nil, title: String? = nil, space_id: String? = nil) { - self._id = id.map(AnyString.init) - self._title = title.map(AnyString.init) - self._space_id = space_id.map(AnyString.init) + public init(can: StringDictionary? = nil, enabled: Bool? = nil, content: String? = nil, subject: String? = nil, header: String? = nil) { + self.can = can + self.enabled = enabled + self._content = content.map(AnyString.init) + self._subject = subject.map(AnyString.init) + self._header = header.map(AnyString.init) } } -public struct ContentValidationLookMLDashboardElement: SDKModel { +public struct Dashboard: SDKModel { private enum CodingKeys : String, CodingKey { - case _lookml_link_id = "lookml_link_id" + case can + case _content_favorite_id = "content_favorite_id" + case _content_metadata_id = "content_metadata_id" + case _description = "description" + case hidden + case _id = "id" + case model + case _query_timezone = "query_timezone" + case readonly + case _refresh_interval = "refresh_interval" + case _refresh_interval_to_i = "refresh_interval_to_i" + case folder case _title = "title" + case _user_id = "user_id" + case _slug = "slug" + case _preferred_viewer = "preferred_viewer" + case space + case alert_sync_with_dashboard_filter_enabled + case _background_color = "background_color" + case created_at + case crossfilter_enabled + case dashboard_elements + case dashboard_filters + case dashboard_layouts + case deleted + case deleted_at + case _deleter_id = "deleter_id" + case edit_uri + case enable_viz_full_screen + case _favorite_count = "favorite_count" + case filters_bar_collapsed + case filters_location_top + case last_accessed_at + case last_viewed_at + case updated_at + case _last_updater_id = "last_updater_id" + case _last_updater_name = "last_updater_name" + case _user_name = "user_name" + case _load_configuration = "load_configuration" + case _lookml_link_id = "lookml_link_id" + case show_filters_bar + case show_title + case _space_id = "space_id" + case _folder_id = "folder_id" + case _text_tile_text_color = "text_tile_text_color" + case _tile_background_color = "tile_background_color" + case _tile_text_color = "tile_text_color" + case _title_color = "title_color" + case _view_count = "view_count" + case appearance } - private var _lookml_link_id: AnyString? /** - * Link ID of the LookML Dashboard Element (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var lookml_link_id: String? { - get { _lookml_link_id?.value } - set { _lookml_link_id = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _title: AnyString? + private var _content_favorite_id: AnyInt? /** - * Title of the LookML Dashboard Element (read-only) + * Content Favorite Id (read-only) */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var content_favorite_id: Int64? { + get { _content_favorite_id?.value } + set { _content_favorite_id = newValue.map(AnyInt.init) } } - public init(lookml_link_id: String? = nil, title: String? = nil) { - self._lookml_link_id = lookml_link_id.map(AnyString.init) - self._title = title.map(AnyString.init) + private var _content_metadata_id: AnyInt? + /** + * Id of content metadata (read-only) + */ + public var content_metadata_id: Int64? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyInt.init) } } -} - -public struct ContentValidationScheduledPlan: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _look_id = "look_id" - case _id = "id" - } - private var _name: AnyString? + private var _description: AnyString? /** - * Name of this scheduled plan + * Description */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } } - private var _look_id: AnyString? /** - * Id of a look + * Is Hidden */ - public var look_id: String? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } - } + public var hidden: Bool? private var _id: AnyString? /** @@ -3069,4136 +3030,1723 @@ public struct ContentValidationScheduledPlan: SDKModel { set { _id = newValue.map(AnyString.init) } } - public init(name: String? = nil, look_id: String? = nil, id: String? = nil) { - self._name = name.map(AnyString.init) - self._look_id = look_id.map(AnyString.init) - self._id = id.map(AnyString.init) - } - -} - -public struct ContentValidatorError: SDKModel { + public var model: LookModel? - private enum CodingKeys : String, CodingKey { - case look - case dashboard - case dashboard_element - case dashboard_filter - case scheduled_plan - case alert - case lookml_dashboard - case lookml_dashboard_element - case errors - case _id = "id" + private var _query_timezone: AnyString? + /** + * Timezone in which the Dashboard will run by default. + */ + public var query_timezone: String? { + get { _query_timezone?.value } + set { _query_timezone = newValue.map(AnyString.init) } } - public var look: ContentValidationLook? - - public var dashboard: ContentValidationDashboard? - - public var dashboard_element: ContentValidationDashboardElement? - - public var dashboard_filter: ContentValidationDashboardFilter? - - public var scheduled_plan: ContentValidationScheduledPlan? - - public var alert: ContentValidationAlert? - - public var lookml_dashboard: ContentValidationLookMLDashboard? - - public var lookml_dashboard_element: ContentValidationLookMLDashboardElement? /** - * A list of errors found for this piece of content (read-only) + * Is Read-only (read-only) */ - public var errors: [ContentValidationError]? + public var readonly: Bool? - private var _id: AnyString? + private var _refresh_interval: AnyString? /** - * An id unique to this piece of content for this validation run (read-only) + * Refresh Interval, as a time duration phrase like "2 hours 30 minutes". A number with no time units will be interpreted as whole seconds. */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var refresh_interval: String? { + get { _refresh_interval?.value } + set { _refresh_interval = newValue.map(AnyString.init) } } - public init(look: ContentValidationLook? = nil, dashboard: ContentValidationDashboard? = nil, dashboard_element: ContentValidationDashboardElement? = nil, dashboard_filter: ContentValidationDashboardFilter? = nil, scheduled_plan: ContentValidationScheduledPlan? = nil, alert: ContentValidationAlert? = nil, lookml_dashboard: ContentValidationLookMLDashboard? = nil, lookml_dashboard_element: ContentValidationLookMLDashboardElement? = nil, errors: [ContentValidationError]? = nil, id: String? = nil) { - self.look = look - self.dashboard = dashboard - self.dashboard_element = dashboard_element - self.dashboard_filter = dashboard_filter - self.scheduled_plan = scheduled_plan - self.alert = alert - self.lookml_dashboard = lookml_dashboard - self.lookml_dashboard_element = lookml_dashboard_element - self.errors = errors - self._id = id.map(AnyString.init) + private var _refresh_interval_to_i: AnyInt? + /** + * Refresh Interval in milliseconds (read-only) + */ + public var refresh_interval_to_i: Int64? { + get { _refresh_interval_to_i?.value } + set { _refresh_interval_to_i = newValue.map(AnyInt.init) } } -} - -public struct ContentView: SDKModel { + public var folder: FolderBase? - private enum CodingKeys : String, CodingKey { - case can - case _id = "id" - case _look_id = "look_id" - case _dashboard_id = "dashboard_id" - case _title = "title" - case _content_metadata_id = "content_metadata_id" - case _user_id = "user_id" - case _group_id = "group_id" - case _view_count = "view_count" - case _favorite_count = "favorite_count" - case _last_viewed_at = "last_viewed_at" - case _start_of_week_date = "start_of_week_date" - } + private var _title: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * Dashboard Title */ - public var can: StringDictionary? + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } + } - private var _id: AnyString? + private var _user_id: AnyInt? /** - * Unique Id (read-only) + * Id of User (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var user_id: Int64? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyInt.init) } } - private var _look_id: AnyString? + private var _slug: AnyString? /** - * Id of viewed Look (read-only) + * Content Metadata Slug */ - public var look_id: String? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } + public var slug: String? { + get { _slug?.value } + set { _slug = newValue.map(AnyString.init) } } - private var _dashboard_id: AnyString? + private var _preferred_viewer: AnyString? /** - * Id of the viewed Dashboard (read-only) + * The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + public var preferred_viewer: String? { + get { _preferred_viewer?.value } + set { _preferred_viewer = newValue.map(AnyString.init) } } - private var _title: AnyString? + public var space: SpaceBase? + /** - * Name or title of underlying content (read-only) + * Enables alerts to keep in sync with dashboard filter changes */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } - } + public var alert_sync_with_dashboard_filter_enabled: Bool? - private var _content_metadata_id: AnyString? + private var _background_color: AnyString? /** - * Content metadata id of the Look or Dashboard (read-only) + * Background color */ - public var content_metadata_id: String? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } + public var background_color: String? { + get { _background_color?.value } + set { _background_color = newValue.map(AnyString.init) } } - private var _user_id: AnyString? /** - * Id of user content was viewed by (read-only) + * Time that the Dashboard was created. (read-only) */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } - } + public var created_at: Date? - private var _group_id: AnyString? /** - * Id of group content was viewed by (read-only) + * Enables crossfiltering in dashboards - only available in dashboards-next (beta) */ - public var group_id: String? { - get { _group_id?.value } - set { _group_id = newValue.map(AnyString.init) } - } + public var crossfilter_enabled: Bool? - private var _view_count: AnyInt? /** - * Number of times piece of content was viewed (read-only) + * Elements (read-only) */ - public var view_count: Int64? { - get { _view_count?.value } - set { _view_count = newValue.map(AnyInt.init) } + public var dashboard_elements: [DashboardElement]? + + /** + * Filters (read-only) + */ + public var dashboard_filters: [DashboardFilter]? + + /** + * Layouts (read-only) + */ + public var dashboard_layouts: [DashboardLayout]? + + /** + * Whether or not a dashboard is 'soft' deleted. + */ + public var deleted: Bool? + + /** + * Time that the Dashboard was 'soft' deleted. (read-only) + */ + public var deleted_at: Date? + + private var _deleter_id: AnyInt? + /** + * Id of User that 'soft' deleted the dashboard. (read-only) + */ + public var deleter_id: Int64? { + get { _deleter_id?.value } + set { _deleter_id = newValue.map(AnyInt.init) } } + /** + * Relative path of URI of LookML file to edit the dashboard (LookML dashboard only). (read-only) + */ + public var edit_uri: URI? + + /** + * Allow visualizations to be viewed in full screen mode + */ + public var enable_viz_full_screen: Bool? + private var _favorite_count: AnyInt? /** - * Number of times piece of content was favorited (read-only) + * Number of times favorited (read-only) */ public var favorite_count: Int64? { get { _favorite_count?.value } set { _favorite_count = newValue.map(AnyInt.init) } } - private var _last_viewed_at: AnyString? /** - * Date the piece of content was last viewed (read-only) + * Sets the default state of the filters bar to collapsed or open */ - public var last_viewed_at: String? { - get { _last_viewed_at?.value } - set { _last_viewed_at = newValue.map(AnyString.init) } - } + public var filters_bar_collapsed: Bool? - private var _start_of_week_date: AnyString? /** - * Week start date for the view and favorite count during that given week (read-only) + * Sets the default state of the filters location to top(true) or right(false) */ - public var start_of_week_date: String? { - get { _start_of_week_date?.value } - set { _start_of_week_date = newValue.map(AnyString.init) } - } + public var filters_location_top: Bool? - public init(can: StringDictionary? = nil, id: String? = nil, look_id: String? = nil, dashboard_id: String? = nil, title: String? = nil, content_metadata_id: String? = nil, user_id: String? = nil, group_id: String? = nil, view_count: Int64? = nil, favorite_count: Int64? = nil, last_viewed_at: String? = nil, start_of_week_date: String? = nil) { - self.can = can - self._id = id.map(AnyString.init) - self._look_id = look_id.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._title = title.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) - self._group_id = group_id.map(AnyString.init) - self._view_count = view_count.map(AnyInt.init) - self._favorite_count = favorite_count.map(AnyInt.init) - self._last_viewed_at = last_viewed_at.map(AnyString.init) - self._start_of_week_date = start_of_week_date.map(AnyString.init) - } + /** + * Time the dashboard was last accessed (read-only) + */ + public var last_accessed_at: Date? -} + /** + * Time last viewed in the Looker web UI (read-only) + */ + public var last_viewed_at: Date? -public struct ContinuousPalette: SDKModel { + /** + * Time that the Dashboard was most recently updated. (read-only) + */ + public var updated_at: Date? - private enum CodingKeys : String, CodingKey { - case _id = "id" - case _label = "label" - case _type = "type" - case stops - } - private var _id: AnyString? + private var _last_updater_id: AnyInt? /** - * Unique identity string (read-only) + * Id of User that most recently updated the dashboard. (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var last_updater_id: Int64? { + get { _last_updater_id?.value } + set { _last_updater_id = newValue.map(AnyInt.init) } } - private var _label: AnyString? + private var _last_updater_name: AnyString? /** - * Label for palette + * Name of User that most recently updated the dashboard. (read-only) */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } + public var last_updater_name: String? { + get { _last_updater_name?.value } + set { _last_updater_name = newValue.map(AnyString.init) } } - private var _type: AnyString? + private var _user_name: AnyString? /** - * Type of palette + * Name of User that created the dashboard. (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var user_name: String? { + get { _user_name?.value } + set { _user_name = newValue.map(AnyString.init) } } + private var _load_configuration: AnyString? /** - * Array of ColorStops in the palette + * configuration option that governs how dashboard loading will happen. */ - public var stops: [ColorStop]? - - public init(id: String? = nil, label: String? = nil, type: String? = nil, stops: [ColorStop]? = nil) { - self._id = id.map(AnyString.init) - self._label = label.map(AnyString.init) - self._type = type.map(AnyString.init) - self.stops = stops + public var load_configuration: String? { + get { _load_configuration?.value } + set { _load_configuration = newValue.map(AnyString.init) } } -} - -public struct CostEstimate: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _cost = "cost" - case cache_hit - case _cost_unit = "cost_unit" - case _message = "message" - } - private var _cost: AnyInt? + private var _lookml_link_id: AnyString? /** - * Cost of SQL statement (read-only) + * Links this dashboard to a particular LookML dashboard such that calling a **sync** operation on that LookML dashboard will update this dashboard to match. */ - public var cost: Int64? { - get { _cost?.value } - set { _cost = newValue.map(AnyInt.init) } + public var lookml_link_id: String? { + get { _lookml_link_id?.value } + set { _lookml_link_id = newValue.map(AnyString.init) } } /** - * Does the result come from the cache? (read-only) + * 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://cloud.google.com/looker/docs/r/api/control-access) */ - public var cache_hit: Bool? + public var show_filters_bar: Bool? - private var _cost_unit: AnyString? /** - * Cost measurement size (read-only) + * Show title */ - public var cost_unit: String? { - get { _cost_unit?.value } - set { _cost_unit = newValue.map(AnyString.init) } - } + public var show_title: Bool? - private var _message: AnyString? + private var _space_id: AnyString? /** - * Human-friendly message (read-only) + * Id of Space */ - public var message: String? { - get { _message?.value } - set { _message = newValue.map(AnyString.init) } - } - - public init(cost: Int64? = nil, cache_hit: Bool? = nil, cost_unit: String? = nil, message: String? = nil) { - self._cost = cost.map(AnyInt.init) - self.cache_hit = cache_hit - self._cost_unit = cost_unit.map(AnyString.init) - self._message = message.map(AnyString.init) + public var space_id: String? { + get { _space_id?.value } + set { _space_id = newValue.map(AnyString.init) } } -} - -/** - * WARNING: no writeable properties found for POST, PUT, or PATCH - */ -public struct CreateCostEstimate: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _sql = "sql" - } - private var _sql: AnyString? + private var _folder_id: AnyString? /** - * SQL statement to estimate (read-only) + * Id of folder */ - public var sql: String? { - get { _sql?.value } - set { _sql = newValue.map(AnyString.init) } - } - - public init(sql: String? = nil) { - self._sql = sql.map(AnyString.init) - } - -} - -public struct CreateCredentialsApi3: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _id = "id" - case _client_id = "client_id" - case _created_at = "created_at" - case is_disabled - case _type = "type" - case _client_secret = "client_secret" - case _url = "url" + public var folder_id: String? { + get { _folder_id?.value } + set { _folder_id = newValue.map(AnyString.init) } } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - private var _id: AnyString? + private var _text_tile_text_color: AnyString? /** - * Unique Id (read-only) + * Color of text on text tiles */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var text_tile_text_color: String? { + get { _text_tile_text_color?.value } + set { _text_tile_text_color = newValue.map(AnyString.init) } } - private var _client_id: AnyString? + private var _tile_background_color: AnyString? /** - * API key client_id (read-only) + * Tile background color */ - public var client_id: String? { - get { _client_id?.value } - set { _client_id = newValue.map(AnyString.init) } + public var tile_background_color: String? { + get { _tile_background_color?.value } + set { _tile_background_color = newValue.map(AnyString.init) } } - private var _created_at: AnyString? + private var _tile_text_color: AnyString? /** - * Timestamp for the creation of this credential (read-only) + * Tile text color */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } + public var tile_text_color: String? { + get { _tile_text_color?.value } + set { _tile_text_color = newValue.map(AnyString.init) } } + private var _title_color: AnyString? /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _type: AnyString? - /** - * Short name for the type of this kind of credential (read-only) + * Title color */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var title_color: String? { + get { _title_color?.value } + set { _title_color = newValue.map(AnyString.init) } } - private var _client_secret: AnyString? + private var _view_count: AnyInt? /** - * API key client_secret (read-only) + * Number of times viewed in the Looker web UI (read-only) */ - public var client_secret: String? { - get { _client_secret?.value } - set { _client_secret = newValue.map(AnyString.init) } + public var view_count: Int64? { + get { _view_count?.value } + set { _view_count = newValue.map(AnyInt.init) } } - private var _url: AnyString? - /** - * Link to get this item (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var appearance: DashboardAppearance? - public init(can: StringDictionary? = nil, id: String? = nil, client_id: String? = nil, created_at: String? = nil, is_disabled: Bool? = nil, type: String? = nil, client_secret: String? = nil, url: String? = nil) { + public init(can: StringDictionary? = nil, content_favorite_id: Int64? = nil, content_metadata_id: Int64? = nil, description: String? = nil, hidden: Bool? = nil, id: String? = nil, model: LookModel? = nil, query_timezone: String? = nil, readonly: Bool? = nil, refresh_interval: String? = nil, refresh_interval_to_i: Int64? = nil, folder: FolderBase? = nil, title: String? = nil, user_id: Int64? = nil, slug: String? = nil, preferred_viewer: String? = nil, space: SpaceBase? = nil, alert_sync_with_dashboard_filter_enabled: Bool? = nil, background_color: String? = nil, created_at: Date? = nil, crossfilter_enabled: Bool? = nil, dashboard_elements: [DashboardElement]? = nil, dashboard_filters: [DashboardFilter]? = nil, dashboard_layouts: [DashboardLayout]? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: Int64? = nil, edit_uri: URI? = nil, enable_viz_full_screen: Bool? = nil, favorite_count: Int64? = nil, filters_bar_collapsed: Bool? = nil, filters_location_top: Bool? = nil, last_accessed_at: Date? = nil, last_viewed_at: Date? = nil, updated_at: Date? = nil, last_updater_id: Int64? = nil, last_updater_name: String? = nil, user_name: String? = nil, load_configuration: String? = nil, lookml_link_id: String? = nil, show_filters_bar: Bool? = nil, show_title: Bool? = nil, space_id: String? = nil, folder_id: String? = nil, text_tile_text_color: String? = nil, tile_background_color: String? = nil, tile_text_color: String? = nil, title_color: String? = nil, view_count: Int64? = nil, appearance: DashboardAppearance? = nil) { self.can = can + self._content_favorite_id = content_favorite_id.map(AnyInt.init) + self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self._description = description.map(AnyString.init) + self.hidden = hidden self._id = id.map(AnyString.init) - self._client_id = client_id.map(AnyString.init) - self._created_at = created_at.map(AnyString.init) - self.is_disabled = is_disabled - self._type = type.map(AnyString.init) - self._client_secret = client_secret.map(AnyString.init) - self._url = url.map(AnyString.init) + self.model = model + self._query_timezone = query_timezone.map(AnyString.init) + self.readonly = readonly + self._refresh_interval = refresh_interval.map(AnyString.init) + self._refresh_interval_to_i = refresh_interval_to_i.map(AnyInt.init) + self.folder = folder + self._title = title.map(AnyString.init) + self._user_id = user_id.map(AnyInt.init) + self._slug = slug.map(AnyString.init) + self._preferred_viewer = preferred_viewer.map(AnyString.init) + self.space = space + self.alert_sync_with_dashboard_filter_enabled = alert_sync_with_dashboard_filter_enabled + self._background_color = background_color.map(AnyString.init) + self.created_at = created_at + self.crossfilter_enabled = crossfilter_enabled + self.dashboard_elements = dashboard_elements + self.dashboard_filters = dashboard_filters + self.dashboard_layouts = dashboard_layouts + self.deleted = deleted + self.deleted_at = deleted_at + self._deleter_id = deleter_id.map(AnyInt.init) + self.edit_uri = edit_uri + self.enable_viz_full_screen = enable_viz_full_screen + self._favorite_count = favorite_count.map(AnyInt.init) + self.filters_bar_collapsed = filters_bar_collapsed + self.filters_location_top = filters_location_top + self.last_accessed_at = last_accessed_at + self.last_viewed_at = last_viewed_at + self.updated_at = updated_at + self._last_updater_id = last_updater_id.map(AnyInt.init) + self._last_updater_name = last_updater_name.map(AnyString.init) + self._user_name = user_name.map(AnyString.init) + self._load_configuration = load_configuration.map(AnyString.init) + self._lookml_link_id = lookml_link_id.map(AnyString.init) + self.show_filters_bar = show_filters_bar + self.show_title = show_title + self._space_id = space_id.map(AnyString.init) + self._folder_id = folder_id.map(AnyString.init) + self._text_tile_text_color = text_tile_text_color.map(AnyString.init) + self._tile_background_color = tile_background_color.map(AnyString.init) + self._tile_text_color = tile_text_color.map(AnyString.init) + self._title_color = title_color.map(AnyString.init) + self._view_count = view_count.map(AnyInt.init) + self.appearance = appearance } } -public struct CreateDashboardFilter: SDKModel { +public struct DashboardAggregateTableLookml: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" case _dashboard_id = "dashboard_id" - case _name = "name" - case _title = "title" - case _type = "type" - case _default_value = "default_value" - case _model = "model" - case _explore = "explore" - case _dimension = "dimension" - case field - case _row = "row" - case _listens_to_filters = "listens_to_filters" - case allow_multiple_values - case required - case ui_config + case _aggregate_table_lookml = "aggregate_table_lookml" } - private var _id: AnyString? + private var _dashboard_id: AnyString? /** - * Unique Id (read-only) + * Dashboard Id (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } - private var _dashboard_id: AnyString + private var _aggregate_table_lookml: AnyString? /** - * Id of Dashboard + * Aggregate Table LookML (read-only) */ - public var dashboard_id: String { - get { _dashboard_id.value } - set { _dashboard_id = AnyString.init(newValue) } + public var aggregate_table_lookml: String? { + get { _aggregate_table_lookml?.value } + set { _aggregate_table_lookml = newValue.map(AnyString.init) } } - private var _name: AnyString - /** - * Name of filter - */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } + public init(dashboard_id: String? = nil, aggregate_table_lookml: String? = nil) { + self._dashboard_id = dashboard_id.map(AnyString.init) + self._aggregate_table_lookml = aggregate_table_lookml.map(AnyString.init) } - private var _title: AnyString +} + +public struct DashboardAppearance: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _page_side_margins = "page_side_margins" + case _page_background_color = "page_background_color" + case _tile_title_alignment = "tile_title_alignment" + case _tile_space_between = "tile_space_between" + case _tile_background_color = "tile_background_color" + case tile_shadow + case _key_color = "key_color" + } + private var _page_side_margins: AnyInt? /** - * Title of filter + * Page margin (side) width */ - public var title: String { - get { _title.value } - set { _title = AnyString.init(newValue) } + public var page_side_margins: Int64? { + get { _page_side_margins?.value } + set { _page_side_margins = newValue.map(AnyInt.init) } } - private var _type: AnyString + private var _page_background_color: AnyString? /** - * Type of filter: one of date, number, string, or field + * Background color for the dashboard */ - public var type: String { - get { _type.value } - set { _type = AnyString.init(newValue) } + public var page_background_color: String? { + get { _page_background_color?.value } + set { _page_background_color = newValue.map(AnyString.init) } } - private var _default_value: AnyString? + private var _tile_title_alignment: AnyString? /** - * Default value of filter + * Title alignment on dashboard tiles */ - public var default_value: String? { - get { _default_value?.value } - set { _default_value = newValue.map(AnyString.init) } + public var tile_title_alignment: String? { + get { _tile_title_alignment?.value } + set { _tile_title_alignment = newValue.map(AnyString.init) } } - private var _model: AnyString? + private var _tile_space_between: AnyInt? /** - * Model of filter (required if type = field) + * Space between tiles */ - public var model: String? { - get { _model?.value } - set { _model = newValue.map(AnyString.init) } + public var tile_space_between: Int64? { + get { _tile_space_between?.value } + set { _tile_space_between = newValue.map(AnyInt.init) } } - private var _explore: AnyString? + private var _tile_background_color: AnyString? /** - * Explore of filter (required if type = field) + * Background color for tiles */ - public var explore: String? { - get { _explore?.value } - set { _explore = newValue.map(AnyString.init) } + public var tile_background_color: String? { + get { _tile_background_color?.value } + set { _tile_background_color = newValue.map(AnyString.init) } } - private var _dimension: AnyString? /** - * Dimension of filter (required if type = field) + * Tile shadow on/off */ - public var dimension: String? { - get { _dimension?.value } - set { _dimension = newValue.map(AnyString.init) } - } - - /** - * Field information (read-only) - */ - public var field: StringDictionary? - - private var _row: AnyInt? - /** - * Display order of this filter relative to other filters - */ - public var row: Int64? { - get { _row?.value } - set { _row = newValue.map(AnyInt.init) } - } - - private var _listens_to_filters: [AnyString]? - /** - * Array of listeners for faceted filters - */ - public var listens_to_filters: [String]? { - get { if let v = _listens_to_filters { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } } - } - - /** - * Whether the filter allows multiple filter values (deprecated in the latest version of dashboards) - */ - public var allow_multiple_values: Bool? - - /** - * Whether the filter requires a value to run the dashboard - */ - public var required: Bool? - - /** - * The visual configuration for this filter. Used to set up how the UI for this filter should appear. - */ - public var ui_config: StringDictionary? - - public init(id: String? = nil, dashboard_id: String, name: String, title: String, type: String, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil, field: StringDictionary? = nil, row: Int64? = nil, listens_to_filters: [String]? = nil, allow_multiple_values: Bool? = nil, required: Bool? = nil, ui_config: StringDictionary? = nil) { - self._id = id.map(AnyString.init) - self._dashboard_id = AnyString.init(dashboard_id) - self._name = AnyString.init(name) - self._title = AnyString.init(title) - self._type = AnyString.init(type) - self._default_value = default_value.map(AnyString.init) - self._model = model.map(AnyString.init) - self._explore = explore.map(AnyString.init) - self._dimension = dimension.map(AnyString.init) - self.field = field - self._row = row.map(AnyInt.init) - if let v = listens_to_filters { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } - self.allow_multiple_values = allow_multiple_values - self.required = required - self.ui_config = ui_config - } - - public init(id: String? = nil, _ dashboard_id: String, _ name: String, _ title: String, _ type: String, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil, field: StringDictionary? = nil, row: Int64? = nil, listens_to_filters: [String]? = nil, allow_multiple_values: Bool? = nil, required: Bool? = nil, ui_config: StringDictionary? = nil) { - self.init(id: id, dashboard_id: dashboard_id, name: name, title: title, type: type, default_value: default_value, model: model, explore: explore, dimension: dimension, field: field, row: row, listens_to_filters: listens_to_filters, allow_multiple_values: allow_multiple_values, required: required, ui_config: ui_config) - } - -} - -public struct CreateDashboardRenderTask: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _dashboard_filters = "dashboard_filters" - case _dashboard_style = "dashboard_style" - } - private var _dashboard_filters: AnyString? - /** - * Filter values to apply to the dashboard queries, in URL query format - */ - public var dashboard_filters: String? { - get { _dashboard_filters?.value } - set { _dashboard_filters = newValue.map(AnyString.init) } - } - - private var _dashboard_style: AnyString? - /** - * Dashboard layout style: single_column or tiled - */ - public var dashboard_style: String? { - get { _dashboard_style?.value } - set { _dashboard_style = newValue.map(AnyString.init) } - } - - public init(dashboard_filters: String? = nil, dashboard_style: String? = nil) { - self._dashboard_filters = dashboard_filters.map(AnyString.init) - self._dashboard_style = dashboard_style.map(AnyString.init) - } - -} - -public struct CreateEmbedUserRequest: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _external_user_id = "external_user_id" - } - private var _external_user_id: AnyString - public var external_user_id: String { - get { _external_user_id.value } - set { _external_user_id = AnyString.init(newValue) } - } - - public init(external_user_id: String) { - self._external_user_id = AnyString.init(external_user_id) - } - - public init(_ external_user_id: String) { - self.init(external_user_id: external_user_id) - } - -} - -public struct CreateFolder: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _parent_id = "parent_id" - } - private var _name: AnyString - /** - * Unique Name - */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } - } - - private var _parent_id: AnyString - /** - * Id of Parent. If the parent id is null, this is a root-level entry - */ - public var parent_id: String { - get { _parent_id.value } - set { _parent_id = AnyString.init(newValue) } - } - - public init(name: String, parent_id: String) { - self._name = AnyString.init(name) - self._parent_id = AnyString.init(parent_id) - } - - public init(_ name: String, _ parent_id: String) { - self.init(name: name, parent_id: parent_id) - } - -} - -public struct CreateOAuthApplicationUserStateRequest: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _user_id = "user_id" - case _oauth_application_id = "oauth_application_id" - case _access_token = "access_token" - case access_token_expires_at - case _refresh_token = "refresh_token" - case refresh_token_expires_at - } - private var _user_id: AnyString - public var user_id: String { - get { _user_id.value } - set { _user_id = AnyString.init(newValue) } - } - - private var _oauth_application_id: AnyString - public var oauth_application_id: String { - get { _oauth_application_id.value } - set { _oauth_application_id = AnyString.init(newValue) } - } - - private var _access_token: AnyString - public var access_token: String { - get { _access_token.value } - set { _access_token = AnyString.init(newValue) } - } - - public var access_token_expires_at: Date - - private var _refresh_token: AnyString? - public var refresh_token: String? { - get { _refresh_token?.value } - set { _refresh_token = newValue.map(AnyString.init) } - } - - public var refresh_token_expires_at: Date? - - public init(user_id: String, oauth_application_id: String, access_token: String, access_token_expires_at: Date, refresh_token: String? = nil, refresh_token_expires_at: Date? = nil) { - self._user_id = AnyString.init(user_id) - self._oauth_application_id = AnyString.init(oauth_application_id) - self._access_token = AnyString.init(access_token) - self.access_token_expires_at = access_token_expires_at - self._refresh_token = refresh_token.map(AnyString.init) - self.refresh_token_expires_at = refresh_token_expires_at - } - - public init(_ user_id: String, _ oauth_application_id: String, _ access_token: String, _ access_token_expires_at: Date, refresh_token: String? = nil, refresh_token_expires_at: Date? = nil) { - self.init(user_id: user_id, oauth_application_id: oauth_application_id, access_token: access_token, access_token_expires_at: access_token_expires_at, refresh_token: refresh_token, refresh_token_expires_at: refresh_token_expires_at) - } - -} - -public struct CreateOAuthApplicationUserStateResponse: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _user_id = "user_id" - case _oauth_application_id = "oauth_application_id" - } - private var _user_id: AnyString - /** - * User Id (read-only) - */ - public var user_id: String { - get { _user_id.value } - set { _user_id = AnyString.init(newValue) } - } - - private var _oauth_application_id: AnyString - /** - * OAuth Application ID (read-only) - */ - public var oauth_application_id: String { - get { _oauth_application_id.value } - set { _oauth_application_id = AnyString.init(newValue) } - } - - public init(user_id: String, oauth_application_id: String) { - self._user_id = AnyString.init(user_id) - self._oauth_application_id = AnyString.init(oauth_application_id) - } - - public init(_ user_id: String, _ oauth_application_id: String) { - self.init(user_id: user_id, oauth_application_id: oauth_application_id) - } - -} - -public struct CreateQueryTask: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _query_id = "query_id" - case result_format - case _source = "source" - case deferred - case _look_id = "look_id" - case _dashboard_id = "dashboard_id" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _query_id: AnyString - /** - * Id of query to run - */ - public var query_id: String { - get { _query_id.value } - set { _query_id = AnyString.init(newValue) } - } - - /** - * Desired async query result format. Valid values are: "inline_json", "json", "json_detail", "json_fe", "json_bi", "csv", "html", "md", "txt", "xlsx", "gsxml", "sql". - */ - public var result_format: ResultFormat - - private var _source: AnyString? - /** - * Source of query task - */ - public var source: String? { - get { _source?.value } - set { _source = newValue.map(AnyString.init) } - } - - /** - * Create the task but defer execution - */ - public var deferred: Bool? - - private var _look_id: AnyString? - /** - * Id of look associated with query. - */ - public var look_id: String? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } - } - - private var _dashboard_id: AnyString? - /** - * Id of dashboard associated with query. - */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, query_id: String, result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: String? = nil, dashboard_id: String? = nil) { - self.can = can - self._query_id = AnyString.init(query_id) - self.result_format = result_format - self._source = source.map(AnyString.init) - self.deferred = deferred - self._look_id = look_id.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - } - - public init(can: StringDictionary? = nil, _ query_id: String, _ result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: String? = nil, dashboard_id: String? = nil) { - self.init(can: can, query_id: query_id, result_format: result_format, source: source, deferred: deferred, look_id: look_id, dashboard_id: dashboard_id) - } - -} - -public struct CredentialsApi3: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _id = "id" - case _client_id = "client_id" - case _created_at = "created_at" - case is_disabled - case _type = "type" - case _url = "url" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _id: AnyString? - /** - * Unique Id (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - private var _client_id: AnyString? - /** - * API key client_id (read-only) - */ - public var client_id: String? { - get { _client_id?.value } - set { _client_id = newValue.map(AnyString.init) } - } - - private var _created_at: AnyString? - /** - * Timestamp for the creation of this credential (read-only) - */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } - } - - /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _type: AnyString? - /** - * Short name for the type of this kind of credential (read-only) - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - private var _url: AnyString? - /** - * Link to get this item (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, id: String? = nil, client_id: String? = nil, created_at: String? = nil, is_disabled: Bool? = nil, type: String? = nil, url: String? = nil) { - self.can = can - self._id = id.map(AnyString.init) - self._client_id = client_id.map(AnyString.init) - self._created_at = created_at.map(AnyString.init) - self.is_disabled = is_disabled - self._type = type.map(AnyString.init) - self._url = url.map(AnyString.init) - } - -} - -public struct CredentialsEmail: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _email = "email" - case forced_password_reset_at_next_login - case _user_id = "user_id" - case is_disabled - case _logged_in_at = "logged_in_at" - case _password_reset_url = "password_reset_url" - case _account_setup_url = "account_setup_url" - case _type = "type" - case _url = "url" - case _user_url = "user_url" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _created_at: AnyString? - /** - * Timestamp for the creation of this credential (read-only) - */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } - } - - private var _email: AnyString? - /** - * EMail address used for user login - */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } - } - - /** - * Force the user to change their password upon their next login - */ - public var forced_password_reset_at_next_login: Bool? - - private var _user_id: AnyString? - /** - * Unique Id of the user (read-only) - */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } - } - - /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _logged_in_at: AnyString? - /** - * Timestamp for most recent login using credential (read-only) - */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } - } - - private var _password_reset_url: AnyString? - /** - * Url with one-time use secret token that the user can use to reset password (read-only) - */ - public var password_reset_url: String? { - get { _password_reset_url?.value } - set { _password_reset_url = newValue.map(AnyString.init) } - } - - private var _account_setup_url: AnyString? - /** - * Url with one-time use secret token that the user can use to setup account (read-only) - */ - public var account_setup_url: String? { - get { _account_setup_url?.value } - set { _account_setup_url = newValue.map(AnyString.init) } - } - - private var _type: AnyString? - /** - * Short name for the type of this kind of credential (read-only) - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - private var _url: AnyString? - /** - * Link to get this item (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - private var _user_url: AnyString? - /** - * Link to get this user (read-only) - */ - public var user_url: String? { - get { _user_url?.value } - set { _user_url = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, forced_password_reset_at_next_login: Bool? = nil, user_id: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, password_reset_url: String? = nil, account_setup_url: String? = nil, type: String? = nil, url: String? = nil, user_url: String? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._email = email.map(AnyString.init) - self.forced_password_reset_at_next_login = forced_password_reset_at_next_login - self._user_id = user_id.map(AnyString.init) - self.is_disabled = is_disabled - self._logged_in_at = logged_in_at.map(AnyString.init) - self._password_reset_url = password_reset_url.map(AnyString.init) - self._account_setup_url = account_setup_url.map(AnyString.init) - self._type = type.map(AnyString.init) - self._url = url.map(AnyString.init) - self._user_url = user_url.map(AnyString.init) - } - -} - -public struct CredentialsEmailSearch: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _email = "email" - case forced_password_reset_at_next_login - case _user_id = "user_id" - case is_disabled - case _logged_in_at = "logged_in_at" - case _password_reset_url = "password_reset_url" - case _account_setup_url = "account_setup_url" - case _type = "type" - case _url = "url" - case _user_url = "user_url" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _created_at: AnyString? - /** - * Timestamp for the creation of this credential (read-only) - */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } - } - - private var _email: AnyString? - /** - * EMail address used for user login - */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } - } - - /** - * Force the user to change their password upon their next login - */ - public var forced_password_reset_at_next_login: Bool? - - private var _user_id: AnyString? - /** - * Unique Id of the user (read-only) - */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } - } - - /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _logged_in_at: AnyString? - /** - * Timestamp for most recent login using credential (read-only) - */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } - } - - private var _password_reset_url: AnyString? - /** - * Url with one-time use secret token that the user can use to reset password (read-only) - */ - public var password_reset_url: String? { - get { _password_reset_url?.value } - set { _password_reset_url = newValue.map(AnyString.init) } - } - - private var _account_setup_url: AnyString? - /** - * Url with one-time use secret token that the user can use to setup account (read-only) - */ - public var account_setup_url: String? { - get { _account_setup_url?.value } - set { _account_setup_url = newValue.map(AnyString.init) } - } - - private var _type: AnyString? - /** - * Short name for the type of this kind of credential (read-only) - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - private var _url: AnyString? - /** - * Link to get this item (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - private var _user_url: AnyString? - /** - * Link to get this user (read-only) - */ - public var user_url: String? { - get { _user_url?.value } - set { _user_url = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, forced_password_reset_at_next_login: Bool? = nil, user_id: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, password_reset_url: String? = nil, account_setup_url: String? = nil, type: String? = nil, url: String? = nil, user_url: String? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._email = email.map(AnyString.init) - self.forced_password_reset_at_next_login = forced_password_reset_at_next_login - self._user_id = user_id.map(AnyString.init) - self.is_disabled = is_disabled - self._logged_in_at = logged_in_at.map(AnyString.init) - self._password_reset_url = password_reset_url.map(AnyString.init) - self._account_setup_url = account_setup_url.map(AnyString.init) - self._type = type.map(AnyString.init) - self._url = url.map(AnyString.init) - self._user_url = user_url.map(AnyString.init) - } - -} - -public struct CredentialsEmbed: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _external_group_id = "external_group_id" - case _external_user_id = "external_user_id" - case _id = "id" - case is_disabled - case _logged_in_at = "logged_in_at" - case _type = "type" - case _url = "url" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _created_at: AnyString? - /** - * Timestamp for the creation of this credential (read-only) - */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } - } - - private var _external_group_id: AnyString? - /** - * Embedder's id for a group to which this user was added during the most recent login (read-only) - */ - public var external_group_id: String? { - get { _external_group_id?.value } - set { _external_group_id = newValue.map(AnyString.init) } - } - - private var _external_user_id: AnyString? - /** - * Embedder's unique id for the user (read-only) - */ - public var external_user_id: String? { - get { _external_user_id?.value } - set { _external_user_id = newValue.map(AnyString.init) } - } - - private var _id: AnyString? - /** - * Unique Id (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _logged_in_at: AnyString? - /** - * Timestamp for most recent login using credential (read-only) - */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } - } - - private var _type: AnyString? - /** - * Short name for the type of this kind of credential (read-only) - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - private var _url: AnyString? - /** - * Link to get this item (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, created_at: String? = nil, external_group_id: String? = nil, external_user_id: String? = nil, id: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, type: String? = nil, url: String? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._external_group_id = external_group_id.map(AnyString.init) - self._external_user_id = external_user_id.map(AnyString.init) - self._id = id.map(AnyString.init) - self.is_disabled = is_disabled - self._logged_in_at = logged_in_at.map(AnyString.init) - self._type = type.map(AnyString.init) - self._url = url.map(AnyString.init) - } - -} - -public struct CredentialsGoogle: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _domain = "domain" - case _email = "email" - case _google_user_id = "google_user_id" - case is_disabled - case _logged_in_at = "logged_in_at" - case _type = "type" - case _url = "url" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _created_at: AnyString? - /** - * Timestamp for the creation of this credential (read-only) - */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } - } - - private var _domain: AnyString? - /** - * Google domain (read-only) - */ - public var domain: String? { - get { _domain?.value } - set { _domain = newValue.map(AnyString.init) } - } - - private var _email: AnyString? - /** - * EMail address (read-only) - */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } - } - - private var _google_user_id: AnyString? - /** - * Google's Unique ID for this user (read-only) - */ - public var google_user_id: String? { - get { _google_user_id?.value } - set { _google_user_id = newValue.map(AnyString.init) } - } - - /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _logged_in_at: AnyString? - /** - * Timestamp for most recent login using credential (read-only) - */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } - } - - private var _type: AnyString? - /** - * Short name for the type of this kind of credential (read-only) - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - private var _url: AnyString? - /** - * Link to get this item (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, created_at: String? = nil, domain: String? = nil, email: String? = nil, google_user_id: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, type: String? = nil, url: String? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._domain = domain.map(AnyString.init) - self._email = email.map(AnyString.init) - self._google_user_id = google_user_id.map(AnyString.init) - self.is_disabled = is_disabled - self._logged_in_at = logged_in_at.map(AnyString.init) - self._type = type.map(AnyString.init) - self._url = url.map(AnyString.init) - } - -} - -public struct CredentialsLDAP: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _email = "email" - case is_disabled - case _ldap_dn = "ldap_dn" - case _ldap_id = "ldap_id" - case _logged_in_at = "logged_in_at" - case _type = "type" - case _url = "url" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _created_at: AnyString? - /** - * Timestamp for the creation of this credential (read-only) - */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } - } - - private var _email: AnyString? - /** - * EMail address (read-only) - */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } - } - - /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _ldap_dn: AnyString? - /** - * LDAP Distinguished name for this user (as-of the last login) (read-only) - */ - public var ldap_dn: String? { - get { _ldap_dn?.value } - set { _ldap_dn = newValue.map(AnyString.init) } - } - - private var _ldap_id: AnyString? - /** - * LDAP Unique ID for this user (read-only) - */ - public var ldap_id: String? { - get { _ldap_id?.value } - set { _ldap_id = newValue.map(AnyString.init) } - } - - private var _logged_in_at: AnyString? - /** - * Timestamp for most recent login using credential (read-only) - */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } - } - - private var _type: AnyString? - /** - * Short name for the type of this kind of credential (read-only) - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - private var _url: AnyString? - /** - * Link to get this item (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, ldap_dn: String? = nil, ldap_id: String? = nil, logged_in_at: String? = nil, type: String? = nil, url: String? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._email = email.map(AnyString.init) - self.is_disabled = is_disabled - self._ldap_dn = ldap_dn.map(AnyString.init) - self._ldap_id = ldap_id.map(AnyString.init) - self._logged_in_at = logged_in_at.map(AnyString.init) - self._type = type.map(AnyString.init) - self._url = url.map(AnyString.init) - } - -} - -public struct CredentialsLookerOpenid: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _email = "email" - case is_disabled - case _logged_in_at = "logged_in_at" - case _logged_in_ip = "logged_in_ip" - case _type = "type" - case _url = "url" - case _user_url = "user_url" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _created_at: AnyString? - /** - * Timestamp for the creation of this credential (read-only) - */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } - } - - private var _email: AnyString? - /** - * EMail address used for user login (read-only) - */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } - } - - /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _logged_in_at: AnyString? - /** - * Timestamp for most recent login using credential (read-only) - */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } - } - - private var _logged_in_ip: AnyString? - /** - * IP address of client for most recent login using credential (read-only) - */ - public var logged_in_ip: String? { - get { _logged_in_ip?.value } - set { _logged_in_ip = newValue.map(AnyString.init) } - } - - private var _type: AnyString? - /** - * Short name for the type of this kind of credential (read-only) - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - private var _url: AnyString? - /** - * Link to get this item (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - private var _user_url: AnyString? - /** - * Link to get this user (read-only) - */ - public var user_url: String? { - get { _user_url?.value } - set { _user_url = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, logged_in_ip: String? = nil, type: String? = nil, url: String? = nil, user_url: String? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._email = email.map(AnyString.init) - self.is_disabled = is_disabled - self._logged_in_at = logged_in_at.map(AnyString.init) - self._logged_in_ip = logged_in_ip.map(AnyString.init) - self._type = type.map(AnyString.init) - self._url = url.map(AnyString.init) - self._user_url = user_url.map(AnyString.init) - } - -} - -public struct CredentialsOIDC: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _email = "email" - case is_disabled - case _logged_in_at = "logged_in_at" - case _oidc_user_id = "oidc_user_id" - case _type = "type" - case _url = "url" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _created_at: AnyString? - /** - * Timestamp for the creation of this credential (read-only) - */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } - } - - private var _email: AnyString? - /** - * EMail address (read-only) - */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } - } - - /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _logged_in_at: AnyString? - /** - * Timestamp for most recent login using credential (read-only) - */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } - } - - private var _oidc_user_id: AnyString? - /** - * OIDC OP's Unique ID for this user (read-only) - */ - public var oidc_user_id: String? { - get { _oidc_user_id?.value } - set { _oidc_user_id = newValue.map(AnyString.init) } - } - - private var _type: AnyString? - /** - * Short name for the type of this kind of credential (read-only) - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - private var _url: AnyString? - /** - * Link to get this item (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, oidc_user_id: String? = nil, type: String? = nil, url: String? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._email = email.map(AnyString.init) - self.is_disabled = is_disabled - self._logged_in_at = logged_in_at.map(AnyString.init) - self._oidc_user_id = oidc_user_id.map(AnyString.init) - self._type = type.map(AnyString.init) - self._url = url.map(AnyString.init) - } - -} - -public struct CredentialsSaml: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _email = "email" - case is_disabled - case _logged_in_at = "logged_in_at" - case _saml_user_id = "saml_user_id" - case _type = "type" - case _url = "url" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _created_at: AnyString? - /** - * Timestamp for the creation of this credential (read-only) - */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } - } - - private var _email: AnyString? - /** - * EMail address (read-only) - */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } - } - - /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _logged_in_at: AnyString? - /** - * Timestamp for most recent login using credential (read-only) - */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } - } - - private var _saml_user_id: AnyString? - /** - * Saml IdP's Unique ID for this user (read-only) - */ - public var saml_user_id: String? { - get { _saml_user_id?.value } - set { _saml_user_id = newValue.map(AnyString.init) } - } - - private var _type: AnyString? - /** - * Short name for the type of this kind of credential (read-only) - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - private var _url: AnyString? - /** - * Link to get this item (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, saml_user_id: String? = nil, type: String? = nil, url: String? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._email = email.map(AnyString.init) - self.is_disabled = is_disabled - self._logged_in_at = logged_in_at.map(AnyString.init) - self._saml_user_id = saml_user_id.map(AnyString.init) - self._type = type.map(AnyString.init) - self._url = url.map(AnyString.init) - } - -} - -/** - * WARNING: no writeable properties found for POST, PUT, or PATCH - */ -public struct CredentialsTotp: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case is_disabled - case _type = "type" - case verified - case _url = "url" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _created_at: AnyString? - /** - * Timestamp for the creation of this credential (read-only) - */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } - } - - /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _type: AnyString? - /** - * Short name for the type of this kind of credential (read-only) - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - /** - * User has verified (read-only) - */ - public var verified: Bool? - - private var _url: AnyString? - /** - * Link to get this item (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, created_at: String? = nil, is_disabled: Bool? = nil, type: String? = nil, verified: Bool? = nil, url: String? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self.is_disabled = is_disabled - self._type = type.map(AnyString.init) - self.verified = verified - self._url = url.map(AnyString.init) - } - -} - -public struct CustomWelcomeEmail: SDKModel { - - private enum CodingKeys : String, CodingKey { - case enabled - case _content = "content" - case _subject = "subject" - case _header = "header" - } - /** - * If true, custom email content will replace the default body of welcome emails - */ - public var enabled: Bool? - - private var _content: AnyString? - /** - * The HTML to use as custom content for welcome emails. Script elements and other potentially dangerous markup will be removed. - */ - public var content: String? { - get { _content?.value } - set { _content = newValue.map(AnyString.init) } - } - - private var _subject: AnyString? - /** - * The text to appear in the email subject line. Only available with a whitelabel license and whitelabel_configuration.advanced_custom_welcome_email enabled. - */ - public var subject: String? { - get { _subject?.value } - set { _subject = newValue.map(AnyString.init) } - } - - private var _header: AnyString? - /** - * 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. - */ - public var header: String? { - get { _header?.value } - set { _header = newValue.map(AnyString.init) } - } - - public init(enabled: Bool? = nil, content: String? = nil, subject: String? = nil, header: String? = nil) { - self.enabled = enabled - self._content = content.map(AnyString.init) - self._subject = subject.map(AnyString.init) - self._header = header.map(AnyString.init) - } - -} - -public struct Dashboard: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _content_favorite_id = "content_favorite_id" - case _content_metadata_id = "content_metadata_id" - case _description = "description" - case hidden - case _id = "id" - case model - case _query_timezone = "query_timezone" - case readonly - case _refresh_interval = "refresh_interval" - case _refresh_interval_to_i = "refresh_interval_to_i" - case folder - case _title = "title" - case _user_id = "user_id" - case _slug = "slug" - case _preferred_viewer = "preferred_viewer" - case alert_sync_with_dashboard_filter_enabled - case _background_color = "background_color" - case created_at - case crossfilter_enabled - case dashboard_elements - case dashboard_filters - case dashboard_layouts - case deleted - case deleted_at - case _deleter_id = "deleter_id" - case _edit_uri = "edit_uri" - case enable_viz_full_screen - case _favorite_count = "favorite_count" - case filters_bar_collapsed - case filters_location_top - case last_accessed_at - case last_viewed_at - case updated_at - case _last_updater_id = "last_updater_id" - case _last_updater_name = "last_updater_name" - case _user_name = "user_name" - case _load_configuration = "load_configuration" - case _lookml_link_id = "lookml_link_id" - case show_filters_bar - case show_title - case _folder_id = "folder_id" - case _text_tile_text_color = "text_tile_text_color" - case _tile_background_color = "tile_background_color" - case _tile_text_color = "tile_text_color" - case _title_color = "title_color" - case _view_count = "view_count" - case appearance - case _url = "url" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _content_favorite_id: AnyString? - /** - * Content Favorite Id (read-only) - */ - public var content_favorite_id: String? { - get { _content_favorite_id?.value } - set { _content_favorite_id = newValue.map(AnyString.init) } - } - - private var _content_metadata_id: AnyString? - /** - * Id of content metadata (read-only) - */ - public var content_metadata_id: String? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } - } - - private var _description: AnyString? - /** - * Description - */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } - } - - /** - * Is Hidden - */ - public var hidden: Bool? - - private var _id: AnyString? - /** - * Unique Id (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - public var model: LookModel? - - private var _query_timezone: AnyString? - /** - * Timezone in which the Dashboard will run by default. - */ - public var query_timezone: String? { - get { _query_timezone?.value } - set { _query_timezone = newValue.map(AnyString.init) } - } - - /** - * Is Read-only (read-only) - */ - public var readonly: Bool? - - private var _refresh_interval: AnyString? - /** - * Refresh Interval, as a time duration phrase like "2 hours 30 minutes". A number with no time units will be interpreted as whole seconds. - */ - public var refresh_interval: String? { - get { _refresh_interval?.value } - set { _refresh_interval = newValue.map(AnyString.init) } - } - - private var _refresh_interval_to_i: AnyInt? - /** - * Refresh Interval in milliseconds (read-only) - */ - public var refresh_interval_to_i: Int64? { - get { _refresh_interval_to_i?.value } - set { _refresh_interval_to_i = newValue.map(AnyInt.init) } - } - - public var folder: FolderBase? - - private var _title: AnyString? - /** - * Dashboard Title - */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } - } - - private var _user_id: AnyString? - /** - * Id of User (read-only) - */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } - } - - private var _slug: AnyString? - /** - * Content Metadata Slug - */ - public var slug: String? { - get { _slug?.value } - set { _slug = newValue.map(AnyString.init) } - } - - private var _preferred_viewer: AnyString? - /** - * The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) - */ - public var preferred_viewer: String? { - get { _preferred_viewer?.value } - set { _preferred_viewer = newValue.map(AnyString.init) } - } - - /** - * Enables alerts to keep in sync with dashboard filter changes - */ - public var alert_sync_with_dashboard_filter_enabled: Bool? - - private var _background_color: AnyString? - /** - * Background color - */ - public var background_color: String? { - get { _background_color?.value } - set { _background_color = newValue.map(AnyString.init) } - } - - /** - * Time that the Dashboard was created. (read-only) - */ - public var created_at: Date? - - /** - * Enables crossfiltering in dashboards - only available in dashboards-next (beta) - */ - public var crossfilter_enabled: Bool? - - /** - * Elements (read-only) - */ - public var dashboard_elements: [DashboardElement]? - - /** - * Filters (read-only) - */ - public var dashboard_filters: [DashboardFilter]? - - /** - * Layouts (read-only) - */ - public var dashboard_layouts: [DashboardLayout]? - - /** - * Whether or not a dashboard is 'soft' deleted. - */ - public var deleted: Bool? - - /** - * Time that the Dashboard was 'soft' deleted. (read-only) - */ - public var deleted_at: Date? - - private var _deleter_id: AnyString? - /** - * Id of User that 'soft' deleted the dashboard. (read-only) - */ - public var deleter_id: String? { - get { _deleter_id?.value } - set { _deleter_id = newValue.map(AnyString.init) } - } - - private var _edit_uri: AnyString? - /** - * Relative path of URI of LookML file to edit the dashboard (LookML dashboard only). (read-only) - */ - public var edit_uri: String? { - get { _edit_uri?.value } - set { _edit_uri = newValue.map(AnyString.init) } - } - - /** - * Allow visualizations to be viewed in full screen mode - */ - public var enable_viz_full_screen: Bool? - - private var _favorite_count: AnyInt? - /** - * Number of times favorited (read-only) - */ - public var favorite_count: Int64? { - get { _favorite_count?.value } - set { _favorite_count = newValue.map(AnyInt.init) } - } - - /** - * Sets the default state of the filters bar to collapsed or open - */ - public var filters_bar_collapsed: Bool? - - /** - * Sets the default state of the filters location to top(true) or right(false) - */ - public var filters_location_top: Bool? - - /** - * Time the dashboard was last accessed (read-only) - */ - public var last_accessed_at: Date? - - /** - * Time last viewed in the Looker web UI (read-only) - */ - public var last_viewed_at: Date? - - /** - * Time that the Dashboard was most recently updated. (read-only) - */ - public var updated_at: Date? - - private var _last_updater_id: AnyString? - /** - * Id of User that most recently updated the dashboard. (read-only) - */ - public var last_updater_id: String? { - get { _last_updater_id?.value } - set { _last_updater_id = newValue.map(AnyString.init) } - } - - private var _last_updater_name: AnyString? - /** - * Name of User that most recently updated the dashboard. (read-only) - */ - public var last_updater_name: String? { - get { _last_updater_name?.value } - set { _last_updater_name = newValue.map(AnyString.init) } - } - - private var _user_name: AnyString? - /** - * Name of User that created the dashboard. (read-only) - */ - public var user_name: String? { - get { _user_name?.value } - set { _user_name = newValue.map(AnyString.init) } - } - - private var _load_configuration: AnyString? - /** - * configuration option that governs how dashboard loading will happen. - */ - public var load_configuration: String? { - get { _load_configuration?.value } - set { _load_configuration = newValue.map(AnyString.init) } - } - - private var _lookml_link_id: AnyString? - /** - * Links this dashboard to a particular LookML dashboard such that calling a **sync** operation on that LookML dashboard will update this dashboard to match. - */ - public var lookml_link_id: String? { - get { _lookml_link_id?.value } - set { _lookml_link_id = newValue.map(AnyString.init) } - } - - /** - * 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://cloud.google.com/looker/docs/r/api/control-access) - */ - public var show_filters_bar: Bool? - - /** - * Show title - */ - public var show_title: Bool? - - private var _folder_id: AnyString? - /** - * Id of folder - */ - public var folder_id: String? { - get { _folder_id?.value } - set { _folder_id = newValue.map(AnyString.init) } - } - - private var _text_tile_text_color: AnyString? - /** - * Color of text on text tiles - */ - public var text_tile_text_color: String? { - get { _text_tile_text_color?.value } - set { _text_tile_text_color = newValue.map(AnyString.init) } - } - - private var _tile_background_color: AnyString? - /** - * Tile background color - */ - public var tile_background_color: String? { - get { _tile_background_color?.value } - set { _tile_background_color = newValue.map(AnyString.init) } - } - - private var _tile_text_color: AnyString? - /** - * Tile text color - */ - public var tile_text_color: String? { - get { _tile_text_color?.value } - set { _tile_text_color = newValue.map(AnyString.init) } - } - - private var _title_color: AnyString? - /** - * Title color - */ - public var title_color: String? { - get { _title_color?.value } - set { _title_color = newValue.map(AnyString.init) } - } - - private var _view_count: AnyInt? - /** - * Number of times viewed in the Looker web UI (read-only) - */ - public var view_count: Int64? { - get { _view_count?.value } - set { _view_count = newValue.map(AnyInt.init) } - } - - public var appearance: DashboardAppearance? - - private var _url: AnyString? - /** - * Relative URL of the dashboard (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, content_favorite_id: String? = nil, content_metadata_id: String? = nil, description: String? = nil, hidden: Bool? = nil, id: String? = nil, model: LookModel? = nil, query_timezone: String? = nil, readonly: Bool? = nil, refresh_interval: String? = nil, refresh_interval_to_i: Int64? = nil, folder: FolderBase? = nil, title: String? = nil, user_id: String? = nil, slug: String? = nil, preferred_viewer: String? = nil, alert_sync_with_dashboard_filter_enabled: Bool? = nil, background_color: String? = nil, created_at: Date? = nil, crossfilter_enabled: Bool? = nil, dashboard_elements: [DashboardElement]? = nil, dashboard_filters: [DashboardFilter]? = nil, dashboard_layouts: [DashboardLayout]? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: String? = nil, edit_uri: String? = nil, enable_viz_full_screen: Bool? = nil, favorite_count: Int64? = nil, filters_bar_collapsed: Bool? = nil, filters_location_top: Bool? = nil, last_accessed_at: Date? = nil, last_viewed_at: Date? = nil, updated_at: Date? = nil, last_updater_id: String? = nil, last_updater_name: String? = nil, user_name: String? = nil, load_configuration: String? = nil, lookml_link_id: String? = nil, show_filters_bar: Bool? = nil, show_title: Bool? = nil, folder_id: String? = nil, text_tile_text_color: String? = nil, tile_background_color: String? = nil, tile_text_color: String? = nil, title_color: String? = nil, view_count: Int64? = nil, appearance: DashboardAppearance? = nil, url: String? = nil) { - self.can = can - self._content_favorite_id = content_favorite_id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyString.init) - self._description = description.map(AnyString.init) - self.hidden = hidden - self._id = id.map(AnyString.init) - self.model = model - self._query_timezone = query_timezone.map(AnyString.init) - self.readonly = readonly - self._refresh_interval = refresh_interval.map(AnyString.init) - self._refresh_interval_to_i = refresh_interval_to_i.map(AnyInt.init) - self.folder = folder - self._title = title.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) - self._slug = slug.map(AnyString.init) - self._preferred_viewer = preferred_viewer.map(AnyString.init) - self.alert_sync_with_dashboard_filter_enabled = alert_sync_with_dashboard_filter_enabled - self._background_color = background_color.map(AnyString.init) - self.created_at = created_at - self.crossfilter_enabled = crossfilter_enabled - self.dashboard_elements = dashboard_elements - self.dashboard_filters = dashboard_filters - self.dashboard_layouts = dashboard_layouts - self.deleted = deleted - self.deleted_at = deleted_at - self._deleter_id = deleter_id.map(AnyString.init) - self._edit_uri = edit_uri.map(AnyString.init) - self.enable_viz_full_screen = enable_viz_full_screen - self._favorite_count = favorite_count.map(AnyInt.init) - self.filters_bar_collapsed = filters_bar_collapsed - self.filters_location_top = filters_location_top - self.last_accessed_at = last_accessed_at - self.last_viewed_at = last_viewed_at - self.updated_at = updated_at - self._last_updater_id = last_updater_id.map(AnyString.init) - self._last_updater_name = last_updater_name.map(AnyString.init) - self._user_name = user_name.map(AnyString.init) - self._load_configuration = load_configuration.map(AnyString.init) - self._lookml_link_id = lookml_link_id.map(AnyString.init) - self.show_filters_bar = show_filters_bar - self.show_title = show_title - self._folder_id = folder_id.map(AnyString.init) - self._text_tile_text_color = text_tile_text_color.map(AnyString.init) - self._tile_background_color = tile_background_color.map(AnyString.init) - self._tile_text_color = tile_text_color.map(AnyString.init) - self._title_color = title_color.map(AnyString.init) - self._view_count = view_count.map(AnyInt.init) - self.appearance = appearance - self._url = url.map(AnyString.init) - } - -} - -public struct DashboardAggregateTableLookml: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _dashboard_id = "dashboard_id" - case _aggregate_table_lookml = "aggregate_table_lookml" - } - private var _dashboard_id: AnyString? - /** - * Dashboard Id (read-only) - */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } - } - - private var _aggregate_table_lookml: AnyString? - /** - * Aggregate Table LookML (read-only) - */ - public var aggregate_table_lookml: String? { - get { _aggregate_table_lookml?.value } - set { _aggregate_table_lookml = newValue.map(AnyString.init) } - } - - public init(dashboard_id: String? = nil, aggregate_table_lookml: String? = nil) { - self._dashboard_id = dashboard_id.map(AnyString.init) - self._aggregate_table_lookml = aggregate_table_lookml.map(AnyString.init) - } - -} - -public struct DashboardAppearance: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _page_side_margins = "page_side_margins" - case _page_background_color = "page_background_color" - case _tile_title_alignment = "tile_title_alignment" - case _tile_space_between = "tile_space_between" - case _tile_background_color = "tile_background_color" - case tile_shadow - case _key_color = "key_color" - } - private var _page_side_margins: AnyInt? - /** - * Page margin (side) width - */ - public var page_side_margins: Int64? { - get { _page_side_margins?.value } - set { _page_side_margins = newValue.map(AnyInt.init) } - } - - private var _page_background_color: AnyString? - /** - * Background color for the dashboard - */ - public var page_background_color: String? { - get { _page_background_color?.value } - set { _page_background_color = newValue.map(AnyString.init) } - } - - private var _tile_title_alignment: AnyString? - /** - * Title alignment on dashboard tiles - */ - public var tile_title_alignment: String? { - get { _tile_title_alignment?.value } - set { _tile_title_alignment = newValue.map(AnyString.init) } - } - - private var _tile_space_between: AnyInt? - /** - * Space between tiles - */ - public var tile_space_between: Int64? { - get { _tile_space_between?.value } - set { _tile_space_between = newValue.map(AnyInt.init) } - } - - private var _tile_background_color: AnyString? - /** - * Background color for tiles - */ - public var tile_background_color: String? { - get { _tile_background_color?.value } - set { _tile_background_color = newValue.map(AnyString.init) } - } - - /** - * Tile shadow on/off - */ - public var tile_shadow: Bool? - - private var _key_color: AnyString? - /** - * Key color - */ - public var key_color: String? { - get { _key_color?.value } - set { _key_color = newValue.map(AnyString.init) } - } - - public init(page_side_margins: Int64? = nil, page_background_color: String? = nil, tile_title_alignment: String? = nil, tile_space_between: Int64? = nil, tile_background_color: String? = nil, tile_shadow: Bool? = nil, key_color: String? = nil) { - self._page_side_margins = page_side_margins.map(AnyInt.init) - self._page_background_color = page_background_color.map(AnyString.init) - self._tile_title_alignment = tile_title_alignment.map(AnyString.init) - self._tile_space_between = tile_space_between.map(AnyInt.init) - self._tile_background_color = tile_background_color.map(AnyString.init) - self.tile_shadow = tile_shadow - self._key_color = key_color.map(AnyString.init) - } - -} - -public struct DashboardBase: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _content_favorite_id = "content_favorite_id" - case _content_metadata_id = "content_metadata_id" - case _description = "description" - case hidden - case _id = "id" - case model - case _query_timezone = "query_timezone" - case readonly - case _refresh_interval = "refresh_interval" - case _refresh_interval_to_i = "refresh_interval_to_i" - case folder - case _title = "title" - case _user_id = "user_id" - case _slug = "slug" - case _preferred_viewer = "preferred_viewer" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _content_favorite_id: AnyString? - /** - * Content Favorite Id (read-only) - */ - public var content_favorite_id: String? { - get { _content_favorite_id?.value } - set { _content_favorite_id = newValue.map(AnyString.init) } - } - - private var _content_metadata_id: AnyString? - /** - * Id of content metadata (read-only) - */ - public var content_metadata_id: String? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } - } - - private var _description: AnyString? - /** - * Description (read-only) - */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } - } - - /** - * Is Hidden (read-only) - */ - public var hidden: Bool? - - private var _id: AnyString? - /** - * Unique Id (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - public var model: LookModel? - - private var _query_timezone: AnyString? - /** - * Timezone in which the Dashboard will run by default. (read-only) - */ - public var query_timezone: String? { - get { _query_timezone?.value } - set { _query_timezone = newValue.map(AnyString.init) } - } - - /** - * Is Read-only (read-only) - */ - public var readonly: Bool? - - private var _refresh_interval: AnyString? - /** - * Refresh Interval, as a time duration phrase like "2 hours 30 minutes". A number with no time units will be interpreted as whole seconds. (read-only) - */ - public var refresh_interval: String? { - get { _refresh_interval?.value } - set { _refresh_interval = newValue.map(AnyString.init) } - } - - private var _refresh_interval_to_i: AnyInt? - /** - * Refresh Interval in milliseconds (read-only) - */ - public var refresh_interval_to_i: Int64? { - get { _refresh_interval_to_i?.value } - set { _refresh_interval_to_i = newValue.map(AnyInt.init) } - } - - public var folder: FolderBase? - - private var _title: AnyString? - /** - * Dashboard Title (read-only) - */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } - } - - private var _user_id: AnyString? - /** - * Id of User (read-only) - */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } - } - - private var _slug: AnyString? - /** - * Content Metadata Slug (read-only) - */ - public var slug: String? { - get { _slug?.value } - set { _slug = newValue.map(AnyString.init) } - } - - private var _preferred_viewer: AnyString? - /** - * The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) (read-only) - */ - public var preferred_viewer: String? { - get { _preferred_viewer?.value } - set { _preferred_viewer = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, content_favorite_id: String? = nil, content_metadata_id: String? = nil, description: String? = nil, hidden: Bool? = nil, id: String? = nil, model: LookModel? = nil, query_timezone: String? = nil, readonly: Bool? = nil, refresh_interval: String? = nil, refresh_interval_to_i: Int64? = nil, folder: FolderBase? = nil, title: String? = nil, user_id: String? = nil, slug: String? = nil, preferred_viewer: String? = nil) { - self.can = can - self._content_favorite_id = content_favorite_id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyString.init) - self._description = description.map(AnyString.init) - self.hidden = hidden - self._id = id.map(AnyString.init) - self.model = model - self._query_timezone = query_timezone.map(AnyString.init) - self.readonly = readonly - self._refresh_interval = refresh_interval.map(AnyString.init) - self._refresh_interval_to_i = refresh_interval_to_i.map(AnyInt.init) - self.folder = folder - self._title = title.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) - self._slug = slug.map(AnyString.init) - self._preferred_viewer = preferred_viewer.map(AnyString.init) - } - -} - -public struct DashboardElement: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _body_text = "body_text" - case _body_text_as_html = "body_text_as_html" - case _dashboard_id = "dashboard_id" - case _edit_uri = "edit_uri" - case _id = "id" - case look - case _look_id = "look_id" - case _lookml_link_id = "lookml_link_id" - case _merge_result_id = "merge_result_id" - case _note_display = "note_display" - case _note_state = "note_state" - case _note_text = "note_text" - case _note_text_as_html = "note_text_as_html" - case query - case _query_id = "query_id" - case _refresh_interval = "refresh_interval" - case _refresh_interval_to_i = "refresh_interval_to_i" - case result_maker - case _result_maker_id = "result_maker_id" - case _subtitle_text = "subtitle_text" - case _title = "title" - case title_hidden - case _title_text = "title_text" - case _type = "type" - case _alert_count = "alert_count" - case _rich_content_json = "rich_content_json" - case _title_text_as_html = "title_text_as_html" - case _subtitle_text_as_html = "subtitle_text_as_html" - case _extension_id = "extension_id" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _body_text: AnyString? - /** - * Text tile body text - */ - public var body_text: String? { - get { _body_text?.value } - set { _body_text = newValue.map(AnyString.init) } - } - - private var _body_text_as_html: AnyString? - /** - * Text tile body text as Html (read-only) - */ - public var body_text_as_html: String? { - get { _body_text_as_html?.value } - set { _body_text_as_html = newValue.map(AnyString.init) } - } - - private var _dashboard_id: AnyString? - /** - * Id of Dashboard - */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } - } - - private var _edit_uri: AnyString? - /** - * Relative path of URI of LookML file to edit the dashboard element (LookML dashboard only). (read-only) - */ - public var edit_uri: String? { - get { _edit_uri?.value } - set { _edit_uri = newValue.map(AnyString.init) } - } - - private var _id: AnyString? - /** - * Unique Id (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - public var look: LookWithQuery? - - private var _look_id: AnyString? - /** - * Id Of Look - */ - public var look_id: String? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } - } - - private var _lookml_link_id: AnyString? - /** - * LookML link ID (read-only) - */ - public var lookml_link_id: String? { - get { _lookml_link_id?.value } - set { _lookml_link_id = newValue.map(AnyString.init) } - } - - private var _merge_result_id: AnyString? - /** - * ID of merge result - */ - public var merge_result_id: String? { - get { _merge_result_id?.value } - set { _merge_result_id = newValue.map(AnyString.init) } - } - - private var _note_display: AnyString? - /** - * Note Display - */ - public var note_display: String? { - get { _note_display?.value } - set { _note_display = newValue.map(AnyString.init) } - } - - private var _note_state: AnyString? - /** - * Note State - */ - public var note_state: String? { - get { _note_state?.value } - set { _note_state = newValue.map(AnyString.init) } - } - - private var _note_text: AnyString? - /** - * Note Text - */ - public var note_text: String? { - get { _note_text?.value } - set { _note_text = newValue.map(AnyString.init) } - } - - private var _note_text_as_html: AnyString? - /** - * Note Text as Html (read-only) - */ - public var note_text_as_html: String? { - get { _note_text_as_html?.value } - set { _note_text_as_html = newValue.map(AnyString.init) } - } - - public var query: Query? - - private var _query_id: AnyString? - /** - * Id Of Query - */ - public var query_id: String? { - get { _query_id?.value } - set { _query_id = newValue.map(AnyString.init) } - } - - private var _refresh_interval: AnyString? - /** - * Refresh Interval - */ - public var refresh_interval: String? { - get { _refresh_interval?.value } - set { _refresh_interval = newValue.map(AnyString.init) } - } - - private var _refresh_interval_to_i: AnyInt? - /** - * Refresh Interval as integer (read-only) - */ - public var refresh_interval_to_i: Int64? { - get { _refresh_interval_to_i?.value } - set { _refresh_interval_to_i = newValue.map(AnyInt.init) } - } - - public var result_maker: ResultMakerWithIdVisConfigAndDynamicFields? - - private var _result_maker_id: AnyString? - /** - * ID of the ResultMakerLookup entry. - */ - public var result_maker_id: String? { - get { _result_maker_id?.value } - set { _result_maker_id = newValue.map(AnyString.init) } - } - - private var _subtitle_text: AnyString? - /** - * Text tile subtitle text - */ - public var subtitle_text: String? { - get { _subtitle_text?.value } - set { _subtitle_text = newValue.map(AnyString.init) } - } - - private var _title: AnyString? - /** - * Title of dashboard element - */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } - } - - /** - * Whether title is hidden - */ - public var title_hidden: Bool? - - private var _title_text: AnyString? - /** - * Text tile title - */ - public var title_text: String? { - get { _title_text?.value } - set { _title_text = newValue.map(AnyString.init) } - } - - private var _type: AnyString? - /** - * Type - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - private var _alert_count: AnyInt? - /** - * Count of Alerts associated to a dashboard element (read-only) - */ - public var alert_count: Int64? { - get { _alert_count?.value } - set { _alert_count = newValue.map(AnyInt.init) } - } - - private var _rich_content_json: AnyString? - /** - * JSON with all the properties required for rich editor and buttons elements - */ - public var rich_content_json: String? { - get { _rich_content_json?.value } - set { _rich_content_json = newValue.map(AnyString.init) } - } - - private var _title_text_as_html: AnyString? - /** - * Text tile title text as Html (read-only) - */ - public var title_text_as_html: String? { - get { _title_text_as_html?.value } - set { _title_text_as_html = newValue.map(AnyString.init) } - } - - private var _subtitle_text_as_html: AnyString? - /** - * Text tile subtitle text as Html (read-only) - */ - public var subtitle_text_as_html: String? { - get { _subtitle_text_as_html?.value } - set { _subtitle_text_as_html = newValue.map(AnyString.init) } - } + public var tile_shadow: Bool? - private var _extension_id: AnyString? + private var _key_color: AnyString? /** - * Extension ID + * Key color */ - public var extension_id: String? { - get { _extension_id?.value } - set { _extension_id = newValue.map(AnyString.init) } + public var key_color: String? { + get { _key_color?.value } + set { _key_color = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, body_text: String? = nil, body_text_as_html: String? = nil, dashboard_id: String? = nil, edit_uri: String? = nil, id: String? = nil, look: LookWithQuery? = nil, look_id: String? = nil, lookml_link_id: String? = nil, merge_result_id: String? = nil, note_display: String? = nil, note_state: String? = nil, note_text: String? = nil, note_text_as_html: String? = nil, query: Query? = nil, query_id: String? = nil, refresh_interval: String? = nil, refresh_interval_to_i: Int64? = nil, result_maker: ResultMakerWithIdVisConfigAndDynamicFields? = nil, result_maker_id: String? = nil, subtitle_text: String? = nil, title: String? = nil, title_hidden: Bool? = nil, title_text: String? = nil, type: String? = nil, alert_count: Int64? = nil, rich_content_json: String? = nil, title_text_as_html: String? = nil, subtitle_text_as_html: String? = nil, extension_id: String? = nil) { - self.can = can - self._body_text = body_text.map(AnyString.init) - self._body_text_as_html = body_text_as_html.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._edit_uri = edit_uri.map(AnyString.init) - self._id = id.map(AnyString.init) - self.look = look - self._look_id = look_id.map(AnyString.init) - self._lookml_link_id = lookml_link_id.map(AnyString.init) - self._merge_result_id = merge_result_id.map(AnyString.init) - self._note_display = note_display.map(AnyString.init) - self._note_state = note_state.map(AnyString.init) - self._note_text = note_text.map(AnyString.init) - self._note_text_as_html = note_text_as_html.map(AnyString.init) - self.query = query - self._query_id = query_id.map(AnyString.init) - self._refresh_interval = refresh_interval.map(AnyString.init) - self._refresh_interval_to_i = refresh_interval_to_i.map(AnyInt.init) - self.result_maker = result_maker - self._result_maker_id = result_maker_id.map(AnyString.init) - self._subtitle_text = subtitle_text.map(AnyString.init) - self._title = title.map(AnyString.init) - self.title_hidden = title_hidden - self._title_text = title_text.map(AnyString.init) - self._type = type.map(AnyString.init) - self._alert_count = alert_count.map(AnyInt.init) - self._rich_content_json = rich_content_json.map(AnyString.init) - self._title_text_as_html = title_text_as_html.map(AnyString.init) - self._subtitle_text_as_html = subtitle_text_as_html.map(AnyString.init) - self._extension_id = extension_id.map(AnyString.init) + public init(page_side_margins: Int64? = nil, page_background_color: String? = nil, tile_title_alignment: String? = nil, tile_space_between: Int64? = nil, tile_background_color: String? = nil, tile_shadow: Bool? = nil, key_color: String? = nil) { + self._page_side_margins = page_side_margins.map(AnyInt.init) + self._page_background_color = page_background_color.map(AnyString.init) + self._tile_title_alignment = tile_title_alignment.map(AnyString.init) + self._tile_space_between = tile_space_between.map(AnyInt.init) + self._tile_background_color = tile_background_color.map(AnyString.init) + self.tile_shadow = tile_shadow + self._key_color = key_color.map(AnyString.init) } } -public struct DashboardFilter: SDKModel { +public struct DashboardBase: SDKModel { private enum CodingKeys : String, CodingKey { case can + case _content_favorite_id = "content_favorite_id" + case _content_metadata_id = "content_metadata_id" + case _description = "description" + case hidden case _id = "id" - case _dashboard_id = "dashboard_id" - case _name = "name" + case model + case _query_timezone = "query_timezone" + case readonly + case _refresh_interval = "refresh_interval" + case _refresh_interval_to_i = "refresh_interval_to_i" + case folder case _title = "title" - case _type = "type" - case _default_value = "default_value" - case _model = "model" - case _explore = "explore" - case _dimension = "dimension" - case field - case _row = "row" - case _listens_to_filters = "listens_to_filters" - case allow_multiple_values - case required - case ui_config + case _user_id = "user_id" + case _slug = "slug" + case _preferred_viewer = "preferred_viewer" + case space } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _id: AnyString? - /** - * Unique Id (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - private var _dashboard_id: AnyString? - /** - * Id of Dashboard (read-only) - */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } - } - - private var _name: AnyString? - /** - * Name of filter - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - private var _title: AnyString? - /** - * Title of filter - */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } - } - - private var _type: AnyString? - /** - * Type of filter: one of date, number, string, or field - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - private var _default_value: AnyString? - /** - * Default value of filter - */ - public var default_value: String? { - get { _default_value?.value } - set { _default_value = newValue.map(AnyString.init) } - } - - private var _model: AnyString? + private var _content_favorite_id: AnyInt? /** - * Model of filter (required if type = field) + * Content Favorite Id (read-only) */ - public var model: String? { - get { _model?.value } - set { _model = newValue.map(AnyString.init) } + public var content_favorite_id: Int64? { + get { _content_favorite_id?.value } + set { _content_favorite_id = newValue.map(AnyInt.init) } } - private var _explore: AnyString? + private var _content_metadata_id: AnyInt? /** - * Explore of filter (required if type = field) + * Id of content metadata (read-only) */ - public var explore: String? { - get { _explore?.value } - set { _explore = newValue.map(AnyString.init) } + public var content_metadata_id: Int64? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyInt.init) } } - private var _dimension: AnyString? + private var _description: AnyString? /** - * Dimension of filter (required if type = field) + * Description (read-only) */ - public var dimension: String? { - get { _dimension?.value } - set { _dimension = newValue.map(AnyString.init) } + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } } /** - * Field information (read-only) - */ - public var field: StringDictionary? - - private var _row: AnyInt? - /** - * Display order of this filter relative to other filters + * Is Hidden (read-only) */ - public var row: Int64? { - get { _row?.value } - set { _row = newValue.map(AnyInt.init) } - } + public var hidden: Bool? - private var _listens_to_filters: [AnyString]? + private var _id: AnyString? /** - * Array of listeners for faceted filters + * Unique Id (read-only) */ - public var listens_to_filters: [String]? { - get { if let v = _listens_to_filters { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - /** - * Whether the filter allows multiple filter values (deprecated in the latest version of dashboards) - */ - public var allow_multiple_values: Bool? - - /** - * Whether the filter requires a value to run the dashboard - */ - public var required: Bool? + public var model: LookModel? + private var _query_timezone: AnyString? /** - * The visual configuration for this filter. Used to set up how the UI for this filter should appear. + * Timezone in which the Dashboard will run by default. (read-only) */ - public var ui_config: StringDictionary? - - public init(can: StringDictionary? = nil, id: String? = nil, dashboard_id: String? = nil, name: String? = nil, title: String? = nil, type: String? = nil, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil, field: StringDictionary? = nil, row: Int64? = nil, listens_to_filters: [String]? = nil, allow_multiple_values: Bool? = nil, required: Bool? = nil, ui_config: StringDictionary? = nil) { - self.can = can - self._id = id.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._name = name.map(AnyString.init) - self._title = title.map(AnyString.init) - self._type = type.map(AnyString.init) - self._default_value = default_value.map(AnyString.init) - self._model = model.map(AnyString.init) - self._explore = explore.map(AnyString.init) - self._dimension = dimension.map(AnyString.init) - self.field = field - self._row = row.map(AnyInt.init) - if let v = listens_to_filters { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } - self.allow_multiple_values = allow_multiple_values - self.required = required - self.ui_config = ui_config - } - -} - -public struct DashboardLayout: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _id = "id" - case _dashboard_id = "dashboard_id" - case _type = "type" - case active - case _column_width = "column_width" - case _width = "width" - case deleted - case _dashboard_title = "dashboard_title" - case dashboard_layout_components + public var query_timezone: String? { + get { _query_timezone?.value } + set { _query_timezone = newValue.map(AnyString.init) } } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - private var _id: AnyString? /** - * Unique Id (read-only) + * Is Read-only (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } + public var readonly: Bool? - private var _dashboard_id: AnyString? + private var _refresh_interval: AnyString? /** - * Id of Dashboard + * Refresh Interval, as a time duration phrase like "2 hours 30 minutes". A number with no time units will be interpreted as whole seconds. (read-only) */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + public var refresh_interval: String? { + get { _refresh_interval?.value } + set { _refresh_interval = newValue.map(AnyString.init) } } - private var _type: AnyString? + private var _refresh_interval_to_i: AnyInt? /** - * Type + * Refresh Interval in milliseconds (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var refresh_interval_to_i: Int64? { + get { _refresh_interval_to_i?.value } + set { _refresh_interval_to_i = newValue.map(AnyInt.init) } } - /** - * Is Active - */ - public var active: Bool? + public var folder: FolderBase? - private var _column_width: AnyInt? + private var _title: AnyString? /** - * Column Width + * Dashboard Title (read-only) */ - public var column_width: Int64? { - get { _column_width?.value } - set { _column_width = newValue.map(AnyInt.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } - private var _width: AnyInt? + private var _user_id: AnyInt? /** - * Width + * Id of User (read-only) */ - public var width: Int64? { - get { _width?.value } - set { _width = newValue.map(AnyInt.init) } + public var user_id: Int64? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyInt.init) } } + private var _slug: AnyString? /** - * Whether or not the dashboard layout is deleted. (read-only) + * Content Metadata Slug (read-only) */ - public var deleted: Bool? + public var slug: String? { + get { _slug?.value } + set { _slug = newValue.map(AnyString.init) } + } - private var _dashboard_title: AnyString? + private var _preferred_viewer: AnyString? /** - * Title extracted from the dashboard this layout represents. (read-only) + * The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) (read-only) */ - public var dashboard_title: String? { - get { _dashboard_title?.value } - set { _dashboard_title = newValue.map(AnyString.init) } + public var preferred_viewer: String? { + get { _preferred_viewer?.value } + set { _preferred_viewer = newValue.map(AnyString.init) } } - /** - * Components (read-only) - */ - public var dashboard_layout_components: [DashboardLayoutComponent]? + public var space: SpaceBase? - public init(can: StringDictionary? = nil, id: String? = nil, dashboard_id: String? = nil, type: String? = nil, active: Bool? = nil, column_width: Int64? = nil, width: Int64? = nil, deleted: Bool? = nil, dashboard_title: String? = nil, dashboard_layout_components: [DashboardLayoutComponent]? = nil) { + public init(can: StringDictionary? = nil, content_favorite_id: Int64? = nil, content_metadata_id: Int64? = nil, description: String? = nil, hidden: Bool? = nil, id: String? = nil, model: LookModel? = nil, query_timezone: String? = nil, readonly: Bool? = nil, refresh_interval: String? = nil, refresh_interval_to_i: Int64? = nil, folder: FolderBase? = nil, title: String? = nil, user_id: Int64? = nil, slug: String? = nil, preferred_viewer: String? = nil, space: SpaceBase? = nil) { self.can = can + self._content_favorite_id = content_favorite_id.map(AnyInt.init) + self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self._description = description.map(AnyString.init) + self.hidden = hidden self._id = id.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._type = type.map(AnyString.init) - self.active = active - self._column_width = column_width.map(AnyInt.init) - self._width = width.map(AnyInt.init) - self.deleted = deleted - self._dashboard_title = dashboard_title.map(AnyString.init) - self.dashboard_layout_components = dashboard_layout_components + self.model = model + self._query_timezone = query_timezone.map(AnyString.init) + self.readonly = readonly + self._refresh_interval = refresh_interval.map(AnyString.init) + self._refresh_interval_to_i = refresh_interval_to_i.map(AnyInt.init) + self.folder = folder + self._title = title.map(AnyString.init) + self._user_id = user_id.map(AnyInt.init) + self._slug = slug.map(AnyString.init) + self._preferred_viewer = preferred_viewer.map(AnyString.init) + self.space = space } } -public struct DashboardLayoutComponent: SDKModel { +public struct DashboardElement: SDKModel { private enum CodingKeys : String, CodingKey { case can + case _body_text = "body_text" + case _body_text_as_html = "body_text_as_html" + case _dashboard_id = "dashboard_id" + case edit_uri case _id = "id" - case _dashboard_layout_id = "dashboard_layout_id" - case _dashboard_element_id = "dashboard_element_id" - case _row = "row" - case _column = "column" - case _width = "width" - case _height = "height" - case deleted - case _element_title = "element_title" - case element_title_hidden - case _vis_type = "vis_type" + case look + case _look_id = "look_id" + case _lookml_link_id = "lookml_link_id" + case _merge_result_id = "merge_result_id" + case _note_display = "note_display" + case _note_state = "note_state" + case _note_text = "note_text" + case _note_text_as_html = "note_text_as_html" + case query + case _query_id = "query_id" + case _refresh_interval = "refresh_interval" + case _refresh_interval_to_i = "refresh_interval_to_i" + case result_maker + case _result_maker_id = "result_maker_id" + case _subtitle_text = "subtitle_text" + case _title = "title" + case title_hidden + case _title_text = "title_text" + case _type = "type" + case _alert_count = "alert_count" + case _rich_content_json = "rich_content_json" + case _title_text_as_html = "title_text_as_html" + case _subtitle_text_as_html = "subtitle_text_as_html" } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _id: AnyString? + private var _body_text: AnyString? /** - * Unique Id (read-only) + * Text tile body text */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var body_text: String? { + get { _body_text?.value } + set { _body_text = newValue.map(AnyString.init) } } - private var _dashboard_layout_id: AnyString? + private var _body_text_as_html: AnyString? /** - * Id of Dashboard Layout + * Text tile body text as Html (read-only) */ - public var dashboard_layout_id: String? { - get { _dashboard_layout_id?.value } - set { _dashboard_layout_id = newValue.map(AnyString.init) } + public var body_text_as_html: String? { + get { _body_text_as_html?.value } + set { _body_text_as_html = newValue.map(AnyString.init) } } - private var _dashboard_element_id: AnyString? + private var _dashboard_id: AnyString? /** - * Id Of Dashboard Element + * Id of Dashboard */ - public var dashboard_element_id: String? { - get { _dashboard_element_id?.value } - set { _dashboard_element_id = newValue.map(AnyString.init) } + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } - private var _row: AnyInt? /** - * Row + * Relative path of URI of LookML file to edit the dashboard element (LookML dashboard only). (read-only) */ - public var row: Int64? { - get { _row?.value } - set { _row = newValue.map(AnyInt.init) } - } + public var edit_uri: URI? - private var _column: AnyInt? + private var _id: AnyString? /** - * Column + * Unique Id (read-only) */ - public var column: Int64? { - get { _column?.value } - set { _column = newValue.map(AnyInt.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _width: AnyInt? - /** - * Width - */ - public var width: Int64? { - get { _width?.value } - set { _width = newValue.map(AnyInt.init) } - } + public var look: LookWithQuery? - private var _height: AnyInt? + private var _look_id: AnyString? /** - * Height + * Id Of Look */ - public var height: Int64? { - get { _height?.value } - set { _height = newValue.map(AnyInt.init) } + public var look_id: String? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyString.init) } } + private var _lookml_link_id: AnyString? /** - * Whether or not the dashboard layout component is deleted (read-only) - */ - public var deleted: Bool? - - private var _element_title: AnyString? - /** - * Dashboard element title, extracted from the Dashboard Element. (read-only) + * LookML link ID (read-only) */ - public var element_title: String? { - get { _element_title?.value } - set { _element_title = newValue.map(AnyString.init) } + public var lookml_link_id: String? { + get { _lookml_link_id?.value } + set { _lookml_link_id = newValue.map(AnyString.init) } } + private var _merge_result_id: AnyString? /** - * Whether or not the dashboard element title is displayed. (read-only) + * ID of merge result */ - public var element_title_hidden: Bool? + public var merge_result_id: String? { + get { _merge_result_id?.value } + set { _merge_result_id = newValue.map(AnyString.init) } + } - private var _vis_type: AnyString? + private var _note_display: AnyString? /** - * Visualization type, extracted from a query's vis_config (read-only) + * Note Display */ - public var vis_type: String? { - get { _vis_type?.value } - set { _vis_type = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, id: String? = nil, dashboard_layout_id: String? = nil, dashboard_element_id: String? = nil, row: Int64? = nil, column: Int64? = nil, width: Int64? = nil, height: Int64? = nil, deleted: Bool? = nil, element_title: String? = nil, element_title_hidden: Bool? = nil, vis_type: String? = nil) { - self.can = can - self._id = id.map(AnyString.init) - self._dashboard_layout_id = dashboard_layout_id.map(AnyString.init) - self._dashboard_element_id = dashboard_element_id.map(AnyString.init) - self._row = row.map(AnyInt.init) - self._column = column.map(AnyInt.init) - self._width = width.map(AnyInt.init) - self._height = height.map(AnyInt.init) - self.deleted = deleted - self._element_title = element_title.map(AnyString.init) - self.element_title_hidden = element_title_hidden - self._vis_type = vis_type.map(AnyString.init) + public var note_display: String? { + get { _note_display?.value } + set { _note_display = newValue.map(AnyString.init) } } -} - -public struct DashboardLookml: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _dashboard_id = "dashboard_id" - case _folder_id = "folder_id" - case _lookml = "lookml" - } - private var _dashboard_id: AnyString? + private var _note_state: AnyString? /** - * Id of Dashboard (read-only) + * Note State */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + public var note_state: String? { + get { _note_state?.value } + set { _note_state = newValue.map(AnyString.init) } } - private var _folder_id: AnyString? + private var _note_text: AnyString? /** - * (Write-Only) Id of the folder + * Note Text */ - public var folder_id: String? { - get { _folder_id?.value } - set { _folder_id = newValue.map(AnyString.init) } + public var note_text: String? { + get { _note_text?.value } + set { _note_text = newValue.map(AnyString.init) } } - private var _lookml: AnyString? + private var _note_text_as_html: AnyString? /** - * lookml of UDD + * Note Text as Html (read-only) */ - public var lookml: String? { - get { _lookml?.value } - set { _lookml = newValue.map(AnyString.init) } - } - - public init(dashboard_id: String? = nil, folder_id: String? = nil, lookml: String? = nil) { - self._dashboard_id = dashboard_id.map(AnyString.init) - self._folder_id = folder_id.map(AnyString.init) - self._lookml = lookml.map(AnyString.init) + public var note_text_as_html: String? { + get { _note_text_as_html?.value } + set { _note_text_as_html = newValue.map(AnyString.init) } } -} - -public struct DataActionForm: SDKModel { - public var state: DataActionUserState? + public var query: Query? + private var _query_id: AnyInt? /** - * Array of form fields. (read-only) + * Id Of Query */ - public var fields: [DataActionFormField]? + public var query_id: Int64? { + get { _query_id?.value } + set { _query_id = newValue.map(AnyInt.init) } + } - public init(state: DataActionUserState? = nil, fields: [DataActionFormField]? = nil) { - self.state = state - self.fields = fields + private var _refresh_interval: AnyString? + /** + * Refresh Interval + */ + public var refresh_interval: String? { + get { _refresh_interval?.value } + set { _refresh_interval = newValue.map(AnyString.init) } } -} + private var _refresh_interval_to_i: AnyInt? + /** + * Refresh Interval as integer (read-only) + */ + public var refresh_interval_to_i: Int64? { + get { _refresh_interval_to_i?.value } + set { _refresh_interval_to_i = newValue.map(AnyInt.init) } + } -public struct DataActionFormField: SDKModel { + public var result_maker: ResultMakerWithIdVisConfigAndDynamicFields? - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _label = "label" - case _description = "description" - case _type = "type" - case _default = "default" - case _oauth_url = "oauth_url" - case interactive - case required - case options + private var _result_maker_id: AnyInt? + /** + * ID of the ResultMakerLookup entry. + */ + public var result_maker_id: Int64? { + get { _result_maker_id?.value } + set { _result_maker_id = newValue.map(AnyInt.init) } } - private var _name: AnyString? + + private var _subtitle_text: AnyString? /** - * Name (read-only) + * Text tile subtitle text */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var subtitle_text: String? { + get { _subtitle_text?.value } + set { _subtitle_text = newValue.map(AnyString.init) } } - private var _label: AnyString? + private var _title: AnyString? /** - * Human-readable label (read-only) + * Title of dashboard element */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } - private var _description: AnyString? /** - * Description of field (read-only) + * Whether title is hidden */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + public var title_hidden: Bool? + + private var _title_text: AnyString? + /** + * Text tile title + */ + public var title_text: String? { + get { _title_text?.value } + set { _title_text = newValue.map(AnyString.init) } } private var _type: AnyString? /** - * Type of field. (read-only) + * Type */ public var type: String? { get { _type?.value } set { _type = newValue.map(AnyString.init) } } - private var _default: AnyString? + private var _alert_count: AnyInt? /** - * Default value of the field. (read-only) + * Count of Alerts associated to a dashboard element (read-only) */ - public var `default`: String? { - get { _default?.value } - set { _default = newValue.map(AnyString.init) } + public var alert_count: Int64? { + get { _alert_count?.value } + set { _alert_count = newValue.map(AnyInt.init) } } - private var _oauth_url: AnyString? + private var _rich_content_json: AnyString? /** - * The URL for an oauth link, if type is 'oauth_link'. (read-only) + * JSON with all the properties required for rich editor and buttons elements */ - public var oauth_url: String? { - get { _oauth_url?.value } - set { _oauth_url = newValue.map(AnyString.init) } + public var rich_content_json: String? { + get { _rich_content_json?.value } + set { _rich_content_json = newValue.map(AnyString.init) } } + private var _title_text_as_html: AnyString? /** - * Whether or not a field supports interactive forms. (read-only) - */ - public var interactive: Bool? - - /** - * 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. (read-only) + * Text tile title text as Html (read-only) */ - public var required: Bool? + public var title_text_as_html: String? { + get { _title_text_as_html?.value } + set { _title_text_as_html = newValue.map(AnyString.init) } + } + private var _subtitle_text_as_html: AnyString? /** - * If the form type is 'select', a list of options to be selected from. (read-only) + * Text tile subtitle text as Html (read-only) */ - public var options: [DataActionFormSelectOption]? + public var subtitle_text_as_html: String? { + get { _subtitle_text_as_html?.value } + set { _subtitle_text_as_html = newValue.map(AnyString.init) } + } - public init(name: String? = nil, label: String? = nil, description: String? = nil, type: String? = nil, `default`: String? = nil, oauth_url: String? = nil, interactive: Bool? = nil, required: Bool? = nil, options: [DataActionFormSelectOption]? = nil) { - self._name = name.map(AnyString.init) - self._label = label.map(AnyString.init) - self._description = description.map(AnyString.init) + public init(can: StringDictionary? = nil, body_text: String? = nil, body_text_as_html: String? = nil, dashboard_id: String? = nil, edit_uri: URI? = nil, id: String? = nil, look: LookWithQuery? = nil, look_id: String? = nil, lookml_link_id: String? = nil, merge_result_id: String? = nil, note_display: String? = nil, note_state: String? = nil, note_text: String? = nil, note_text_as_html: String? = nil, query: Query? = nil, query_id: Int64? = nil, refresh_interval: String? = nil, refresh_interval_to_i: Int64? = nil, result_maker: ResultMakerWithIdVisConfigAndDynamicFields? = nil, result_maker_id: Int64? = nil, subtitle_text: String? = nil, title: String? = nil, title_hidden: Bool? = nil, title_text: String? = nil, type: String? = nil, alert_count: Int64? = nil, rich_content_json: String? = nil, title_text_as_html: String? = nil, subtitle_text_as_html: String? = nil) { + self.can = can + self._body_text = body_text.map(AnyString.init) + self._body_text_as_html = body_text_as_html.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self.edit_uri = edit_uri + self._id = id.map(AnyString.init) + self.look = look + self._look_id = look_id.map(AnyString.init) + self._lookml_link_id = lookml_link_id.map(AnyString.init) + self._merge_result_id = merge_result_id.map(AnyString.init) + self._note_display = note_display.map(AnyString.init) + self._note_state = note_state.map(AnyString.init) + self._note_text = note_text.map(AnyString.init) + self._note_text_as_html = note_text_as_html.map(AnyString.init) + self.query = query + self._query_id = query_id.map(AnyInt.init) + self._refresh_interval = refresh_interval.map(AnyString.init) + self._refresh_interval_to_i = refresh_interval_to_i.map(AnyInt.init) + self.result_maker = result_maker + self._result_maker_id = result_maker_id.map(AnyInt.init) + self._subtitle_text = subtitle_text.map(AnyString.init) + self._title = title.map(AnyString.init) + self.title_hidden = title_hidden + self._title_text = title_text.map(AnyString.init) self._type = type.map(AnyString.init) - self._default = `default`.map(AnyString.init) - self._oauth_url = oauth_url.map(AnyString.init) - self.interactive = interactive - self.required = required - self.options = options + self._alert_count = alert_count.map(AnyInt.init) + self._rich_content_json = rich_content_json.map(AnyString.init) + self._title_text_as_html = title_text_as_html.map(AnyString.init) + self._subtitle_text_as_html = subtitle_text_as_html.map(AnyString.init) } } -public struct DataActionFormSelectOption: SDKModel { +public struct DashboardFilter: SDKModel { private enum CodingKeys : String, CodingKey { + case can + case _id = "id" + case _dashboard_id = "dashboard_id" case _name = "name" - case _label = "label" + case _title = "title" + case _type = "type" + case _default_value = "default_value" + case _model = "model" + case _explore = "explore" + case _dimension = "dimension" + case field + case _row = "row" + case _listens_to_filters = "listens_to_filters" + case allow_multiple_values + case required + case ui_config + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + private var _dashboard_id: AnyString? + /** + * Id of Dashboard (read-only) + */ + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } + private var _name: AnyString? /** - * Name (read-only) + * Name of filter */ public var name: String? { get { _name?.value } set { _name = newValue.map(AnyString.init) } } - private var _label: AnyString? + private var _title: AnyString? /** - * Human-readable label (read-only) + * Title of filter */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } - } - - public init(name: String? = nil, label: String? = nil) { - self._name = name.map(AnyString.init) - self._label = label.map(AnyString.init) + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } -} - -public struct DataActionRequest: SDKModel { + private var _type: AnyString? /** - * 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. + * Type of filter: one of date, number, string, or field */ - public var action: StringDictionary? + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + private var _default_value: AnyString? /** - * User input for any form values the data action might use. + * Default value of filter */ - public var form_values: StringDictionary? - - public init(action: StringDictionary? = nil, form_values: StringDictionary? = nil) { - self.action = action - self.form_values = form_values + public var default_value: String? { + get { _default_value?.value } + set { _default_value = newValue.map(AnyString.init) } } -} - -public struct DataActionResponse: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _webhook_id = "webhook_id" - case success - case refresh_query - case validation_errors - case _message = "message" + private var _model: AnyString? + /** + * Model of filter (required if type = field) + */ + public var model: String? { + get { _model?.value } + set { _model = newValue.map(AnyString.init) } } - private var _webhook_id: AnyString? + + private var _explore: AnyString? /** - * ID of the webhook event that sent this data action. In some error conditions, this may be null. (read-only) + * Explore of filter (required if type = field) */ - public var webhook_id: String? { - get { _webhook_id?.value } - set { _webhook_id = newValue.map(AnyString.init) } + public var explore: String? { + get { _explore?.value } + set { _explore = newValue.map(AnyString.init) } } + private var _dimension: AnyString? /** - * Whether the data action was successful. (read-only) + * Dimension of filter (required if type = field) */ - public var success: Bool? + public var dimension: String? { + get { _dimension?.value } + set { _dimension = newValue.map(AnyString.init) } + } /** - * When true, indicates that the client should refresh (rerun) the source query because the data may have been changed by the action. (read-only) + * Field information (read-only) */ - public var refresh_query: Bool? - - public var validation_errors: ValidationError? + public var field: StringDictionary? - private var _message: AnyString? + private var _row: AnyInt? /** - * 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. (read-only) + * Display order of this filter relative to other filters */ - public var message: String? { - get { _message?.value } - set { _message = newValue.map(AnyString.init) } + public var row: Int64? { + get { _row?.value } + set { _row = newValue.map(AnyInt.init) } } - public init(webhook_id: String? = nil, success: Bool? = nil, refresh_query: Bool? = nil, validation_errors: ValidationError? = nil, message: String? = nil) { - self._webhook_id = webhook_id.map(AnyString.init) - self.success = success - self.refresh_query = refresh_query - self.validation_errors = validation_errors - self._message = message.map(AnyString.init) + private var _listens_to_filters: [AnyString]? + /** + * Array of listeners for faceted filters + */ + public var listens_to_filters: [String]? { + get { if let v = _listens_to_filters { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } } } -} - -public struct DataActionUserState: SDKModel { + /** + * Whether the filter allows multiple filter values (deprecated in the latest version of dashboards) + */ + public var allow_multiple_values: Bool? - private enum CodingKeys : String, CodingKey { - case _data = "data" - case _refresh_time = "refresh_time" - } - private var _data: AnyString? /** - * User state data (read-only) + * Whether the filter requires a value to run the dashboard */ - public var data: String? { - get { _data?.value } - set { _data = newValue.map(AnyString.init) } - } + public var required: Bool? - private var _refresh_time: AnyInt? /** - * Time in seconds until the state needs to be refreshed (read-only) + * The visual configuration for this filter. Used to set up how the UI for this filter should appear. */ - public var refresh_time: Int64? { - get { _refresh_time?.value } - set { _refresh_time = newValue.map(AnyInt.init) } - } + public var ui_config: StringDictionary? - public init(data: String? = nil, refresh_time: Int64? = nil) { - self._data = data.map(AnyString.init) - self._refresh_time = refresh_time.map(AnyInt.init) + public init(can: StringDictionary? = nil, id: String? = nil, dashboard_id: String? = nil, name: String? = nil, title: String? = nil, type: String? = nil, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil, field: StringDictionary? = nil, row: Int64? = nil, listens_to_filters: [String]? = nil, allow_multiple_values: Bool? = nil, required: Bool? = nil, ui_config: StringDictionary? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self._name = name.map(AnyString.init) + self._title = title.map(AnyString.init) + self._type = type.map(AnyString.init) + self._default_value = default_value.map(AnyString.init) + self._model = model.map(AnyString.init) + self._explore = explore.map(AnyString.init) + self._dimension = dimension.map(AnyString.init) + self.field = field + self._row = row.map(AnyInt.init) + if let v = listens_to_filters { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } + self.allow_multiple_values = allow_multiple_values + self.required = required + self.ui_config = ui_config } } -public struct Datagroup: SDKModel { +public struct DashboardLayout: SDKModel { private enum CodingKeys : String, CodingKey { case can - case _created_at = "created_at" case _id = "id" - case _model_name = "model_name" - case _name = "name" - case _stale_before = "stale_before" - case _trigger_check_at = "trigger_check_at" - case _trigger_error = "trigger_error" - case _trigger_value = "trigger_value" - case _triggered_at = "triggered_at" + case _dashboard_id = "dashboard_id" + case _type = "type" + case active + case _column_width = "column_width" + case _width = "width" + case deleted + case _dashboard_title = "dashboard_title" + case dashboard_layout_components } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _created_at: AnyInt? - /** - * UNIX timestamp at which this entry was created. (read-only) - */ - public var created_at: Int64? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyInt.init) } - } - private var _id: AnyString? /** - * Unique ID of the datagroup (read-only) + * Unique Id (read-only) */ public var id: String? { get { _id?.value } set { _id = newValue.map(AnyString.init) } } - private var _model_name: AnyString? + private var _dashboard_id: AnyString? /** - * Name of the model containing the datagroup. Unique when combined with name. (read-only) + * Id of Dashboard */ - public var model_name: String? { - get { _model_name?.value } - set { _model_name = newValue.map(AnyString.init) } + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } - private var _name: AnyString? + private var _type: AnyString? /** - * Name of the datagroup. Unique when combined with model_name. (read-only) + * Type */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - private var _stale_before: AnyInt? /** - * UNIX timestamp before which cache entries are considered stale. Cannot be in the future. + * Is Active */ - public var stale_before: Int64? { - get { _stale_before?.value } - set { _stale_before = newValue.map(AnyInt.init) } - } + public var active: Bool? - private var _trigger_check_at: AnyInt? + private var _column_width: AnyInt? /** - * UNIX timestamp at which this entry trigger was last checked. (read-only) + * Column Width */ - public var trigger_check_at: Int64? { - get { _trigger_check_at?.value } - set { _trigger_check_at = newValue.map(AnyInt.init) } + public var column_width: Int64? { + get { _column_width?.value } + set { _column_width = newValue.map(AnyInt.init) } } - private var _trigger_error: AnyString? + private var _width: AnyInt? /** - * The message returned with the error of the last trigger check. (read-only) + * Width */ - public var trigger_error: String? { - get { _trigger_error?.value } - set { _trigger_error = newValue.map(AnyString.init) } + public var width: Int64? { + get { _width?.value } + set { _width = newValue.map(AnyInt.init) } } - private var _trigger_value: AnyString? /** - * The value of the trigger when last checked. (read-only) + * Whether or not the dashboard layout is deleted. (read-only) */ - public var trigger_value: String? { - get { _trigger_value?.value } - set { _trigger_value = newValue.map(AnyString.init) } - } + public var deleted: Bool? - private var _triggered_at: AnyInt? + private var _dashboard_title: AnyString? /** - * UNIX timestamp at which this entry became triggered. Cannot be in the future. + * Title extracted from the dashboard this layout represents. (read-only) */ - public var triggered_at: Int64? { - get { _triggered_at?.value } - set { _triggered_at = newValue.map(AnyInt.init) } + public var dashboard_title: String? { + get { _dashboard_title?.value } + set { _dashboard_title = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, created_at: Int64? = nil, id: String? = nil, model_name: String? = nil, name: String? = nil, stale_before: Int64? = nil, trigger_check_at: Int64? = nil, trigger_error: String? = nil, trigger_value: String? = nil, triggered_at: Int64? = nil) { + /** + * Components (read-only) + */ + public var dashboard_layout_components: [DashboardLayoutComponent]? + + public init(can: StringDictionary? = nil, id: String? = nil, dashboard_id: String? = nil, type: String? = nil, active: Bool? = nil, column_width: Int64? = nil, width: Int64? = nil, deleted: Bool? = nil, dashboard_title: String? = nil, dashboard_layout_components: [DashboardLayoutComponent]? = nil) { self.can = can - self._created_at = created_at.map(AnyInt.init) self._id = id.map(AnyString.init) - self._model_name = model_name.map(AnyString.init) - self._name = name.map(AnyString.init) - self._stale_before = stale_before.map(AnyInt.init) - self._trigger_check_at = trigger_check_at.map(AnyInt.init) - self._trigger_error = trigger_error.map(AnyString.init) - self._trigger_value = trigger_value.map(AnyString.init) - self._triggered_at = triggered_at.map(AnyInt.init) - } - -} - -public struct DBConnection: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _name = "name" - case dialect - case snippets - case pdts_enabled - case _host = "host" - case _port = "port" - case _username = "username" - case _password = "password" - case uses_oauth - case _certificate = "certificate" - case _file_type = "file_type" - case _database = "database" - case _db_timezone = "db_timezone" - case _query_timezone = "query_timezone" - case _schema = "schema" - case _max_connections = "max_connections" - case _max_billing_gigabytes = "max_billing_gigabytes" - case ssl - case verify_ssl - case _tmp_db_name = "tmp_db_name" - case _jdbc_additional_params = "jdbc_additional_params" - case _pool_timeout = "pool_timeout" - case _dialect_name = "dialect_name" - case supports_data_studio_link - case _created_at = "created_at" - case _user_id = "user_id" - case example - case user_db_credentials - case _user_attribute_fields = "user_attribute_fields" - case _maintenance_cron = "maintenance_cron" - case _last_regen_at = "last_regen_at" - case _last_reap_at = "last_reap_at" - case sql_runner_precache_tables - case sql_writing_with_info_schema - case _after_connect_statements = "after_connect_statements" - case pdt_context_override - case managed - case _custom_local_port = "custom_local_port" - case _tunnel_id = "tunnel_id" - case uses_tns - case _pdt_concurrency = "pdt_concurrency" - case disable_context_comment - case _oauth_application_id = "oauth_application_id" - case always_retry_failed_builds - case cost_estimate_enabled - case pdt_api_control_enabled + self._dashboard_id = dashboard_id.map(AnyString.init) + self._type = type.map(AnyString.init) + self.active = active + self._column_width = column_width.map(AnyInt.init) + self._width = width.map(AnyInt.init) + self.deleted = deleted + self._dashboard_title = dashboard_title.map(AnyString.init) + self.dashboard_layout_components = dashboard_layout_components + } + +} + +public struct DashboardLayoutComponent: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _id = "id" + case _dashboard_layout_id = "dashboard_layout_id" + case _dashboard_element_id = "dashboard_element_id" + case _row = "row" + case _column = "column" + case _width = "width" + case _height = "height" + case deleted + case _element_title = "element_title" + case element_title_hidden + case _vis_type = "vis_type" } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _name: AnyString? + private var _id: AnyString? /** - * Name of the connection. Also used as the unique identifier + * Unique Id (read-only) */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - public var dialect: Dialect? + private var _dashboard_layout_id: AnyString? + /** + * Id of Dashboard Layout + */ + public var dashboard_layout_id: String? { + get { _dashboard_layout_id?.value } + set { _dashboard_layout_id = newValue.map(AnyString.init) } + } + private var _dashboard_element_id: AnyString? /** - * SQL Runner snippets for this connection (read-only) + * Id Of Dashboard Element */ - public var snippets: [Snippet]? + public var dashboard_element_id: String? { + get { _dashboard_element_id?.value } + set { _dashboard_element_id = newValue.map(AnyString.init) } + } + private var _row: AnyInt? /** - * True if PDTs are enabled on this connection (read-only) + * Row */ - public var pdts_enabled: Bool? + public var row: Int64? { + get { _row?.value } + set { _row = newValue.map(AnyInt.init) } + } - private var _host: AnyString? + private var _column: AnyInt? /** - * Host name/address of server; or the string 'localhost' in case of a connection over an SSH tunnel. + * Column */ - public var host: String? { - get { _host?.value } - set { _host = newValue.map(AnyString.init) } + public var column: Int64? { + get { _column?.value } + set { _column = newValue.map(AnyInt.init) } } - private var _port: AnyString? + private var _width: AnyInt? /** - * Port number on server. If the connection is over an SSH tunnel, then the local port associated with the SSH tunnel. + * Width */ - public var port: String? { - get { _port?.value } - set { _port = newValue.map(AnyString.init) } + public var width: Int64? { + get { _width?.value } + set { _width = newValue.map(AnyInt.init) } } - private var _username: AnyString? + private var _height: AnyInt? /** - * Username for server authentication + * Height */ - public var username: String? { - get { _username?.value } - set { _username = newValue.map(AnyString.init) } + public var height: Int64? { + get { _height?.value } + set { _height = newValue.map(AnyInt.init) } } - private var _password: AnyString? /** - * (Write-Only) Password for server authentication + * Whether or not the dashboard layout component is deleted (read-only) */ - public var password: String? { - get { _password?.value } - set { _password = newValue.map(AnyString.init) } + public var deleted: Bool? + + private var _element_title: AnyString? + /** + * Dashboard element title, extracted from the Dashboard Element. (read-only) + */ + public var element_title: String? { + get { _element_title?.value } + set { _element_title = newValue.map(AnyString.init) } } /** - * Whether the connection uses OAuth for authentication. (read-only) + * Whether or not the dashboard element title is displayed. (read-only) */ - public var uses_oauth: Bool? + public var element_title_hidden: Bool? - private var _certificate: AnyString? + private var _vis_type: AnyString? /** - * (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). + * Visualization type, extracted from a query's vis_config (read-only) */ - public var certificate: String? { - get { _certificate?.value } - set { _certificate = newValue.map(AnyString.init) } + public var vis_type: String? { + get { _vis_type?.value } + set { _vis_type = newValue.map(AnyString.init) } } - private var _file_type: AnyString? + public init(can: StringDictionary? = nil, id: String? = nil, dashboard_layout_id: String? = nil, dashboard_element_id: String? = nil, row: Int64? = nil, column: Int64? = nil, width: Int64? = nil, height: Int64? = nil, deleted: Bool? = nil, element_title: String? = nil, element_title_hidden: Bool? = nil, vis_type: String? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self._dashboard_layout_id = dashboard_layout_id.map(AnyString.init) + self._dashboard_element_id = dashboard_element_id.map(AnyString.init) + self._row = row.map(AnyInt.init) + self._column = column.map(AnyInt.init) + self._width = width.map(AnyInt.init) + self._height = height.map(AnyInt.init) + self.deleted = deleted + self._element_title = element_title.map(AnyString.init) + self.element_title_hidden = element_title_hidden + self._vis_type = vis_type.map(AnyString.init) + } + +} + +public struct DashboardLookml: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _dashboard_id = "dashboard_id" + case _folder_id = "folder_id" + case _lookml = "lookml" + } + private var _dashboard_id: AnyString? /** - * (Write-Only) Certificate keyfile type - .json or .p12 + * Id of Dashboard (read-only) */ - public var file_type: String? { - get { _file_type?.value } - set { _file_type = newValue.map(AnyString.init) } + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } - private var _database: AnyString? + private var _folder_id: AnyString? /** - * Database name + * (Write-Only) Id of the folder */ - public var database: String? { - get { _database?.value } - set { _database = newValue.map(AnyString.init) } + public var folder_id: String? { + get { _folder_id?.value } + set { _folder_id = newValue.map(AnyString.init) } } - private var _db_timezone: AnyString? + private var _lookml: AnyString? /** - * Time zone of database + * lookml of UDD */ - public var db_timezone: String? { - get { _db_timezone?.value } - set { _db_timezone = newValue.map(AnyString.init) } + public var lookml: String? { + get { _lookml?.value } + set { _lookml = newValue.map(AnyString.init) } } - private var _query_timezone: AnyString? + public init(dashboard_id: String? = nil, folder_id: String? = nil, lookml: String? = nil) { + self._dashboard_id = dashboard_id.map(AnyString.init) + self._folder_id = folder_id.map(AnyString.init) + self._lookml = lookml.map(AnyString.init) + } + +} + +public struct DataActionForm: SDKModel { + public var state: DataActionUserState? + /** - * Timezone to use in queries + * Array of form fields. (read-only) */ - public var query_timezone: String? { - get { _query_timezone?.value } - set { _query_timezone = newValue.map(AnyString.init) } + public var fields: [DataActionFormField]? + + public init(state: DataActionUserState? = nil, fields: [DataActionFormField]? = nil) { + self.state = state + self.fields = fields } - private var _schema: AnyString? +} + +public struct DataActionFormField: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _label = "label" + case _description = "description" + case _type = "type" + case _default = "default" + case _oauth_url = "oauth_url" + case interactive + case required + case options + } + private var _name: AnyString? /** - * Schema name + * Name (read-only) */ - public var schema: String? { - get { _schema?.value } - set { _schema = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - private var _max_connections: AnyInt? + private var _label: AnyString? /** - * Maximum number of concurrent connection to use + * Human-readable label (read-only) */ - public var max_connections: Int64? { - get { _max_connections?.value } - set { _max_connections = newValue.map(AnyInt.init) } + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } } - private var _max_billing_gigabytes: AnyString? + private var _description: AnyString? /** - * Maximum size of query in GBs (BigQuery only, can be a user_attribute name) + * Description of field (read-only) + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } + + private var _type: AnyString? + /** + * Type of field. (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + + private var _default: AnyString? + /** + * Default value of the field. (read-only) + */ + public var `default`: String? { + get { _default?.value } + set { _default = newValue.map(AnyString.init) } + } + + private var _oauth_url: AnyString? + /** + * The URL for an oauth link, if type is 'oauth_link'. (read-only) */ - public var max_billing_gigabytes: String? { - get { _max_billing_gigabytes?.value } - set { _max_billing_gigabytes = newValue.map(AnyString.init) } + public var oauth_url: String? { + get { _oauth_url?.value } + set { _oauth_url = newValue.map(AnyString.init) } } /** - * Use SSL/TLS when connecting to server + * Whether or not a field supports interactive forms. (read-only) */ - public var ssl: Bool? + public var interactive: Bool? /** - * Verify the SSL + * 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. (read-only) */ - public var verify_ssl: Bool? + public var required: Bool? - private var _tmp_db_name: AnyString? /** - * Name of temporary database (if used) + * If the form type is 'select', a list of options to be selected from. (read-only) */ - public var tmp_db_name: String? { - get { _tmp_db_name?.value } - set { _tmp_db_name = newValue.map(AnyString.init) } + public var options: [DataActionFormSelectOption]? + + public init(name: String? = nil, label: String? = nil, description: String? = nil, type: String? = nil, `default`: String? = nil, oauth_url: String? = nil, interactive: Bool? = nil, required: Bool? = nil, options: [DataActionFormSelectOption]? = nil) { + self._name = name.map(AnyString.init) + self._label = label.map(AnyString.init) + self._description = description.map(AnyString.init) + self._type = type.map(AnyString.init) + self._default = `default`.map(AnyString.init) + self._oauth_url = oauth_url.map(AnyString.init) + self.interactive = interactive + self.required = required + self.options = options } - private var _jdbc_additional_params: AnyString? +} + +public struct DataActionFormSelectOption: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _label = "label" + } + private var _name: AnyString? /** - * Additional params to add to JDBC connection string + * Name (read-only) */ - public var jdbc_additional_params: String? { - get { _jdbc_additional_params?.value } - set { _jdbc_additional_params = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - private var _pool_timeout: AnyInt? + private var _label: AnyString? /** - * Connection Pool Timeout, in seconds + * Human-readable label (read-only) */ - public var pool_timeout: Int64? { - get { _pool_timeout?.value } - set { _pool_timeout = newValue.map(AnyInt.init) } + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } } - private var _dialect_name: AnyString? - /** - * (Read/Write) SQL Dialect name - */ - public var dialect_name: String? { - get { _dialect_name?.value } - set { _dialect_name = newValue.map(AnyString.init) } + public init(name: String? = nil, label: String? = nil) { + self._name = name.map(AnyString.init) + self._label = label.map(AnyString.init) } +} + +public struct DataActionRequest: SDKModel { /** - * Database connection has the ability to support open data studio from explore (read-only) + * 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. */ - public var supports_data_studio_link: Bool? + public var action: StringDictionary? - private var _created_at: AnyString? /** - * Creation date for this connection (read-only) + * User input for any form values the data action might use. */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } + public var form_values: StringDictionary? + + public init(action: StringDictionary? = nil, form_values: StringDictionary? = nil) { + self.action = action + self.form_values = form_values } - private var _user_id: AnyString? +} + +public struct DataActionResponse: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _webhook_id = "webhook_id" + case success + case refresh_query + case validation_errors + case _message = "message" + } + private var _webhook_id: AnyString? /** - * Id of user who last modified this connection configuration (read-only) + * ID of the webhook event that sent this data action. In some error conditions, this may be null. (read-only) */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + public var webhook_id: String? { + get { _webhook_id?.value } + set { _webhook_id = newValue.map(AnyString.init) } } /** - * Is this an example connection? (read-only) + * Whether the data action was successful. (read-only) */ - public var example: Bool? + public var success: Bool? /** - * (Limited access feature) Are per user db credentials enabled. Enabling will remove previously set username and password + * When true, indicates that the client should refresh (rerun) the source query because the data may have been changed by the action. (read-only) */ - public var user_db_credentials: Bool? + public var refresh_query: Bool? - private var _user_attribute_fields: [AnyString]? - /** - * Fields whose values map to user attribute names - */ - public var user_attribute_fields: [String]? { - get { if let v = _user_attribute_fields { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _user_attribute_fields = v.map { AnyString.init($0) } } else { _user_attribute_fields = nil } } - } + public var validation_errors: ValidationError? - private var _maintenance_cron: AnyString? + private var _message: AnyString? /** - * Cron string specifying when maintenance such as PDT trigger checks and drops should be performed + * 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. (read-only) */ - public var maintenance_cron: String? { - get { _maintenance_cron?.value } - set { _maintenance_cron = newValue.map(AnyString.init) } + public var message: String? { + get { _message?.value } + set { _message = newValue.map(AnyString.init) } } - private var _last_regen_at: AnyString? - /** - * Unix timestamp at start of last completed PDT trigger check process (read-only) - */ - public var last_regen_at: String? { - get { _last_regen_at?.value } - set { _last_regen_at = newValue.map(AnyString.init) } + public init(webhook_id: String? = nil, success: Bool? = nil, refresh_query: Bool? = nil, validation_errors: ValidationError? = nil, message: String? = nil) { + self._webhook_id = webhook_id.map(AnyString.init) + self.success = success + self.refresh_query = refresh_query + self.validation_errors = validation_errors + self._message = message.map(AnyString.init) } - private var _last_reap_at: AnyString? - /** - * Unix timestamp at start of last completed PDT reap process (read-only) - */ - public var last_reap_at: String? { - get { _last_reap_at?.value } - set { _last_reap_at = newValue.map(AnyString.init) } - } +} - /** - * Precache tables in the SQL Runner - */ - public var sql_runner_precache_tables: Bool? +public struct DataActionUserState: SDKModel { + private enum CodingKeys : String, CodingKey { + case _data = "data" + case _refresh_time = "refresh_time" + } + private var _data: AnyString? /** - * Fetch Information Schema For SQL Writing + * User state data (read-only) */ - public var sql_writing_with_info_schema: Bool? + public var data: String? { + get { _data?.value } + set { _data = newValue.map(AnyString.init) } + } - private var _after_connect_statements: AnyString? + private var _refresh_time: AnyInt? /** - * SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature + * Time in seconds until the state needs to be refreshed (read-only) */ - public var after_connect_statements: String? { - get { _after_connect_statements?.value } - set { _after_connect_statements = newValue.map(AnyString.init) } + public var refresh_time: Int64? { + get { _refresh_time?.value } + set { _refresh_time = newValue.map(AnyInt.init) } } - public var pdt_context_override: DBConnectionOverride? + public init(data: String? = nil, refresh_time: Int64? = nil) { + self._data = data.map(AnyString.init) + self._refresh_time = refresh_time.map(AnyInt.init) + } + +} +public struct Datagroup: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _created_at = "created_at" + case _id = "id" + case _model_name = "model_name" + case _name = "name" + case _stale_before = "stale_before" + case _trigger_check_at = "trigger_check_at" + case _trigger_error = "trigger_error" + case _trigger_value = "trigger_value" + case _triggered_at = "triggered_at" + } /** - * Is this connection created and managed by Looker (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var managed: Bool? + public var can: StringDictionary? - private var _custom_local_port: AnyInt? + private var _created_at: AnyInt? /** - * 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. + * UNIX timestamp at which this entry was created. (read-only) */ - public var custom_local_port: Int64? { - get { _custom_local_port?.value } - set { _custom_local_port = newValue.map(AnyInt.init) } + public var created_at: Int64? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyInt.init) } } - private var _tunnel_id: AnyString? + private var _id: AnyInt? /** - * The Id of the ssh tunnel this connection uses + * Unique ID of the datagroup (read-only) */ - public var tunnel_id: String? { - get { _tunnel_id?.value } - set { _tunnel_id = newValue.map(AnyString.init) } + public var id: Int64? { + get { _id?.value } + set { _id = newValue.map(AnyInt.init) } } + private var _model_name: AnyString? /** - * Enable Transparent Network Substrate (TNS) connections + * Name of the model containing the datagroup. Unique when combined with name. (read-only) */ - public var uses_tns: Bool? + public var model_name: String? { + get { _model_name?.value } + set { _model_name = newValue.map(AnyString.init) } + } - private var _pdt_concurrency: AnyInt? + private var _name: AnyString? /** - * Maximum number of threads to use to build PDTs in parallel + * Name of the datagroup. Unique when combined with model_name. (read-only) */ - public var pdt_concurrency: Int64? { - get { _pdt_concurrency?.value } - set { _pdt_concurrency = newValue.map(AnyInt.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } + private var _stale_before: AnyInt? /** - * When disable_context_comment is true comment will not be added to SQL + * UNIX timestamp before which cache entries are considered stale. Cannot be in the future. */ - public var disable_context_comment: Bool? + public var stale_before: Int64? { + get { _stale_before?.value } + set { _stale_before = newValue.map(AnyInt.init) } + } - private var _oauth_application_id: AnyString? + private var _trigger_check_at: AnyInt? /** - * An External OAuth Application to use for authenticating to the database + * UNIX timestamp at which this entry trigger was last checked. (read-only) */ - public var oauth_application_id: String? { - get { _oauth_application_id?.value } - set { _oauth_application_id = newValue.map(AnyString.init) } + public var trigger_check_at: Int64? { + get { _trigger_check_at?.value } + set { _trigger_check_at = newValue.map(AnyInt.init) } } + private var _trigger_error: AnyString? /** - * When true, error PDTs will be retried every regenerator cycle + * The message returned with the error of the last trigger check. (read-only) */ - public var always_retry_failed_builds: Bool? + public var trigger_error: String? { + get { _trigger_error?.value } + set { _trigger_error = newValue.map(AnyString.init) } + } + private var _trigger_value: AnyString? /** - * When true, query cost estimate will be displayed in explore. + * The value of the trigger when last checked. (read-only) */ - public var cost_estimate_enabled: Bool? + public var trigger_value: String? { + get { _trigger_value?.value } + set { _trigger_value = newValue.map(AnyString.init) } + } + private var _triggered_at: AnyInt? /** - * PDT builds on this connection can be kicked off and cancelled via API. + * UNIX timestamp at which this entry became triggered. Cannot be in the future. */ - public var pdt_api_control_enabled: Bool? + public var triggered_at: Int64? { + get { _triggered_at?.value } + set { _triggered_at = newValue.map(AnyInt.init) } + } - public init(can: StringDictionary? = nil, name: String? = nil, dialect: Dialect? = nil, snippets: [Snippet]? = nil, pdts_enabled: Bool? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, uses_oauth: Bool? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, db_timezone: String? = nil, query_timezone: String? = nil, schema: String? = nil, max_connections: Int64? = nil, max_billing_gigabytes: String? = nil, ssl: Bool? = nil, verify_ssl: Bool? = nil, tmp_db_name: String? = nil, jdbc_additional_params: String? = nil, pool_timeout: Int64? = nil, dialect_name: String? = nil, supports_data_studio_link: Bool? = nil, created_at: String? = nil, user_id: String? = nil, example: Bool? = nil, user_db_credentials: Bool? = nil, user_attribute_fields: [String]? = nil, maintenance_cron: String? = nil, last_regen_at: String? = nil, last_reap_at: String? = nil, sql_runner_precache_tables: Bool? = nil, sql_writing_with_info_schema: Bool? = nil, after_connect_statements: String? = nil, pdt_context_override: DBConnectionOverride? = nil, managed: Bool? = nil, custom_local_port: Int64? = nil, tunnel_id: String? = nil, uses_tns: Bool? = nil, pdt_concurrency: Int64? = nil, disable_context_comment: Bool? = nil, oauth_application_id: String? = nil, always_retry_failed_builds: Bool? = nil, cost_estimate_enabled: Bool? = nil, pdt_api_control_enabled: Bool? = nil) { + public init(can: StringDictionary? = nil, created_at: Int64? = nil, id: Int64? = nil, model_name: String? = nil, name: String? = nil, stale_before: Int64? = nil, trigger_check_at: Int64? = nil, trigger_error: String? = nil, trigger_value: String? = nil, triggered_at: Int64? = nil) { self.can = can + self._created_at = created_at.map(AnyInt.init) + self._id = id.map(AnyInt.init) + self._model_name = model_name.map(AnyString.init) self._name = name.map(AnyString.init) - self.dialect = dialect - self.snippets = snippets - self.pdts_enabled = pdts_enabled - self._host = host.map(AnyString.init) - self._port = port.map(AnyString.init) - self._username = username.map(AnyString.init) - self._password = password.map(AnyString.init) - self.uses_oauth = uses_oauth - self._certificate = certificate.map(AnyString.init) - self._file_type = file_type.map(AnyString.init) - self._database = database.map(AnyString.init) - self._db_timezone = db_timezone.map(AnyString.init) - self._query_timezone = query_timezone.map(AnyString.init) - self._schema = schema.map(AnyString.init) - self._max_connections = max_connections.map(AnyInt.init) - self._max_billing_gigabytes = max_billing_gigabytes.map(AnyString.init) - self.ssl = ssl - self.verify_ssl = verify_ssl - self._tmp_db_name = tmp_db_name.map(AnyString.init) - self._jdbc_additional_params = jdbc_additional_params.map(AnyString.init) - self._pool_timeout = pool_timeout.map(AnyInt.init) - self._dialect_name = dialect_name.map(AnyString.init) - self.supports_data_studio_link = supports_data_studio_link - self._created_at = created_at.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) - self.example = example - self.user_db_credentials = user_db_credentials - if let v = user_attribute_fields { _user_attribute_fields = v.map { AnyString.init($0) } } else { _user_attribute_fields = nil } - self._maintenance_cron = maintenance_cron.map(AnyString.init) - self._last_regen_at = last_regen_at.map(AnyString.init) - self._last_reap_at = last_reap_at.map(AnyString.init) - self.sql_runner_precache_tables = sql_runner_precache_tables - self.sql_writing_with_info_schema = sql_writing_with_info_schema - self._after_connect_statements = after_connect_statements.map(AnyString.init) - self.pdt_context_override = pdt_context_override - self.managed = managed - self._custom_local_port = custom_local_port.map(AnyInt.init) - self._tunnel_id = tunnel_id.map(AnyString.init) - self.uses_tns = uses_tns - self._pdt_concurrency = pdt_concurrency.map(AnyInt.init) - self.disable_context_comment = disable_context_comment - self._oauth_application_id = oauth_application_id.map(AnyString.init) - self.always_retry_failed_builds = always_retry_failed_builds - self.cost_estimate_enabled = cost_estimate_enabled - self.pdt_api_control_enabled = pdt_api_control_enabled + self._stale_before = stale_before.map(AnyInt.init) + self._trigger_check_at = trigger_check_at.map(AnyInt.init) + self._trigger_error = trigger_error.map(AnyString.init) + self._trigger_value = trigger_value.map(AnyString.init) + self._triggered_at = triggered_at.map(AnyInt.init) } } -public struct DBConnectionBase: SDKModel { +public struct DBConnection: SDKModel { private enum CodingKeys : String, CodingKey { case can @@ -7206,6 +4754,40 @@ public struct DBConnectionBase: SDKModel { case dialect case snippets case pdts_enabled + case _host = "host" + case _port = "port" + case _username = "username" + case _password = "password" + case uses_oauth + case _certificate = "certificate" + case _file_type = "file_type" + case _database = "database" + case _db_timezone = "db_timezone" + case _query_timezone = "query_timezone" + case _schema = "schema" + case _max_connections = "max_connections" + case _max_billing_gigabytes = "max_billing_gigabytes" + case ssl + case verify_ssl + case _tmp_db_name = "tmp_db_name" + case _jdbc_additional_params = "jdbc_additional_params" + case _pool_timeout = "pool_timeout" + case _dialect_name = "dialect_name" + case supports_data_studio_link + case _created_at = "created_at" + case _user_id = "user_id" + case example + case user_db_credentials + case _user_attribute_fields = "user_attribute_fields" + case _maintenance_cron = "maintenance_cron" + case _last_regen_at = "last_regen_at" + case _last_reap_at = "last_reap_at" + case sql_runner_precache_tables + case sql_writing_with_info_schema + case _after_connect_statements = "after_connect_statements" + case pdt_context_override + case managed + case uses_tns } /** * Operations the current user is able to perform on this object (read-only) @@ -7214,7 +4796,7 @@ public struct DBConnectionBase: SDKModel { private var _name: AnyString? /** - * Name of the connection. Also used as the unique identifier (read-only) + * Name of the connection. Also used as the unique identifier */ public var name: String? { get { _name?.value } @@ -7233,44 +4815,9 @@ public struct DBConnectionBase: SDKModel { */ public var pdts_enabled: Bool? - public init(can: StringDictionary? = nil, name: String? = nil, dialect: Dialect? = nil, snippets: [Snippet]? = nil, pdts_enabled: Bool? = nil) { - self.can = can - self._name = name.map(AnyString.init) - self.dialect = dialect - self.snippets = snippets - self.pdts_enabled = pdts_enabled - } - -} - -public struct DBConnectionOverride: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _context = "context" - case _host = "host" - case _port = "port" - case _username = "username" - case _password = "password" - case has_password - case _certificate = "certificate" - case _file_type = "file_type" - case _database = "database" - case _schema = "schema" - case _jdbc_additional_params = "jdbc_additional_params" - case _after_connect_statements = "after_connect_statements" - } - private var _context: AnyString? - /** - * Context in which to override (`pdt` is the only allowed value) - */ - public var context: String? { - get { _context?.value } - set { _context = newValue.map(AnyString.init) } - } - private var _host: AnyString? /** - * Host name/address of server + * Host name/address of server; or the string 'localhost' in case of a connection over an SSH tunnel. */ public var host: String? { get { _host?.value } @@ -7279,7 +4826,7 @@ public struct DBConnectionOverride: SDKModel { private var _port: AnyString? /** - * Port number on server + * Port number on server. If the connection is over an SSH tunnel, then the local port associated with the SSH tunnel. */ public var port: String? { get { _port?.value } @@ -7305,9 +4852,9 @@ public struct DBConnectionOverride: SDKModel { } /** - * Whether or not the password is overridden in this context (read-only) + * Whether the connection uses OAuth for authentication. (read-only) */ - public var has_password: Bool? + public var uses_oauth: Bool? private var _certificate: AnyString? /** @@ -7336,1133 +4883,990 @@ public struct DBConnectionOverride: SDKModel { set { _database = newValue.map(AnyString.init) } } - private var _schema: AnyString? - /** - * Schema name - */ - public var schema: String? { - get { _schema?.value } - set { _schema = newValue.map(AnyString.init) } - } - - private var _jdbc_additional_params: AnyString? - /** - * Additional params to add to JDBC connection string - */ - public var jdbc_additional_params: String? { - get { _jdbc_additional_params?.value } - set { _jdbc_additional_params = newValue.map(AnyString.init) } - } - - private var _after_connect_statements: AnyString? + private var _db_timezone: AnyString? /** - * SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature + * Time zone of database */ - public var after_connect_statements: String? { - get { _after_connect_statements?.value } - set { _after_connect_statements = newValue.map(AnyString.init) } - } - - public init(context: String? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, has_password: Bool? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, schema: String? = nil, jdbc_additional_params: String? = nil, after_connect_statements: String? = nil) { - self._context = context.map(AnyString.init) - self._host = host.map(AnyString.init) - self._port = port.map(AnyString.init) - self._username = username.map(AnyString.init) - self._password = password.map(AnyString.init) - self.has_password = has_password - self._certificate = certificate.map(AnyString.init) - self._file_type = file_type.map(AnyString.init) - self._database = database.map(AnyString.init) - self._schema = schema.map(AnyString.init) - self._jdbc_additional_params = jdbc_additional_params.map(AnyString.init) - self._after_connect_statements = after_connect_statements.map(AnyString.init) - } - -} - -public struct DBConnectionTestResult: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _connection_string = "connection_string" - case _message = "message" - case _name = "name" - case _status = "status" + public var db_timezone: String? { + get { _db_timezone?.value } + set { _db_timezone = newValue.map(AnyString.init) } } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - private var _connection_string: AnyString? + private var _query_timezone: AnyString? /** - * JDBC connection string. (only populated in the 'connect' test) (read-only) + * Timezone to use in queries */ - public var connection_string: String? { - get { _connection_string?.value } - set { _connection_string = newValue.map(AnyString.init) } + public var query_timezone: String? { + get { _query_timezone?.value } + set { _query_timezone = newValue.map(AnyString.init) } } - private var _message: AnyString? + private var _schema: AnyString? /** - * Result message of test (read-only) + * Schema name */ - public var message: String? { - get { _message?.value } - set { _message = newValue.map(AnyString.init) } + public var schema: String? { + get { _schema?.value } + set { _schema = newValue.map(AnyString.init) } } - private var _name: AnyString? + private var _max_connections: AnyInt? /** - * Name of test (read-only) + * Maximum number of concurrent connection to use */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var max_connections: Int64? { + get { _max_connections?.value } + set { _max_connections = newValue.map(AnyInt.init) } } - private var _status: AnyString? + private var _max_billing_gigabytes: AnyString? /** - * Result code of test (read-only) + * Maximum size of query in GBs (BigQuery only, can be a user_attribute name) */ - public var status: String? { - get { _status?.value } - set { _status = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, connection_string: String? = nil, message: String? = nil, name: String? = nil, status: String? = nil) { - self.can = can - self._connection_string = connection_string.map(AnyString.init) - self._message = message.map(AnyString.init) - self._name = name.map(AnyString.init) - self._status = status.map(AnyString.init) + public var max_billing_gigabytes: String? { + get { _max_billing_gigabytes?.value } + set { _max_billing_gigabytes = newValue.map(AnyString.init) } } -} - -public struct DelegateOauthTest: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _installation_target_id = "installation_target_id" - case _installation_id = "installation_id" - case success - } - private var _name: AnyString? /** - * Delegate Oauth Connection Name (read-only) + * Use SSL/TLS when connecting to server */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } + public var ssl: Bool? - private var _installation_target_id: AnyString? /** - * The ID of the installation target. For Slack, this would be workspace id. (read-only) + * Verify the SSL */ - public var installation_target_id: String? { - get { _installation_target_id?.value } - set { _installation_target_id = newValue.map(AnyString.init) } - } + public var verify_ssl: Bool? - private var _installation_id: AnyString? + private var _tmp_db_name: AnyString? /** - * Installation ID (read-only) + * Name of temporary database (if used) */ - public var installation_id: String? { - get { _installation_id?.value } - set { _installation_id = newValue.map(AnyString.init) } + public var tmp_db_name: String? { + get { _tmp_db_name?.value } + set { _tmp_db_name = newValue.map(AnyString.init) } } + private var _jdbc_additional_params: AnyString? /** - * Whether or not the test was successful (read-only) + * Additional params to add to JDBC connection string */ - public var success: Bool? - - public init(name: String? = nil, installation_target_id: String? = nil, installation_id: String? = nil, success: Bool? = nil) { - self._name = name.map(AnyString.init) - self._installation_target_id = installation_target_id.map(AnyString.init) - self._installation_id = installation_id.map(AnyString.init) - self.success = success + public var jdbc_additional_params: String? { + get { _jdbc_additional_params?.value } + set { _jdbc_additional_params = newValue.map(AnyString.init) } } -} - -public struct DependencyGraph: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _graph_text = "graph_text" - } - private var _graph_text: AnyString? + private var _pool_timeout: AnyInt? /** - * The graph structure in the dot language that can be rendered into an image. (read-only) + * Connection Pool Timeout, in seconds */ - public var graph_text: String? { - get { _graph_text?.value } - set { _graph_text = newValue.map(AnyString.init) } + public var pool_timeout: Int64? { + get { _pool_timeout?.value } + set { _pool_timeout = newValue.map(AnyInt.init) } } - public init(graph_text: String? = nil) { - self._graph_text = graph_text.map(AnyString.init) + private var _dialect_name: AnyString? + /** + * (Read/Write) SQL Dialect name + */ + public var dialect_name: String? { + get { _dialect_name?.value } + set { _dialect_name = newValue.map(AnyString.init) } } -} - -/** - * Status of the dependencies in your project. Valid values are: "lock_optional", "lock_required", "lock_error", "install_none". (Enum defined in ProjectWorkspace) - */ -public enum DependencyStatus: String, Codable { - case lock_optional = "lock_optional" - case lock_required = "lock_required" - case lock_error = "lock_error" - case install_none = "install_none" -} - -/** - * Type of destination that the alert will be sent to Valid values are: "EMAIL", "ACTION_HUB". (Enum defined in AlertDestination) - */ -public enum DestinationType: String, Codable { - case EMAIL = "EMAIL" - case ACTION_HUB = "ACTION_HUB" -} - -/** - * Specifies type of device. Valid values are: "android", "ios". (Enum defined in MobileToken) - */ -public enum DeviceType: String, Codable { - case android = "android" - case ios = "ios" -} - -public struct Dialect: SDKModel { + /** + * Database connection has the ability to support open data studio from explore (read-only) + */ + public var supports_data_studio_link: Bool? - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _label = "label" - case supports_cost_estimate - case _cost_estimate_style = "cost_estimate_style" - case _persistent_table_indexes = "persistent_table_indexes" - case _persistent_table_sortkeys = "persistent_table_sortkeys" - case _persistent_table_distkey = "persistent_table_distkey" - case supports_streaming - case automatically_run_sql_runner_snippets - case _connection_tests = "connection_tests" - case supports_inducer - case supports_multiple_databases - case supports_persistent_derived_tables - case has_ssl_support - } - private var _name: AnyString? + private var _created_at: AnyString? /** - * The name of the dialect (read-only) + * Creation date for this connection (read-only) */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } } - private var _label: AnyString? + private var _user_id: AnyString? /** - * The human-readable label of the connection (read-only) + * Id of user who last modified this connection configuration (read-only) */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } } /** - * Whether the dialect supports query cost estimates (read-only) + * Is this an example connection? (read-only) */ - public var supports_cost_estimate: Bool? + public var example: Bool? - private var _cost_estimate_style: AnyString? /** - * How the dialect handles cost estimation (read-only) + * (Limited access feature) Are per user db credentials enabled. Enabling will remove previously set username and password */ - public var cost_estimate_style: String? { - get { _cost_estimate_style?.value } - set { _cost_estimate_style = newValue.map(AnyString.init) } - } + public var user_db_credentials: Bool? - private var _persistent_table_indexes: AnyString? + private var _user_attribute_fields: [AnyString]? /** - * PDT index columns (read-only) + * Fields whose values map to user attribute names */ - public var persistent_table_indexes: String? { - get { _persistent_table_indexes?.value } - set { _persistent_table_indexes = newValue.map(AnyString.init) } + public var user_attribute_fields: [String]? { + get { if let v = _user_attribute_fields { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _user_attribute_fields = v.map { AnyString.init($0) } } else { _user_attribute_fields = nil } } } - private var _persistent_table_sortkeys: AnyString? + private var _maintenance_cron: AnyString? /** - * PDT sortkey columns (read-only) + * Cron string specifying when maintenance such as PDT trigger checks and drops should be performed */ - public var persistent_table_sortkeys: String? { - get { _persistent_table_sortkeys?.value } - set { _persistent_table_sortkeys = newValue.map(AnyString.init) } + public var maintenance_cron: String? { + get { _maintenance_cron?.value } + set { _maintenance_cron = newValue.map(AnyString.init) } } - private var _persistent_table_distkey: AnyString? + private var _last_regen_at: AnyString? /** - * PDT distkey column (read-only) + * Unix timestamp at start of last completed PDT trigger check process (read-only) */ - public var persistent_table_distkey: String? { - get { _persistent_table_distkey?.value } - set { _persistent_table_distkey = newValue.map(AnyString.init) } + public var last_regen_at: String? { + get { _last_regen_at?.value } + set { _last_regen_at = newValue.map(AnyString.init) } } + private var _last_reap_at: AnyString? /** - * Suports streaming results (read-only) + * Unix timestamp at start of last completed PDT reap process (read-only) */ - public var supports_streaming: Bool? + public var last_reap_at: String? { + get { _last_reap_at?.value } + set { _last_reap_at = newValue.map(AnyString.init) } + } /** - * Should SQL Runner snippets automatically be run (read-only) + * Precache tables in the SQL Runner */ - public var automatically_run_sql_runner_snippets: Bool? + public var sql_runner_precache_tables: Bool? - private var _connection_tests: [AnyString]? /** - * Array of names of the tests that can be run on a connection using this dialect (read-only) + * Fetch Information Schema For SQL Writing */ - public var connection_tests: [String]? { - get { if let v = _connection_tests { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _connection_tests = v.map { AnyString.init($0) } } else { _connection_tests = nil } } - } + public var sql_writing_with_info_schema: Bool? + private var _after_connect_statements: AnyString? /** - * Is supported with the inducer (i.e. generate from sql) (read-only) + * SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature */ - public var supports_inducer: Bool? + public var after_connect_statements: String? { + get { _after_connect_statements?.value } + set { _after_connect_statements = newValue.map(AnyString.init) } + } - /** - * Can multiple databases be accessed from a connection using this dialect (read-only) - */ - public var supports_multiple_databases: Bool? + public var pdt_context_override: DBConnectionOverride? /** - * Whether the dialect supports allowing Looker to build persistent derived tables (read-only) + * Is this connection created and managed by Looker (read-only) */ - public var supports_persistent_derived_tables: Bool? + public var managed: Bool? /** - * Does the database have client SSL support settable through the JDBC string explicitly? (read-only) + * Enable Transparent Network Substrate (TNS) connections */ - public var has_ssl_support: Bool? + public var uses_tns: Bool? - public init(name: String? = nil, label: String? = nil, supports_cost_estimate: Bool? = nil, cost_estimate_style: String? = nil, persistent_table_indexes: String? = nil, persistent_table_sortkeys: String? = nil, persistent_table_distkey: String? = nil, supports_streaming: Bool? = nil, automatically_run_sql_runner_snippets: Bool? = nil, connection_tests: [String]? = nil, supports_inducer: Bool? = nil, supports_multiple_databases: Bool? = nil, supports_persistent_derived_tables: Bool? = nil, has_ssl_support: Bool? = nil) { + public init(can: StringDictionary? = nil, name: String? = nil, dialect: Dialect? = nil, snippets: [Snippet]? = nil, pdts_enabled: Bool? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, uses_oauth: Bool? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, db_timezone: String? = nil, query_timezone: String? = nil, schema: String? = nil, max_connections: Int64? = nil, max_billing_gigabytes: String? = nil, ssl: Bool? = nil, verify_ssl: Bool? = nil, tmp_db_name: String? = nil, jdbc_additional_params: String? = nil, pool_timeout: Int64? = nil, dialect_name: String? = nil, supports_data_studio_link: Bool? = nil, created_at: String? = nil, user_id: String? = nil, example: Bool? = nil, user_db_credentials: Bool? = nil, user_attribute_fields: [String]? = nil, maintenance_cron: String? = nil, last_regen_at: String? = nil, last_reap_at: String? = nil, sql_runner_precache_tables: Bool? = nil, sql_writing_with_info_schema: Bool? = nil, after_connect_statements: String? = nil, pdt_context_override: DBConnectionOverride? = nil, managed: Bool? = nil, uses_tns: Bool? = nil) { + self.can = can self._name = name.map(AnyString.init) - self._label = label.map(AnyString.init) - self.supports_cost_estimate = supports_cost_estimate - self._cost_estimate_style = cost_estimate_style.map(AnyString.init) - self._persistent_table_indexes = persistent_table_indexes.map(AnyString.init) - self._persistent_table_sortkeys = persistent_table_sortkeys.map(AnyString.init) - self._persistent_table_distkey = persistent_table_distkey.map(AnyString.init) - self.supports_streaming = supports_streaming - self.automatically_run_sql_runner_snippets = automatically_run_sql_runner_snippets - if let v = connection_tests { _connection_tests = v.map { AnyString.init($0) } } else { _connection_tests = nil } - self.supports_inducer = supports_inducer - self.supports_multiple_databases = supports_multiple_databases - self.supports_persistent_derived_tables = supports_persistent_derived_tables - self.has_ssl_support = has_ssl_support + self.dialect = dialect + self.snippets = snippets + self.pdts_enabled = pdts_enabled + self._host = host.map(AnyString.init) + self._port = port.map(AnyString.init) + self._username = username.map(AnyString.init) + self._password = password.map(AnyString.init) + self.uses_oauth = uses_oauth + self._certificate = certificate.map(AnyString.init) + self._file_type = file_type.map(AnyString.init) + self._database = database.map(AnyString.init) + self._db_timezone = db_timezone.map(AnyString.init) + self._query_timezone = query_timezone.map(AnyString.init) + self._schema = schema.map(AnyString.init) + self._max_connections = max_connections.map(AnyInt.init) + self._max_billing_gigabytes = max_billing_gigabytes.map(AnyString.init) + self.ssl = ssl + self.verify_ssl = verify_ssl + self._tmp_db_name = tmp_db_name.map(AnyString.init) + self._jdbc_additional_params = jdbc_additional_params.map(AnyString.init) + self._pool_timeout = pool_timeout.map(AnyInt.init) + self._dialect_name = dialect_name.map(AnyString.init) + self.supports_data_studio_link = supports_data_studio_link + self._created_at = created_at.map(AnyString.init) + self._user_id = user_id.map(AnyString.init) + self.example = example + self.user_db_credentials = user_db_credentials + if let v = user_attribute_fields { _user_attribute_fields = v.map { AnyString.init($0) } } else { _user_attribute_fields = nil } + self._maintenance_cron = maintenance_cron.map(AnyString.init) + self._last_regen_at = last_regen_at.map(AnyString.init) + self._last_reap_at = last_reap_at.map(AnyString.init) + self.sql_runner_precache_tables = sql_runner_precache_tables + self.sql_writing_with_info_schema = sql_writing_with_info_schema + self._after_connect_statements = after_connect_statements.map(AnyString.init) + self.pdt_context_override = pdt_context_override + self.managed = managed + self.uses_tns = uses_tns } } -public struct DialectInfo: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _default_max_connections = "default_max_connections" - case _default_port = "default_port" - case installed - case _label = "label" - case _label_for_database_equivalent = "label_for_database_equivalent" +public struct DBConnectionBase: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can case _name = "name" - case supported_options + case dialect + case snippets + case pdts_enabled } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _default_max_connections: AnyString? - /** - * Default number max connections (read-only) - */ - public var default_max_connections: String? { - get { _default_max_connections?.value } - set { _default_max_connections = newValue.map(AnyString.init) } - } - - private var _default_port: AnyString? + private var _name: AnyString? /** - * Default port number (read-only) + * Name of the connection. Also used as the unique identifier (read-only) */ - public var default_port: String? { - get { _default_port?.value } - set { _default_port = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - /** - * Is the supporting driver installed (read-only) - */ - public var installed: Bool? - - private var _label: AnyString? - /** - * The human-readable label of the connection (read-only) - */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } - } + public var dialect: Dialect? - private var _label_for_database_equivalent: AnyString? /** - * What the dialect calls the equivalent of a normal SQL table (read-only) + * SQL Runner snippets for this connection (read-only) */ - public var label_for_database_equivalent: String? { - get { _label_for_database_equivalent?.value } - set { _label_for_database_equivalent = newValue.map(AnyString.init) } - } + public var snippets: [Snippet]? - private var _name: AnyString? /** - * The name of the dialect (read-only) + * True if PDTs are enabled on this connection (read-only) */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - public var supported_options: DialectInfoOptions? + public var pdts_enabled: Bool? - public init(can: StringDictionary? = nil, default_max_connections: String? = nil, default_port: String? = nil, installed: Bool? = nil, label: String? = nil, label_for_database_equivalent: String? = nil, name: String? = nil, supported_options: DialectInfoOptions? = nil) { + public init(can: StringDictionary? = nil, name: String? = nil, dialect: Dialect? = nil, snippets: [Snippet]? = nil, pdts_enabled: Bool? = nil) { self.can = can - self._default_max_connections = default_max_connections.map(AnyString.init) - self._default_port = default_port.map(AnyString.init) - self.installed = installed - self._label = label.map(AnyString.init) - self._label_for_database_equivalent = label_for_database_equivalent.map(AnyString.init) self._name = name.map(AnyString.init) - self.supported_options = supported_options + self.dialect = dialect + self.snippets = snippets + self.pdts_enabled = pdts_enabled } } -public struct DialectInfoOptions: SDKModel { - /** - * Has additional params support (read-only) - */ - public var additional_params: Bool? +public struct DBConnectionOverride: SDKModel { + private enum CodingKeys : String, CodingKey { + case _context = "context" + case _host = "host" + case _port = "port" + case _username = "username" + case _password = "password" + case has_password + case _certificate = "certificate" + case _file_type = "file_type" + case _database = "database" + case _schema = "schema" + case _jdbc_additional_params = "jdbc_additional_params" + case _after_connect_statements = "after_connect_statements" + } + private var _context: AnyString? /** - * Has support for issuing statements after connecting to the database (read-only) + * Context in which to override (`pdt` is the only allowed value) */ - public var after_connect_statements: Bool? + public var context: String? { + get { _context?.value } + set { _context = newValue.map(AnyString.init) } + } + private var _host: AnyString? /** - * Has analytical view support (read-only) + * Host name/address of server */ - public var analytical_view_dataset: Bool? + public var host: String? { + get { _host?.value } + set { _host = newValue.map(AnyString.init) } + } + private var _port: AnyString? /** - * Has auth support (read-only) + * Port number on server */ - public var auth: Bool? + public var port: String? { + get { _port?.value } + set { _port = newValue.map(AnyString.init) } + } + private var _username: AnyString? /** - * Has configurable cost estimation (read-only) + * Username for server authentication */ - public var cost_estimate: Bool? + public var username: String? { + get { _username?.value } + set { _username = newValue.map(AnyString.init) } + } + private var _password: AnyString? /** - * Can disable query context comments (read-only) + * (Write-Only) Password for server authentication */ - public var disable_context_comment: Bool? + public var password: String? { + get { _password?.value } + set { _password = newValue.map(AnyString.init) } + } /** - * Host is required (read-only) + * Whether or not the password is overridden in this context (read-only) */ - public var host: Bool? + public var has_password: Bool? + private var _certificate: AnyString? /** - * Instance name is required (read-only) + * (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). */ - public var instance_name: Bool? + public var certificate: String? { + get { _certificate?.value } + set { _certificate = newValue.map(AnyString.init) } + } + private var _file_type: AnyString? /** - * Has max billing gigabytes support (read-only) + * (Write-Only) Certificate keyfile type - .json or .p12 */ - public var max_billing_gigabytes: Bool? + public var file_type: String? { + get { _file_type?.value } + set { _file_type = newValue.map(AnyString.init) } + } + private var _database: AnyString? /** - * Has support for a service account (read-only) + * Database name */ - public var oauth_credentials: Bool? + public var database: String? { + get { _database?.value } + set { _database = newValue.map(AnyString.init) } + } + private var _schema: AnyString? /** - * Has OAuth for PDT support (read-only) + * Schema name */ - public var pdts_for_oauth: Bool? + public var schema: String? { + get { _schema?.value } + set { _schema = newValue.map(AnyString.init) } + } + private var _jdbc_additional_params: AnyString? /** - * Port can be specified (read-only) + * Additional params to add to JDBC connection string */ - public var port: Bool? + public var jdbc_additional_params: String? { + get { _jdbc_additional_params?.value } + set { _jdbc_additional_params = newValue.map(AnyString.init) } + } + private var _after_connect_statements: AnyString? /** - * Has project name support (read-only) + * SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature */ - public var project_name: Bool? + public var after_connect_statements: String? { + get { _after_connect_statements?.value } + set { _after_connect_statements = newValue.map(AnyString.init) } + } + + public init(context: String? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, has_password: Bool? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, schema: String? = nil, jdbc_additional_params: String? = nil, after_connect_statements: String? = nil) { + self._context = context.map(AnyString.init) + self._host = host.map(AnyString.init) + self._port = port.map(AnyString.init) + self._username = username.map(AnyString.init) + self._password = password.map(AnyString.init) + self.has_password = has_password + self._certificate = certificate.map(AnyString.init) + self._file_type = file_type.map(AnyString.init) + self._database = database.map(AnyString.init) + self._schema = schema.map(AnyString.init) + self._jdbc_additional_params = jdbc_additional_params.map(AnyString.init) + self._after_connect_statements = after_connect_statements.map(AnyString.init) + } + +} + +public struct DBConnectionTestResult: SDKModel { + private enum CodingKeys : String, CodingKey { + case can + case _connection_string = "connection_string" + case _message = "message" + case _name = "name" + case _status = "status" + } /** - * Schema can be specified (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var schema: Bool? + public var can: StringDictionary? + private var _connection_string: AnyString? /** - * Has support for a service account (read-only) + * JDBC connection string. (only populated in the 'connect' test) (read-only) */ - public var service_account_credentials: Bool? + public var connection_string: String? { + get { _connection_string?.value } + set { _connection_string = newValue.map(AnyString.init) } + } + private var _message: AnyString? /** - * Has TLS/SSL support (read-only) + * Result message of test (read-only) */ - public var ssl: Bool? + public var message: String? { + get { _message?.value } + set { _message = newValue.map(AnyString.init) } + } + private var _name: AnyString? /** - * Has timezone support (read-only) + * Name of test (read-only) */ - public var timezone: Bool? + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + private var _status: AnyString? /** - * Has tmp table support (read-only) + * Result code of test (read-only) */ - public var tmp_table: Bool? + public var status: String? { + get { _status?.value } + set { _status = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, connection_string: String? = nil, message: String? = nil, name: String? = nil, status: String? = nil) { + self.can = can + self._connection_string = connection_string.map(AnyString.init) + self._message = message.map(AnyString.init) + self._name = name.map(AnyString.init) + self._status = status.map(AnyString.init) + } + +} + +public struct DelegateOauthTest: SDKModel { + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _installation_target_id = "installation_target_id" + case _installation_id = "installation_id" + case success + } + private var _name: AnyString? /** - * Has Oracle TNS support (read-only) + * Delegate Oauth Connection Name (read-only) */ - public var tns: Bool? + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + private var _installation_target_id: AnyString? /** - * Username can be specified (read-only) + * The ID of the installation target. For Slack, this would be workspace id. (read-only) */ - public var username: Bool? + public var installation_target_id: String? { + get { _installation_target_id?.value } + set { _installation_target_id = newValue.map(AnyString.init) } + } + private var _installation_id: AnyInt? /** - * Username is required (read-only) + * Installation ID (read-only) */ - public var username_required: Bool? - - public init(additional_params: Bool? = nil, after_connect_statements: Bool? = nil, analytical_view_dataset: Bool? = nil, auth: Bool? = nil, cost_estimate: Bool? = nil, disable_context_comment: Bool? = nil, host: Bool? = nil, instance_name: Bool? = nil, max_billing_gigabytes: Bool? = nil, oauth_credentials: Bool? = nil, pdts_for_oauth: Bool? = nil, port: Bool? = nil, project_name: Bool? = nil, schema: Bool? = nil, service_account_credentials: Bool? = nil, ssl: Bool? = nil, timezone: Bool? = nil, tmp_table: Bool? = nil, tns: Bool? = nil, username: Bool? = nil, username_required: Bool? = nil) { - self.additional_params = additional_params - self.after_connect_statements = after_connect_statements - self.analytical_view_dataset = analytical_view_dataset - self.auth = auth - self.cost_estimate = cost_estimate - self.disable_context_comment = disable_context_comment - self.host = host - self.instance_name = instance_name - self.max_billing_gigabytes = max_billing_gigabytes - self.oauth_credentials = oauth_credentials - self.pdts_for_oauth = pdts_for_oauth - self.port = port - self.project_name = project_name - self.schema = schema - self.service_account_credentials = service_account_credentials - self.ssl = ssl - self.timezone = timezone - self.tmp_table = tmp_table - self.tns = tns - self.username = username - self.username_required = username_required + public var installation_id: Int64? { + get { _installation_id?.value } + set { _installation_id = newValue.map(AnyInt.init) } } -} - -public struct DigestEmails: SDKModel { /** - * Whether or not digest emails are enabled + * Whether or not the test was successful (read-only) */ - public var is_enabled: Bool? + public var success: Bool? - public init(is_enabled: Bool? = nil) { - self.is_enabled = is_enabled + public init(name: String? = nil, installation_target_id: String? = nil, installation_id: Int64? = nil, success: Bool? = nil) { + self._name = name.map(AnyString.init) + self._installation_target_id = installation_target_id.map(AnyString.init) + self._installation_id = installation_id.map(AnyInt.init) + self.success = success } } -public struct DigestEmailSend: SDKModel { +public struct DependencyGraph: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _graph_text = "graph_text" + } + private var _graph_text: AnyString? /** - * True if content was successfully generated and delivered + * The graph structure in the dot language that can be rendered into an image. (read-only) */ - public var configuration_delivered: Bool? + public var graph_text: String? { + get { _graph_text?.value } + set { _graph_text = newValue.map(AnyString.init) } + } - public init(configuration_delivered: Bool? = nil) { - self.configuration_delivered = configuration_delivered + public init(graph_text: String? = nil) { + self._graph_text = graph_text.map(AnyString.init) } } -public struct DiscretePalette: SDKModel { +/** + * Status of the dependencies in your project. Valid values are: "lock_optional", "lock_required", "lock_error", "install_none". (Enum defined in ProjectWorkspace) + */ +public enum DependencyStatus: String, Codable { + case lock_optional = "lock_optional" + case lock_required = "lock_required" + case lock_error = "lock_error" + case install_none = "install_none" +} + +public struct Dialect: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" + case _name = "name" case _label = "label" - case _type = "type" - case _colors = "colors" + case supports_cost_estimate + case _cost_estimate_style = "cost_estimate_style" + case _persistent_table_indexes = "persistent_table_indexes" + case _persistent_table_sortkeys = "persistent_table_sortkeys" + case _persistent_table_distkey = "persistent_table_distkey" + case supports_streaming + case automatically_run_sql_runner_snippets + case _connection_tests = "connection_tests" + case supports_inducer + case supports_multiple_databases + case supports_persistent_derived_tables + case has_ssl_support } - private var _id: AnyString? + private var _name: AnyString? /** - * Unique identity string (read-only) + * The name of the dialect (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } private var _label: AnyString? /** - * Label for palette + * The human-readable label of the connection (read-only) */ public var label: String? { get { _label?.value } set { _label = newValue.map(AnyString.init) } } - private var _type: AnyString? /** - * Type of palette + * Whether the dialect supports query cost estimates (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } + public var supports_cost_estimate: Bool? - private var _colors: [AnyString]? + private var _cost_estimate_style: AnyString? /** - * Array of colors in the palette + * How the dialect handles cost estimation (read-only) */ - public var colors: [String]? { - get { if let v = _colors { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _colors = v.map { AnyString.init($0) } } else { _colors = nil } } + public var cost_estimate_style: String? { + get { _cost_estimate_style?.value } + set { _cost_estimate_style = newValue.map(AnyString.init) } } - public init(id: String? = nil, label: String? = nil, type: String? = nil, colors: [String]? = nil) { - self._id = id.map(AnyString.init) - self._label = label.map(AnyString.init) - self._type = type.map(AnyString.init) - if let v = colors { _colors = v.map { AnyString.init($0) } } else { _colors = nil } + private var _persistent_table_indexes: AnyString? + /** + * PDT index columns (read-only) + */ + public var persistent_table_indexes: String? { + get { _persistent_table_indexes?.value } + set { _persistent_table_indexes = newValue.map(AnyString.init) } } -} - -public struct EgressIpAddresses: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _egress_ip_addresses = "egress_ip_addresses" - } - private var _egress_ip_addresses: [AnyString]? + private var _persistent_table_sortkeys: AnyString? /** - * Egress IP addresses (read-only) + * PDT sortkey columns (read-only) */ - public var egress_ip_addresses: [String]? { - get { if let v = _egress_ip_addresses { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _egress_ip_addresses = v.map { AnyString.init($0) } } else { _egress_ip_addresses = nil } } + public var persistent_table_sortkeys: String? { + get { _persistent_table_sortkeys?.value } + set { _persistent_table_sortkeys = newValue.map(AnyString.init) } } - public init(egress_ip_addresses: [String]? = nil) { - if let v = egress_ip_addresses { _egress_ip_addresses = v.map { AnyString.init($0) } } else { _egress_ip_addresses = nil } + private var _persistent_table_distkey: AnyString? + /** + * PDT distkey column (read-only) + */ + public var persistent_table_distkey: String? { + get { _persistent_table_distkey?.value } + set { _persistent_table_distkey = newValue.map(AnyString.init) } } -} + /** + * Suports streaming results (read-only) + */ + public var supports_streaming: Bool? -public struct EmbedCookielessSessionAcquire: SDKModel { + /** + * Should SQL Runner snippets automatically be run (read-only) + */ + public var automatically_run_sql_runner_snippets: Bool? - private enum CodingKeys : String, CodingKey { - case _session_length = "session_length" - case force_logout_login - case _external_user_id = "external_user_id" - case _first_name = "first_name" - case _last_name = "last_name" - case _user_timezone = "user_timezone" - case _permissions = "permissions" - case _models = "models" - case _group_ids = "group_ids" - case _external_group_id = "external_group_id" - case user_attributes - case _session_reference_token = "session_reference_token" - case _embed_domain = "embed_domain" - } - private var _session_length: AnyInt? + private var _connection_tests: [AnyString]? /** - * Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + * Array of names of the tests that can be run on a connection using this dialect (read-only) */ - public var session_length: Int64? { - get { _session_length?.value } - set { _session_length = newValue.map(AnyInt.init) } + public var connection_tests: [String]? { + get { if let v = _connection_tests { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _connection_tests = v.map { AnyString.init($0) } } else { _connection_tests = nil } } } /** - * 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. + * Is supported with the inducer (i.e. generate from sql) (read-only) */ - public var force_logout_login: Bool? + public var supports_inducer: Bool? - private var _external_user_id: AnyString? /** - * A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + * Can multiple databases be accessed from a connection using this dialect (read-only) */ - public var external_user_id: String? { - get { _external_user_id?.value } - set { _external_user_id = newValue.map(AnyString.init) } - } + public var supports_multiple_databases: Bool? - private var _first_name: AnyString? /** - * First name of the embed user. Defaults to 'Embed' if not specified + * Whether the dialect supports allowing Looker to build persistent derived tables (read-only) */ - public var first_name: String? { - get { _first_name?.value } - set { _first_name = newValue.map(AnyString.init) } - } + public var supports_persistent_derived_tables: Bool? - private var _last_name: AnyString? /** - * Last name of the embed user. Defaults to 'User' if not specified + * Does the database have client SSL support settable through the JDBC string explicitly? (read-only) */ - public var last_name: String? { - get { _last_name?.value } - set { _last_name = newValue.map(AnyString.init) } + public var has_ssl_support: Bool? + + public init(name: String? = nil, label: String? = nil, supports_cost_estimate: Bool? = nil, cost_estimate_style: String? = nil, persistent_table_indexes: String? = nil, persistent_table_sortkeys: String? = nil, persistent_table_distkey: String? = nil, supports_streaming: Bool? = nil, automatically_run_sql_runner_snippets: Bool? = nil, connection_tests: [String]? = nil, supports_inducer: Bool? = nil, supports_multiple_databases: Bool? = nil, supports_persistent_derived_tables: Bool? = nil, has_ssl_support: Bool? = nil) { + self._name = name.map(AnyString.init) + self._label = label.map(AnyString.init) + self.supports_cost_estimate = supports_cost_estimate + self._cost_estimate_style = cost_estimate_style.map(AnyString.init) + self._persistent_table_indexes = persistent_table_indexes.map(AnyString.init) + self._persistent_table_sortkeys = persistent_table_sortkeys.map(AnyString.init) + self._persistent_table_distkey = persistent_table_distkey.map(AnyString.init) + self.supports_streaming = supports_streaming + self.automatically_run_sql_runner_snippets = automatically_run_sql_runner_snippets + if let v = connection_tests { _connection_tests = v.map { AnyString.init($0) } } else { _connection_tests = nil } + self.supports_inducer = supports_inducer + self.supports_multiple_databases = supports_multiple_databases + self.supports_persistent_derived_tables = supports_persistent_derived_tables + self.has_ssl_support = has_ssl_support } - private var _user_timezone: AnyString? - /** - * Sets the user timezone for the embed user session, if the User Specific Timezones setting is enabled in the Looker admin settings. A value of `null` forces the embed user to use the Looker Application Default Timezone. You MUST omit this property from the request if the User Specific Timezones setting is disabled. Timezone values are validated against the IANA Timezone standard and can be seen in the Application Time Zone dropdown list on the Looker General Settings admin page. - */ - public var user_timezone: String? { - get { _user_timezone?.value } - set { _user_timezone = newValue.map(AnyString.init) } +} + +public struct DialectInfo: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _default_max_connections = "default_max_connections" + case _default_port = "default_port" + case installed + case _label = "label" + case _label_for_database_equivalent = "label_for_database_equivalent" + case _name = "name" + case supported_options } - - private var _permissions: [AnyString]? /** - * List of Looker permission names to grant to the embed user. Requested permissions will be filtered to permissions allowed for embed sessions. + * Operations the current user is able to perform on this object (read-only) */ - public var permissions: [String]? { - get { if let v = _permissions { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } } - } + public var can: StringDictionary? - private var _models: [AnyString]? + private var _default_max_connections: AnyString? /** - * List of model names that the embed user may access + * Default number max connections (read-only) */ - public var models: [String]? { - get { if let v = _models { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _models = v.map { AnyString.init($0) } } else { _models = nil } } + public var default_max_connections: String? { + get { _default_max_connections?.value } + set { _default_max_connections = newValue.map(AnyString.init) } } - private var _group_ids: [AnyString]? + private var _default_port: AnyString? /** - * List of Looker group ids in which to enroll the embed user + * Default port number (read-only) */ - public var group_ids: [String]? { - get { if let v = _group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _group_ids = v.map { AnyString.init($0) } } else { _group_ids = nil } } + public var default_port: String? { + get { _default_port?.value } + set { _default_port = newValue.map(AnyString.init) } } - private var _external_group_id: AnyString? /** - * A unique value identifying an embed-exclusive group. Multiple embed users using the same `external_group_id` value will be able to share Looker content with each other. Content and embed users associated with the `external_group_id` will not be accessible to normal Looker users or embed users not associated with this `external_group_id`. + * Is the supporting driver installed (read-only) */ - public var external_group_id: String? { - get { _external_group_id?.value } - set { _external_group_id = newValue.map(AnyString.init) } - } + public var installed: Bool? + private var _label: AnyString? /** - * A dictionary of name-value pairs associating a Looker user attribute name with a value. + * The human-readable label of the connection (read-only) */ - public var user_attributes: StringDictionary? + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } + } - private var _session_reference_token: AnyString? + private var _label_for_database_equivalent: AnyString? /** - * Token referencing the embed session and is used to generate new authentication, navigation and api tokens. + * What the dialect calls the equivalent of a normal SQL table (read-only) */ - public var session_reference_token: String? { - get { _session_reference_token?.value } - set { _session_reference_token = newValue.map(AnyString.init) } + public var label_for_database_equivalent: String? { + get { _label_for_database_equivalent?.value } + set { _label_for_database_equivalent = newValue.map(AnyString.init) } } - private var _embed_domain: AnyString? + private var _name: AnyString? /** - * 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. + * The name of the dialect (read-only) */ - public var embed_domain: String? { - get { _embed_domain?.value } - set { _embed_domain = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - public init(session_length: Int64? = nil, force_logout_login: Bool? = nil, external_user_id: String? = nil, first_name: String? = nil, last_name: String? = nil, user_timezone: String? = nil, permissions: [String]? = nil, models: [String]? = nil, group_ids: [String]? = nil, external_group_id: String? = nil, user_attributes: StringDictionary? = nil, session_reference_token: String? = nil, embed_domain: String? = nil) { - self._session_length = session_length.map(AnyInt.init) - self.force_logout_login = force_logout_login - self._external_user_id = external_user_id.map(AnyString.init) - self._first_name = first_name.map(AnyString.init) - self._last_name = last_name.map(AnyString.init) - self._user_timezone = user_timezone.map(AnyString.init) - if let v = permissions { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } - if let v = models { _models = v.map { AnyString.init($0) } } else { _models = nil } - if let v = group_ids { _group_ids = v.map { AnyString.init($0) } } else { _group_ids = nil } - self._external_group_id = external_group_id.map(AnyString.init) - self.user_attributes = user_attributes - self._session_reference_token = session_reference_token.map(AnyString.init) - self._embed_domain = embed_domain.map(AnyString.init) + public var supported_options: DialectInfoOptions? + + public init(can: StringDictionary? = nil, default_max_connections: String? = nil, default_port: String? = nil, installed: Bool? = nil, label: String? = nil, label_for_database_equivalent: String? = nil, name: String? = nil, supported_options: DialectInfoOptions? = nil) { + self.can = can + self._default_max_connections = default_max_connections.map(AnyString.init) + self._default_port = default_port.map(AnyString.init) + self.installed = installed + self._label = label.map(AnyString.init) + self._label_for_database_equivalent = label_for_database_equivalent.map(AnyString.init) + self._name = name.map(AnyString.init) + self.supported_options = supported_options } } -public struct EmbedCookielessSessionAcquireResponse: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _authentication_token = "authentication_token" - case _authentication_token_ttl = "authentication_token_ttl" - case _navigation_token = "navigation_token" - case _navigation_token_ttl = "navigation_token_ttl" - case _api_token = "api_token" - case _api_token_ttl = "api_token_ttl" - case _session_reference_token = "session_reference_token" - case _session_reference_token_ttl = "session_reference_token_ttl" - } - private var _authentication_token: AnyString? +public struct DialectInfoOptions: SDKModel { /** - * One time token used to create or to attach to an embedded session in the Looker application server. + * Has additional params support (read-only) */ - public var authentication_token: String? { - get { _authentication_token?.value } - set { _authentication_token = newValue.map(AnyString.init) } - } + public var additional_params: Bool? - private var _authentication_token_ttl: AnyInt? /** - * Authentication token time to live in seconds. + * Has support for issuing statements after connecting to the database (read-only) */ - public var authentication_token_ttl: Int64? { - get { _authentication_token_ttl?.value } - set { _authentication_token_ttl = newValue.map(AnyInt.init) } - } + public var after_connect_statements: Bool? - private var _navigation_token: AnyString? /** - * Token used to load and navigate between Looker pages. + * Has analytical view support (read-only) */ - public var navigation_token: String? { - get { _navigation_token?.value } - set { _navigation_token = newValue.map(AnyString.init) } - } + public var analytical_view_dataset: Bool? - private var _navigation_token_ttl: AnyInt? /** - * Navigation token time to live in seconds. + * Has auth support (read-only) */ - public var navigation_token_ttl: Int64? { - get { _navigation_token_ttl?.value } - set { _navigation_token_ttl = newValue.map(AnyInt.init) } - } + public var auth: Bool? - private var _api_token: AnyString? /** - * Token to used to call Looker APIs. + * Has configurable cost estimation (read-only) */ - public var api_token: String? { - get { _api_token?.value } - set { _api_token = newValue.map(AnyString.init) } - } + public var cost_estimate: Bool? - private var _api_token_ttl: AnyInt? /** - * Api token time to live in seconds. + * Can disable query context comments (read-only) */ - public var api_token_ttl: Int64? { - get { _api_token_ttl?.value } - set { _api_token_ttl = newValue.map(AnyInt.init) } - } + public var disable_context_comment: Bool? - private var _session_reference_token: AnyString? /** - * 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. + * Host is required (read-only) */ - public var session_reference_token: String? { - get { _session_reference_token?.value } - set { _session_reference_token = newValue.map(AnyString.init) } - } + public var host: Bool? - private var _session_reference_token_ttl: AnyInt? /** - * Session reference token time to live in seconds. Note that this is the same as actual session. + * Instance name is required (read-only) */ - public var session_reference_token_ttl: Int64? { - get { _session_reference_token_ttl?.value } - set { _session_reference_token_ttl = newValue.map(AnyInt.init) } - } - - public init(authentication_token: String? = nil, authentication_token_ttl: Int64? = nil, navigation_token: String? = nil, navigation_token_ttl: Int64? = nil, api_token: String? = nil, api_token_ttl: Int64? = nil, session_reference_token: String? = nil, session_reference_token_ttl: Int64? = nil) { - self._authentication_token = authentication_token.map(AnyString.init) - self._authentication_token_ttl = authentication_token_ttl.map(AnyInt.init) - self._navigation_token = navigation_token.map(AnyString.init) - self._navigation_token_ttl = navigation_token_ttl.map(AnyInt.init) - self._api_token = api_token.map(AnyString.init) - self._api_token_ttl = api_token_ttl.map(AnyInt.init) - self._session_reference_token = session_reference_token.map(AnyString.init) - self._session_reference_token_ttl = session_reference_token_ttl.map(AnyInt.init) - } - -} - -public struct EmbedCookielessSessionGenerateTokens: SDKModel { + public var instance_name: Bool? - private enum CodingKeys : String, CodingKey { - case _session_reference_token = "session_reference_token" - case _navigation_token = "navigation_token" - case _api_token = "api_token" - } - private var _session_reference_token: AnyString /** - * Token referencing the embed session and is used to generate new authentication, navigation and api tokens. + * Has max billing gigabytes support (read-only) */ - public var session_reference_token: String { - get { _session_reference_token.value } - set { _session_reference_token = AnyString.init(newValue) } - } + public var max_billing_gigabytes: Bool? - private var _navigation_token: AnyString? /** - * Token used to load and navigate between Looker pages. + * Has support for a service account (read-only) */ - public var navigation_token: String? { - get { _navigation_token?.value } - set { _navigation_token = newValue.map(AnyString.init) } - } + public var oauth_credentials: Bool? - private var _api_token: AnyString? /** - * Token to used to call Looker APIs. + * Has OAuth for PDT support (read-only) */ - public var api_token: String? { - get { _api_token?.value } - set { _api_token = newValue.map(AnyString.init) } - } + public var pdts_for_oauth: Bool? - public init(session_reference_token: String, navigation_token: String? = nil, api_token: String? = nil) { - self._session_reference_token = AnyString.init(session_reference_token) - self._navigation_token = navigation_token.map(AnyString.init) - self._api_token = api_token.map(AnyString.init) - } + /** + * Port can be specified (read-only) + */ + public var port: Bool? - public init(_ session_reference_token: String, navigation_token: String? = nil, api_token: String? = nil) { - self.init(session_reference_token: session_reference_token, navigation_token: navigation_token, api_token: api_token) - } + /** + * Has project name support (read-only) + */ + public var project_name: Bool? -} + /** + * Schema can be specified (read-only) + */ + public var schema: Bool? -public struct EmbedCookielessSessionGenerateTokensResponse: SDKModel { + /** + * Has support for a service account (read-only) + */ + public var service_account_credentials: Bool? - private enum CodingKeys : String, CodingKey { - case _navigation_token = "navigation_token" - case _navigation_token_ttl = "navigation_token_ttl" - case _api_token = "api_token" - case _api_token_ttl = "api_token_ttl" - case _session_reference_token = "session_reference_token" - case _session_reference_token_ttl = "session_reference_token_ttl" - } - private var _navigation_token: AnyString? /** - * Token used to load and navigate between Looker pages. + * Has TLS/SSL support (read-only) */ - public var navigation_token: String? { - get { _navigation_token?.value } - set { _navigation_token = newValue.map(AnyString.init) } - } + public var ssl: Bool? - private var _navigation_token_ttl: AnyInt? /** - * Navigation token time to live in seconds. + * Has timezone support (read-only) */ - public var navigation_token_ttl: Int64? { - get { _navigation_token_ttl?.value } - set { _navigation_token_ttl = newValue.map(AnyInt.init) } - } + public var timezone: Bool? - private var _api_token: AnyString? /** - * Token to used to call Looker APIs. + * Has tmp table support (read-only) */ - public var api_token: String? { - get { _api_token?.value } - set { _api_token = newValue.map(AnyString.init) } - } + public var tmp_table: Bool? - private var _api_token_ttl: AnyInt? /** - * Api token time to live in seconds. + * Has Oracle TNS support (read-only) */ - public var api_token_ttl: Int64? { - get { _api_token_ttl?.value } - set { _api_token_ttl = newValue.map(AnyInt.init) } - } + public var tns: Bool? - private var _session_reference_token: AnyString /** - * Token referencing the embed session and is used to generate new authentication, navigation and api tokens. + * Username can be specified (read-only) */ - public var session_reference_token: String { - get { _session_reference_token.value } - set { _session_reference_token = AnyString.init(newValue) } - } + public var username: Bool? - private var _session_reference_token_ttl: AnyInt? /** - * Session reference token time to live in seconds. Note that this is the same as actual session. + * Username is required (read-only) */ - public var session_reference_token_ttl: Int64? { - get { _session_reference_token_ttl?.value } - set { _session_reference_token_ttl = newValue.map(AnyInt.init) } - } + public var username_required: Bool? - public init(navigation_token: String? = nil, navigation_token_ttl: Int64? = nil, api_token: String? = nil, api_token_ttl: Int64? = nil, session_reference_token: String, session_reference_token_ttl: Int64? = nil) { - self._navigation_token = navigation_token.map(AnyString.init) - self._navigation_token_ttl = navigation_token_ttl.map(AnyInt.init) - self._api_token = api_token.map(AnyString.init) - self._api_token_ttl = api_token_ttl.map(AnyInt.init) - self._session_reference_token = AnyString.init(session_reference_token) - self._session_reference_token_ttl = session_reference_token_ttl.map(AnyInt.init) - } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? - public init(navigation_token: String? = nil, navigation_token_ttl: Int64? = nil, api_token: String? = nil, api_token_ttl: Int64? = nil, _ session_reference_token: String, session_reference_token_ttl: Int64? = nil) { - self.init(navigation_token: navigation_token, navigation_token_ttl: navigation_token_ttl, api_token: api_token, api_token_ttl: api_token_ttl, session_reference_token: session_reference_token, session_reference_token_ttl: session_reference_token_ttl) + public init(additional_params: Bool? = nil, after_connect_statements: Bool? = nil, analytical_view_dataset: Bool? = nil, auth: Bool? = nil, cost_estimate: Bool? = nil, disable_context_comment: Bool? = nil, host: Bool? = nil, instance_name: Bool? = nil, max_billing_gigabytes: Bool? = nil, oauth_credentials: Bool? = nil, pdts_for_oauth: Bool? = nil, port: Bool? = nil, project_name: Bool? = nil, schema: Bool? = nil, service_account_credentials: Bool? = nil, ssl: Bool? = nil, timezone: Bool? = nil, tmp_table: Bool? = nil, tns: Bool? = nil, username: Bool? = nil, username_required: Bool? = nil, can: StringDictionary? = nil) { + self.additional_params = additional_params + self.after_connect_statements = after_connect_statements + self.analytical_view_dataset = analytical_view_dataset + self.auth = auth + self.cost_estimate = cost_estimate + self.disable_context_comment = disable_context_comment + self.host = host + self.instance_name = instance_name + self.max_billing_gigabytes = max_billing_gigabytes + self.oauth_credentials = oauth_credentials + self.pdts_for_oauth = pdts_for_oauth + self.port = port + self.project_name = project_name + self.schema = schema + self.service_account_credentials = service_account_credentials + self.ssl = ssl + self.timezone = timezone + self.tmp_table = tmp_table + self.tns = tns + self.username = username + self.username_required = username_required + self.can = can } } -public struct EmbedParams: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _target_url = "target_url" - case _session_length = "session_length" - case force_logout_login - } - private var _target_url: AnyString +public struct DigestEmails: SDKModel { /** - * The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. + * Whether or not digest emails are enabled */ - public var target_url: String { - get { _target_url.value } - set { _target_url = AnyString.init(newValue) } - } + public var is_enabled: Bool? - private var _session_length: AnyInt? - /** - * Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). - */ - public var session_length: Int64? { - get { _session_length?.value } - set { _session_length = newValue.map(AnyInt.init) } + public init(is_enabled: Bool? = nil) { + self.is_enabled = is_enabled } +} + +public struct DigestEmailSend: SDKModel { /** - * 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. + * True if content was successfully generated and delivered */ - public var force_logout_login: Bool? - - public init(target_url: String, session_length: Int64? = nil, force_logout_login: Bool? = nil) { - self._target_url = AnyString.init(target_url) - self._session_length = session_length.map(AnyInt.init) - self.force_logout_login = force_logout_login - } + public var configuration_delivered: Bool? - public init(_ target_url: String, session_length: Int64? = nil, force_logout_login: Bool? = nil) { - self.init(target_url: target_url, session_length: session_length, force_logout_login: force_logout_login) + public init(configuration_delivered: Bool? = nil) { + self.configuration_delivered = configuration_delivered } } -public struct EmbedSecret: SDKModel { +public struct DiscretePalette: SDKModel { private enum CodingKeys : String, CodingKey { - case _algorithm = "algorithm" - case _created_at = "created_at" - case enabled case _id = "id" - case _secret = "secret" - case _user_id = "user_id" - case secret_type - } - private var _algorithm: AnyString? - /** - * Signing algorithm to use with this secret. Either `hmac/sha-256`(default) or `hmac/sha-1` - */ - public var algorithm: String? { - get { _algorithm?.value } - set { _algorithm = newValue.map(AnyString.init) } - } - - private var _created_at: AnyString? - /** - * When secret was created (read-only) - */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } + case _label = "label" + case _type = "type" + case _colors = "colors" } - - /** - * Is this secret currently enabled - */ - public var enabled: Bool? - private var _id: AnyString? /** - * Unique Id (read-only) + * Unique identity string (read-only) */ public var id: String? { get { _id?.value } set { _id = newValue.map(AnyString.init) } } - private var _secret: AnyString? + private var _label: AnyString? /** - * Secret for use with SSO embedding (read-only) + * Label for palette */ - public var secret: String? { - get { _secret?.value } - set { _secret = newValue.map(AnyString.init) } + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } } - private var _user_id: AnyString? + private var _type: AnyString? /** - * Id of user who created this secret (read-only) + * Type of palette */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } + private var _colors: [AnyString]? /** - * Field to distinguish between SSO secrets and JWT secrets Valid values are: "SSO", "JWT". + * Array of colors in the palette */ - public var secret_type: SecretType? + public var colors: [String]? { + get { if let v = _colors { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _colors = v.map { AnyString.init($0) } } else { _colors = nil } } + } - public init(algorithm: String? = nil, created_at: String? = nil, enabled: Bool? = nil, id: String? = nil, secret: String? = nil, user_id: String? = nil, secret_type: SecretType? = nil) { - self._algorithm = algorithm.map(AnyString.init) - self._created_at = created_at.map(AnyString.init) - self.enabled = enabled + public init(id: String? = nil, label: String? = nil, type: String? = nil, colors: [String]? = nil) { self._id = id.map(AnyString.init) - self._secret = secret.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) - self.secret_type = secret_type + self._label = label.map(AnyString.init) + self._type = type.map(AnyString.init) + if let v = colors { _colors = v.map { AnyString.init($0) } } else { _colors = nil } } } @@ -8470,7 +5874,7 @@ public struct EmbedSecret: SDKModel { public struct EmbedSsoParams: SDKModel { private enum CodingKeys : String, CodingKey { - case _target_url = "target_url" + case target_url case _session_length = "session_length" case force_logout_login case _external_user_id = "external_user_id" @@ -8483,19 +5887,16 @@ public struct EmbedSsoParams: SDKModel { case _external_group_id = "external_group_id" case user_attributes case _secret_id = "secret_id" + case _embed_domain = "embed_domain" } - private var _target_url: AnyString /** * The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. */ - public var target_url: String { - get { _target_url.value } - set { _target_url = AnyString.init(newValue) } - } + public var target_url: URI private var _session_length: AnyInt? /** - * Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + * 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). */ public var session_length: Int64? { get { _session_length?.value } @@ -8509,7 +5910,7 @@ public struct EmbedSsoParams: SDKModel { private var _external_user_id: AnyString? /** - * A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + * A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. */ public var external_user_id: String? { get { _external_user_id?.value } @@ -8561,13 +5962,13 @@ public struct EmbedSsoParams: SDKModel { set { if let v = newValue { _models = v.map { AnyString.init($0) } } else { _models = nil } } } - private var _group_ids: [AnyString]? + private var _group_ids: [AnyInt]? /** * List of Looker group ids in which to enroll the embed user */ - public var group_ids: [String]? { + public var group_ids: [Int64]? { get { if let v = _group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _group_ids = v.map { AnyString.init($0) } } else { _group_ids = nil } } + set { if let v = newValue { _group_ids = v.map { AnyInt.init($0) } } else { _group_ids = nil } } } private var _external_group_id: AnyString? @@ -8584,17 +5985,26 @@ public struct EmbedSsoParams: SDKModel { */ public var user_attributes: StringDictionary? - private var _secret_id: AnyString? + private var _secret_id: AnyInt? /** * 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. */ - public var secret_id: String? { + public var secret_id: Int64? { get { _secret_id?.value } - set { _secret_id = newValue.map(AnyString.init) } + set { _secret_id = newValue.map(AnyInt.init) } + } + + private var _embed_domain: AnyString? + /** + * 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 + */ + public var embed_domain: String? { + get { _embed_domain?.value } + set { _embed_domain = newValue.map(AnyString.init) } } - public init(target_url: String, session_length: Int64? = nil, force_logout_login: Bool? = nil, external_user_id: String? = nil, first_name: String? = nil, last_name: String? = nil, user_timezone: String? = nil, permissions: [String]? = nil, models: [String]? = nil, group_ids: [String]? = nil, external_group_id: String? = nil, user_attributes: StringDictionary? = nil, secret_id: String? = nil) { - self._target_url = AnyString.init(target_url) + public init(target_url: URI, session_length: Int64? = nil, force_logout_login: Bool? = nil, external_user_id: String? = nil, first_name: String? = nil, last_name: String? = nil, user_timezone: String? = nil, permissions: [String]? = nil, models: [String]? = nil, group_ids: [Int64]? = nil, external_group_id: String? = nil, user_attributes: StringDictionary? = nil, secret_id: Int64? = nil, embed_domain: String? = nil) { + self.target_url = target_url self._session_length = session_length.map(AnyInt.init) self.force_logout_login = force_logout_login self._external_user_id = external_user_id.map(AnyString.init) @@ -8603,14 +6013,15 @@ public struct EmbedSsoParams: SDKModel { self._user_timezone = user_timezone.map(AnyString.init) if let v = permissions { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } if let v = models { _models = v.map { AnyString.init($0) } } else { _models = nil } - if let v = group_ids { _group_ids = v.map { AnyString.init($0) } } else { _group_ids = nil } + if let v = group_ids { _group_ids = v.map { AnyInt.init($0) } } else { _group_ids = nil } self._external_group_id = external_group_id.map(AnyString.init) self.user_attributes = user_attributes - self._secret_id = secret_id.map(AnyString.init) + self._secret_id = secret_id.map(AnyInt.init) + self._embed_domain = embed_domain.map(AnyString.init) } - public init(_ target_url: String, session_length: Int64? = nil, force_logout_login: Bool? = nil, external_user_id: String? = nil, first_name: String? = nil, last_name: String? = nil, user_timezone: String? = nil, permissions: [String]? = nil, models: [String]? = nil, group_ids: [String]? = nil, external_group_id: String? = nil, user_attributes: StringDictionary? = nil, secret_id: String? = nil) { - self.init(target_url: target_url, session_length: session_length, force_logout_login: force_logout_login, external_user_id: external_user_id, first_name: first_name, last_name: last_name, user_timezone: user_timezone, permissions: permissions, models: models, group_ids: group_ids, external_group_id: external_group_id, user_attributes: user_attributes, secret_id: secret_id) + public init(_ target_url: URI, session_length: Int64? = nil, force_logout_login: Bool? = nil, external_user_id: String? = nil, first_name: String? = nil, last_name: String? = nil, user_timezone: String? = nil, permissions: [String]? = nil, models: [String]? = nil, group_ids: [Int64]? = nil, external_group_id: String? = nil, user_attributes: StringDictionary? = nil, secret_id: Int64? = nil, embed_domain: String? = nil) { + self.init(target_url: target_url, session_length: session_length, force_logout_login: force_logout_login, external_user_id: external_user_id, first_name: first_name, last_name: last_name, user_timezone: user_timezone, permissions: permissions, models: models, group_ids: group_ids, external_group_id: external_group_id, user_attributes: user_attributes, secret_id: secret_id, embed_domain: embed_domain) } } @@ -8639,7 +6050,7 @@ public struct LkError: SDKModel { private enum CodingKeys : String, CodingKey { case _message = "message" - case _documentation_url = "documentation_url" + case documentation_url } private var _message: AnyString /** @@ -8650,104 +6061,22 @@ public struct LkError: SDKModel { set { _message = AnyString.init(newValue) } } - private var _documentation_url: AnyString /** * Documentation link (read-only) */ - public var documentation_url: String { - get { _documentation_url.value } - set { _documentation_url = AnyString.init(newValue) } - } + public var documentation_url: URI - public init(message: String, documentation_url: String) { + public init(message: String, documentation_url: URI) { self._message = AnyString.init(message) - self._documentation_url = AnyString.init(documentation_url) + self.documentation_url = documentation_url } - public init(_ message: String, _ documentation_url: String) { + public init(_ message: String, _ documentation_url: URI) { self.init(message: message, documentation_url: documentation_url) } } -public struct ExternalOauthApplication: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _id = "id" - case _name = "name" - case _client_id = "client_id" - case _client_secret = "client_secret" - case _dialect_name = "dialect_name" - case created_at - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _id: AnyString? - /** - * ID of this OAuth Application (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - private var _name: AnyString? - /** - * The name of this application. For Snowflake connections, this should be the name of the host database. - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - private var _client_id: AnyString? - /** - * The OAuth Client ID for this application - */ - public var client_id: String? { - get { _client_id?.value } - set { _client_id = newValue.map(AnyString.init) } - } - - private var _client_secret: AnyString? - /** - * (Write-Only) The OAuth Client Secret for this application - */ - public var client_secret: String? { - get { _client_secret?.value } - set { _client_secret = newValue.map(AnyString.init) } - } - - private var _dialect_name: AnyString? - /** - * The database dialect for this application. - */ - public var dialect_name: String? { - get { _dialect_name?.value } - set { _dialect_name = newValue.map(AnyString.init) } - } - - /** - * Creation time for this application (read-only) - */ - public var created_at: Date? - - public init(can: StringDictionary? = nil, id: String? = nil, name: String? = nil, client_id: String? = nil, client_secret: String? = nil, dialect_name: String? = nil, created_at: Date? = nil) { - self.can = can - self._id = id.map(AnyString.init) - self._name = name.map(AnyString.init) - self._client_id = client_id.map(AnyString.init) - self._client_secret = client_secret.map(AnyString.init) - self._dialect_name = dialect_name.map(AnyString.init) - self.created_at = created_at - } - -} - /** * 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) */ @@ -8805,13 +6134,13 @@ public struct Folder: SDKModel { set { _id = newValue.map(AnyString.init) } } - private var _content_metadata_id: AnyString? + private var _content_metadata_id: AnyInt? /** * Id of content metadata (read-only) */ - public var content_metadata_id: String? { + public var content_metadata_id: Int64? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } + set { _content_metadata_id = newValue.map(AnyInt.init) } } /** @@ -8819,13 +6148,13 @@ public struct Folder: SDKModel { */ public var created_at: Date? - private var _creator_id: AnyString? + private var _creator_id: AnyInt? /** * User Id of Creator (read-only) */ - public var creator_id: String? { + public var creator_id: Int64? { get { _creator_id?.value } - set { _creator_id = newValue.map(AnyString.init) } + set { _creator_id = newValue.map(AnyInt.init) } } private var _child_count: AnyInt? @@ -8896,13 +6225,13 @@ public struct Folder: SDKModel { */ public var looks: [LookWithDashboards]? - public init(name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: String? = nil, created_at: Date? = nil, creator_id: String? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil, dashboards: [DashboardBase]? = nil, looks: [LookWithDashboards]? = nil) { + public init(name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil, dashboards: [DashboardBase]? = nil, looks: [LookWithDashboards]? = nil) { self._name = AnyString.init(name) self._parent_id = parent_id.map(AnyString.init) self._id = id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyInt.init) self.created_at = created_at - self._creator_id = creator_id.map(AnyString.init) + self._creator_id = creator_id.map(AnyInt.init) self._child_count = child_count.map(AnyInt.init) self._external_id = external_id.map(AnyString.init) self.is_embed = is_embed @@ -8917,7 +6246,7 @@ public struct Folder: SDKModel { self.looks = looks } - public init(_ name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: String? = nil, created_at: Date? = nil, creator_id: String? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil, dashboards: [DashboardBase]? = nil, looks: [LookWithDashboards]? = nil) { + public init(_ name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil, dashboards: [DashboardBase]? = nil, looks: [LookWithDashboards]? = nil) { self.init(name: name, parent_id: parent_id, id: id, content_metadata_id: content_metadata_id, created_at: created_at, creator_id: creator_id, child_count: child_count, external_id: external_id, is_embed: is_embed, is_embed_shared_root: is_embed_shared_root, is_embed_users_root: is_embed_users_root, is_personal: is_personal, is_personal_descendant: is_personal_descendant, is_shared_root: is_shared_root, is_users_root: is_users_root, can: can, dashboards: dashboards, looks: looks) } @@ -8970,13 +6299,13 @@ public struct FolderBase: SDKModel { set { _id = newValue.map(AnyString.init) } } - private var _content_metadata_id: AnyString? + private var _content_metadata_id: AnyInt? /** * Id of content metadata (read-only) */ - public var content_metadata_id: String? { + public var content_metadata_id: Int64? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } + set { _content_metadata_id = newValue.map(AnyInt.init) } } /** @@ -8984,13 +6313,13 @@ public struct FolderBase: SDKModel { */ public var created_at: Date? - private var _creator_id: AnyString? + private var _creator_id: AnyInt? /** * User Id of Creator (read-only) */ - public var creator_id: String? { + public var creator_id: Int64? { get { _creator_id?.value } - set { _creator_id = newValue.map(AnyString.init) } + set { _creator_id = newValue.map(AnyInt.init) } } private var _child_count: AnyInt? @@ -9051,13 +6380,13 @@ public struct FolderBase: SDKModel { */ public var can: StringDictionary? - public init(name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: String? = nil, created_at: Date? = nil, creator_id: String? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil) { + public init(name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil) { self._name = AnyString.init(name) self._parent_id = parent_id.map(AnyString.init) self._id = id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyInt.init) self.created_at = created_at - self._creator_id = creator_id.map(AnyString.init) + self._creator_id = creator_id.map(AnyInt.init) self._child_count = child_count.map(AnyInt.init) self._external_id = external_id.map(AnyString.init) self.is_embed = is_embed @@ -9070,7 +6399,7 @@ public struct FolderBase: SDKModel { self.can = can } - public init(_ name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: String? = nil, created_at: Date? = nil, creator_id: String? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil) { + public init(_ name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil) { self.init(name: name, parent_id: parent_id, id: id, content_metadata_id: content_metadata_id, created_at: created_at, creator_id: creator_id, child_count: child_count, external_id: external_id, is_embed: is_embed, is_embed_shared_root: is_embed_shared_root, is_embed_users_root: is_embed_users_root, is_personal: is_personal, is_personal_descendant: is_personal_descendant, is_shared_root: is_shared_root, is_users_root: is_users_root, can: can) } @@ -9350,6 +6679,7 @@ public struct GitStatus: SDKModel { case conflict case revertable case _text = "text" + case can } private var _action: AnyString? /** @@ -9379,104 +6709,22 @@ public struct GitStatus: SDKModel { set { _text = newValue.map(AnyString.init) } } - public init(action: String? = nil, conflict: Bool? = nil, revertable: Bool? = nil, text: String? = nil) { - self._action = action.map(AnyString.init) - self.conflict = conflict - self.revertable = revertable - self._text = text.map(AnyString.init) - } - -} - -public struct LkGroup: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case can_add_to_content_metadata - case contains_current_user - case _external_group_id = "external_group_id" - case externally_managed - case _id = "id" - case include_by_default - case _name = "name" - case _user_count = "user_count" - } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - /** - * Group can be used in content access controls - */ - public var can_add_to_content_metadata: Bool? - - /** - * Currently logged in user is group member (read-only) - */ - public var contains_current_user: Bool? - - private var _external_group_id: AnyString? - /** - * External Id group if embed group (read-only) - */ - public var external_group_id: String? { - get { _external_group_id?.value } - set { _external_group_id = newValue.map(AnyString.init) } - } - - /** - * Group membership controlled outside of Looker (read-only) - */ - public var externally_managed: Bool? - - private var _id: AnyString? - /** - * Unique Id (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - /** - * New users are added to this group by default (read-only) - */ - public var include_by_default: Bool? - - private var _name: AnyString? - /** - * Name of group - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - private var _user_count: AnyInt? - /** - * Number of users included in this group (read-only) - */ - public var user_count: Int64? { - get { _user_count?.value } - set { _user_count = newValue.map(AnyInt.init) } - } - - public init(can: StringDictionary? = nil, can_add_to_content_metadata: Bool? = nil, contains_current_user: Bool? = nil, external_group_id: String? = nil, externally_managed: Bool? = nil, id: String? = nil, include_by_default: Bool? = nil, name: String? = nil, user_count: Int64? = nil) { + public init(action: String? = nil, conflict: Bool? = nil, revertable: Bool? = nil, text: String? = nil, can: StringDictionary? = nil) { + self._action = action.map(AnyString.init) + self.conflict = conflict + self.revertable = revertable + self._text = text.map(AnyString.init) self.can = can - self.can_add_to_content_metadata = can_add_to_content_metadata - self.contains_current_user = contains_current_user - self._external_group_id = external_group_id.map(AnyString.init) - self.externally_managed = externally_managed - self._id = id.map(AnyString.init) - self.include_by_default = include_by_default - self._name = name.map(AnyString.init) - self._user_count = user_count.map(AnyInt.init) } } -public struct GroupHierarchy: SDKModel { +public struct LkGroup: SDKModel { private enum CodingKeys : String, CodingKey { case can @@ -9488,8 +6736,6 @@ public struct GroupHierarchy: SDKModel { case include_by_default case _name = "name" case _user_count = "user_count" - case _parent_group_ids = "parent_group_ids" - case _role_ids = "role_ids" } /** * Operations the current user is able to perform on this object (read-only) @@ -9520,13 +6766,13 @@ public struct GroupHierarchy: SDKModel { */ public var externally_managed: Bool? - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } /** @@ -9552,36 +6798,16 @@ public struct GroupHierarchy: SDKModel { set { _user_count = newValue.map(AnyInt.init) } } - private var _parent_group_ids: [AnyString]? - /** - * IDs of parents of this group (read-only) - */ - public var parent_group_ids: [String]? { - get { if let v = _parent_group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _parent_group_ids = v.map { AnyString.init($0) } } else { _parent_group_ids = nil } } - } - - private var _role_ids: [AnyString]? - /** - * Role IDs assigned to group (read-only) - */ - public var role_ids: [String]? { - get { if let v = _role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } } - } - - public init(can: StringDictionary? = nil, can_add_to_content_metadata: Bool? = nil, contains_current_user: Bool? = nil, external_group_id: String? = nil, externally_managed: Bool? = nil, id: String? = nil, include_by_default: Bool? = nil, name: String? = nil, user_count: Int64? = nil, parent_group_ids: [String]? = nil, role_ids: [String]? = nil) { + public init(can: StringDictionary? = nil, can_add_to_content_metadata: Bool? = nil, contains_current_user: Bool? = nil, external_group_id: String? = nil, externally_managed: Bool? = nil, id: Int64? = nil, include_by_default: Bool? = nil, name: String? = nil, user_count: Int64? = nil) { self.can = can self.can_add_to_content_metadata = can_add_to_content_metadata self.contains_current_user = contains_current_user self._external_group_id = external_group_id.map(AnyString.init) self.externally_managed = externally_managed - self._id = id.map(AnyString.init) + self._id = id.map(AnyInt.init) self.include_by_default = include_by_default self._name = name.map(AnyString.init) self._user_count = user_count.map(AnyInt.init) - if let v = parent_group_ids { _parent_group_ids = v.map { AnyString.init($0) } } else { _parent_group_ids = nil } - if let v = role_ids { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } } } @@ -9594,17 +6820,17 @@ public struct GroupIdForGroupInclusion: SDKModel { private enum CodingKeys : String, CodingKey { case _group_id = "group_id" } - private var _group_id: AnyString? + private var _group_id: AnyInt? /** * Id of group (read-only) */ - public var group_id: String? { + public var group_id: Int64? { get { _group_id?.value } - set { _group_id = newValue.map(AnyString.init) } + set { _group_id = newValue.map(AnyInt.init) } } - public init(group_id: String? = nil) { - self._group_id = group_id.map(AnyString.init) + public init(group_id: Int64? = nil) { + self._group_id = group_id.map(AnyInt.init) } } @@ -9617,112 +6843,134 @@ public struct GroupIdForGroupUserInclusion: SDKModel { private enum CodingKeys : String, CodingKey { case _user_id = "user_id" } - private var _user_id: AnyString? + private var _user_id: AnyInt? /** * Id of user (read-only) */ - public var user_id: String? { + public var user_id: Int64? { get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + set { _user_id = newValue.map(AnyInt.init) } } - public init(user_id: String? = nil) { - self._user_id = user_id.map(AnyString.init) + public init(user_id: Int64? = nil) { + self._user_id = user_id.map(AnyInt.init) } } -public struct GroupSearch: SDKModel { +public struct Homepage: SDKModel { private enum CodingKeys : String, CodingKey { case can - case can_add_to_content_metadata - case contains_current_user - case _external_group_id = "external_group_id" - case externally_managed + case _content_metadata_id = "content_metadata_id" + case created_at + case deleted_at + case _description = "description" + case homepage_sections case _id = "id" - case include_by_default - case _name = "name" - case _user_count = "user_count" - case roles + case _section_order = "section_order" + case _title = "title" + case updated_at + case _user_id = "user_id" + case primary_homepage } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? + private var _content_metadata_id: AnyInt? /** - * Group can be used in content access controls + * Id of associated content_metadata record (read-only) */ - public var can_add_to_content_metadata: Bool? + public var content_metadata_id: Int64? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyInt.init) } + } /** - * Currently logged in user is group member (read-only) + * Date of homepage creation (read-only) */ - public var contains_current_user: Bool? + public var created_at: Date? - private var _external_group_id: AnyString? /** - * External Id group if embed group (read-only) + * Date of homepage deletion */ - public var external_group_id: String? { - get { _external_group_id?.value } - set { _external_group_id = newValue.map(AnyString.init) } + public var deleted_at: Date? + + private var _description: AnyString? + /** + * Description of the homepage + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } } /** - * Group membership controlled outside of Looker (read-only) + * Sections of the homepage (read-only) */ - public var externally_managed: Bool? + public var homepage_sections: [HomepageSection]? - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } + private var _section_order: [AnyInt]? /** - * New users are added to this group by default (read-only) + * ids of the homepage sections in the order they should be displayed */ - public var include_by_default: Bool? + public var section_order: [Int64]? { + get { if let v = _section_order { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _section_order = v.map { AnyInt.init($0) } } else { _section_order = nil } } + } - private var _name: AnyString? + private var _title: AnyString? /** - * Name of group + * Title of the homepage */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } - private var _user_count: AnyInt? /** - * Number of users included in this group (read-only) + * Date of last homepage update (read-only) */ - public var user_count: Int64? { - get { _user_count?.value } - set { _user_count = newValue.map(AnyInt.init) } + public var updated_at: Date? + + private var _user_id: AnyInt? + /** + * User id of homepage creator (read-only) + */ + public var user_id: Int64? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyInt.init) } } /** - * Roles assigned to group (read-only) + * Whether the homepage is the primary homepage or not (read-only) */ - public var roles: [Role]? + public var primary_homepage: Bool? - public init(can: StringDictionary? = nil, can_add_to_content_metadata: Bool? = nil, contains_current_user: Bool? = nil, external_group_id: String? = nil, externally_managed: Bool? = nil, id: String? = nil, include_by_default: Bool? = nil, name: String? = nil, user_count: Int64? = nil, roles: [Role]? = nil) { + public init(can: StringDictionary? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, deleted_at: Date? = nil, description: String? = nil, homepage_sections: [HomepageSection]? = nil, id: Int64? = nil, section_order: [Int64]? = nil, title: String? = nil, updated_at: Date? = nil, user_id: Int64? = nil, primary_homepage: Bool? = nil) { self.can = can - self.can_add_to_content_metadata = can_add_to_content_metadata - self.contains_current_user = contains_current_user - self._external_group_id = external_group_id.map(AnyString.init) - self.externally_managed = externally_managed - self._id = id.map(AnyString.init) - self.include_by_default = include_by_default - self._name = name.map(AnyString.init) - self._user_count = user_count.map(AnyInt.init) - self.roles = roles + self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self.created_at = created_at + self.deleted_at = deleted_at + self._description = description.map(AnyString.init) + self.homepage_sections = homepage_sections + self._id = id.map(AnyInt.init) + if let v = section_order { _section_order = v.map { AnyInt.init($0) } } else { _section_order = nil } + self._title = title.map(AnyString.init) + self.updated_at = updated_at + self._user_id = user_id.map(AnyInt.init) + self.primary_homepage = primary_homepage } } @@ -9773,22 +7021,22 @@ public struct HomepageItem: SDKModel { set { _content_created_by = newValue.map(AnyString.init) } } - private var _content_favorite_id: AnyString? + private var _content_favorite_id: AnyInt? /** * Content favorite id associated with the item this content is based on (read-only) */ - public var content_favorite_id: String? { + public var content_favorite_id: Int64? { get { _content_favorite_id?.value } - set { _content_favorite_id = newValue.map(AnyString.init) } + set { _content_favorite_id = newValue.map(AnyInt.init) } } - private var _content_metadata_id: AnyString? + private var _content_metadata_id: AnyInt? /** * Content metadata id associated with the item this content is based on (read-only) */ - public var content_metadata_id: String? { + public var content_metadata_id: Int64? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } + set { _content_metadata_id = newValue.map(AnyInt.init) } } private var _content_updated_at: AnyString? @@ -9845,13 +7093,13 @@ public struct HomepageItem: SDKModel { set { _custom_url = newValue.map(AnyString.init) } } - private var _dashboard_id: AnyString? + private var _dashboard_id: AnyInt? /** * Dashboard to base this item on */ - public var dashboard_id: String? { + public var dashboard_id: Int64? { get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + set { _dashboard_id = newValue.map(AnyInt.init) } } private var _description: AnyString? @@ -9872,22 +7120,22 @@ public struct HomepageItem: SDKModel { set { _favorite_count = newValue.map(AnyInt.init) } } - private var _homepage_section_id: AnyString? + private var _homepage_section_id: AnyInt? /** * Associated Homepage Section */ - public var homepage_section_id: String? { + public var homepage_section_id: Int64? { get { _homepage_section_id?.value } - set { _homepage_section_id = newValue.map(AnyString.init) } + set { _homepage_section_id = newValue.map(AnyInt.init) } } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } private var _image_url: AnyString? @@ -9908,13 +7156,13 @@ public struct HomepageItem: SDKModel { set { _location = newValue.map(AnyString.init) } } - private var _look_id: AnyString? + private var _look_id: AnyInt? /** * Look to base this item on */ - public var look_id: String? { + public var look_id: Int64? { get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } + set { _look_id = newValue.map(AnyInt.init) } } private var _lookml_dashboard_id: AnyString? @@ -9987,25 +7235,25 @@ public struct HomepageItem: SDKModel { set { _view_count = newValue.map(AnyInt.init) } } - public init(can: StringDictionary? = nil, content_created_by: String? = nil, content_favorite_id: String? = nil, content_metadata_id: String? = nil, content_updated_at: String? = nil, custom_description: String? = nil, custom_image_data_base64: String? = nil, custom_image_url: String? = nil, custom_title: String? = nil, custom_url: String? = nil, dashboard_id: String? = nil, description: String? = nil, favorite_count: Int64? = nil, homepage_section_id: String? = nil, id: String? = nil, image_url: String? = nil, location: String? = nil, look_id: String? = nil, lookml_dashboard_id: String? = nil, order: Int64? = nil, section_fetch_time: Float? = nil, title: String? = nil, url: String? = nil, use_custom_description: Bool? = nil, use_custom_image: Bool? = nil, use_custom_title: Bool? = nil, use_custom_url: Bool? = nil, view_count: Int64? = nil) { + public init(can: StringDictionary? = nil, content_created_by: String? = nil, content_favorite_id: Int64? = nil, content_metadata_id: Int64? = nil, content_updated_at: String? = nil, custom_description: String? = nil, custom_image_data_base64: String? = nil, custom_image_url: String? = nil, custom_title: String? = nil, custom_url: String? = nil, dashboard_id: Int64? = nil, description: String? = nil, favorite_count: Int64? = nil, homepage_section_id: Int64? = nil, id: Int64? = nil, image_url: String? = nil, location: String? = nil, look_id: Int64? = nil, lookml_dashboard_id: String? = nil, order: Int64? = nil, section_fetch_time: Float? = nil, title: String? = nil, url: String? = nil, use_custom_description: Bool? = nil, use_custom_image: Bool? = nil, use_custom_title: Bool? = nil, use_custom_url: Bool? = nil, view_count: Int64? = nil) { self.can = can self._content_created_by = content_created_by.map(AnyString.init) - self._content_favorite_id = content_favorite_id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyString.init) + self._content_favorite_id = content_favorite_id.map(AnyInt.init) + self._content_metadata_id = content_metadata_id.map(AnyInt.init) self._content_updated_at = content_updated_at.map(AnyString.init) self._custom_description = custom_description.map(AnyString.init) self._custom_image_data_base64 = custom_image_data_base64.map(AnyString.init) self._custom_image_url = custom_image_url.map(AnyString.init) self._custom_title = custom_title.map(AnyString.init) self._custom_url = custom_url.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyInt.init) self._description = description.map(AnyString.init) self._favorite_count = favorite_count.map(AnyInt.init) - self._homepage_section_id = homepage_section_id.map(AnyString.init) - self._id = id.map(AnyString.init) + self._homepage_section_id = homepage_section_id.map(AnyInt.init) + self._id = id.map(AnyInt.init) self._image_url = image_url.map(AnyString.init) self._location = location.map(AnyString.init) - self._look_id = look_id.map(AnyString.init) + self._look_id = look_id.map(AnyInt.init) self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) self._order = order.map(AnyInt.init) self.section_fetch_time = section_fetch_time @@ -10061,13 +7309,13 @@ public struct HomepageSection: SDKModel { set { _detail_url = newValue.map(AnyString.init) } } - private var _homepage_id: AnyString? + private var _homepage_id: AnyInt? /** * Id reference to parent homepage */ - public var homepage_id: String? { + public var homepage_id: Int64? { get { _homepage_id?.value } - set { _homepage_id = newValue.map(AnyString.init) } + set { _homepage_id = newValue.map(AnyInt.init) } } /** @@ -10075,13 +7323,13 @@ public struct HomepageSection: SDKModel { */ public var homepage_items: [HomepageItem]? - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } /** @@ -10089,13 +7337,13 @@ public struct HomepageSection: SDKModel { */ public var is_header: Bool? - private var _item_order: [AnyString]? + private var _item_order: [AnyInt]? /** * ids of the homepage items in the order they should be displayed */ - public var item_order: [String]? { + public var item_order: [Int64]? { get { if let v = _item_order { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _item_order = v.map { AnyString.init($0) } } else { _item_order = nil } } + set { if let v = newValue { _item_order = v.map { AnyInt.init($0) } } else { _item_order = nil } } } private var _title: AnyString? @@ -10130,16 +7378,16 @@ public struct HomepageSection: SDKModel { set { if let v = newValue { _visible_item_order = v.map { AnyString.init($0) } } else { _visible_item_order = nil } } } - public init(can: StringDictionary? = nil, created_at: Date? = nil, deleted_at: Date? = nil, detail_url: String? = nil, homepage_id: String? = nil, homepage_items: [HomepageItem]? = nil, id: String? = nil, is_header: Bool? = nil, item_order: [String]? = nil, title: String? = nil, updated_at: Date? = nil, description: String? = nil, visible_item_order: [String]? = nil) { + public init(can: StringDictionary? = nil, created_at: Date? = nil, deleted_at: Date? = nil, detail_url: String? = nil, homepage_id: Int64? = nil, homepage_items: [HomepageItem]? = nil, id: Int64? = nil, is_header: Bool? = nil, item_order: [Int64]? = nil, title: String? = nil, updated_at: Date? = nil, description: String? = nil, visible_item_order: [String]? = nil) { self.can = can self.created_at = created_at self.deleted_at = deleted_at self._detail_url = detail_url.map(AnyString.init) - self._homepage_id = homepage_id.map(AnyString.init) + self._homepage_id = homepage_id.map(AnyInt.init) self.homepage_items = homepage_items - self._id = id.map(AnyString.init) + self._id = id.map(AnyInt.init) self.is_header = is_header - if let v = item_order { _item_order = v.map { AnyString.init($0) } } else { _item_order = nil } + if let v = item_order { _item_order = v.map { AnyInt.init($0) } } else { _item_order = nil } self._title = title.map(AnyString.init) self.updated_at = updated_at self._description = description.map(AnyString.init) @@ -10155,6 +7403,7 @@ public struct ImportedProject: SDKModel { case _url = "url" case _ref = "ref" case is_remote + case can } private var _name: AnyString? /** @@ -10188,11 +7437,17 @@ public struct ImportedProject: SDKModel { */ public var is_remote: Bool? - public init(name: String? = nil, url: String? = nil, ref: String? = nil, is_remote: Bool? = nil) { + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + public init(name: String? = nil, url: String? = nil, ref: String? = nil, is_remote: Bool? = nil, can: StringDictionary? = nil) { self._name = name.map(AnyString.init) self._url = url.map(AnyString.init) self._ref = ref.map(AnyString.init) self.is_remote = is_remote + self.can = can } } @@ -10233,13 +7488,13 @@ public struct Integration: SDKModel { set { _id = newValue.map(AnyString.init) } } - private var _integration_hub_id: AnyString? + private var _integration_hub_id: AnyInt? /** * ID of the integration hub. (read-only) */ - public var integration_hub_id: String? { + public var integration_hub_id: Int64? { get { _integration_hub_id?.value } - set { _integration_hub_id = newValue.map(AnyString.init) } + set { _integration_hub_id = newValue.map(AnyInt.init) } } private var _label: AnyString? @@ -10328,19 +7583,19 @@ public struct Integration: SDKModel { */ public var delegate_oauth: Bool? - private var _installed_delegate_oauth_targets: [AnyString]? + private var _installed_delegate_oauth_targets: [AnyInt]? /** * Whether the integration is available to users. */ - public var installed_delegate_oauth_targets: [String]? { + public var installed_delegate_oauth_targets: [Int64]? { get { if let v = _installed_delegate_oauth_targets { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _installed_delegate_oauth_targets = v.map { AnyString.init($0) } } else { _installed_delegate_oauth_targets = nil } } + set { if let v = newValue { _installed_delegate_oauth_targets = v.map { AnyInt.init($0) } } else { _installed_delegate_oauth_targets = nil } } } - public init(can: StringDictionary? = nil, id: String? = nil, integration_hub_id: String? = nil, label: String? = nil, description: String? = nil, enabled: Bool? = nil, params: [IntegrationParam]? = nil, supported_formats: [SupportedFormats]? = nil, supported_action_types: [SupportedActionTypes]? = nil, supported_formattings: [SupportedFormattings]? = nil, supported_visualization_formattings: [SupportedVisualizationFormattings]? = nil, supported_download_settings: [SupportedDownloadSettings]? = nil, icon_url: String? = nil, uses_oauth: Bool? = nil, required_fields: [IntegrationRequiredField]? = nil, privacy_link: String? = nil, delegate_oauth: Bool? = nil, installed_delegate_oauth_targets: [String]? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, integration_hub_id: Int64? = nil, label: String? = nil, description: String? = nil, enabled: Bool? = nil, params: [IntegrationParam]? = nil, supported_formats: [SupportedFormats]? = nil, supported_action_types: [SupportedActionTypes]? = nil, supported_formattings: [SupportedFormattings]? = nil, supported_visualization_formattings: [SupportedVisualizationFormattings]? = nil, supported_download_settings: [SupportedDownloadSettings]? = nil, icon_url: String? = nil, uses_oauth: Bool? = nil, required_fields: [IntegrationRequiredField]? = nil, privacy_link: String? = nil, delegate_oauth: Bool? = nil, installed_delegate_oauth_targets: [Int64]? = nil) { self.can = can self._id = id.map(AnyString.init) - self._integration_hub_id = integration_hub_id.map(AnyString.init) + self._integration_hub_id = integration_hub_id.map(AnyInt.init) self._label = label.map(AnyString.init) self._description = description.map(AnyString.init) self.enabled = enabled @@ -10355,7 +7610,7 @@ public struct Integration: SDKModel { self.required_fields = required_fields self._privacy_link = privacy_link.map(AnyString.init) self.delegate_oauth = delegate_oauth - if let v = installed_delegate_oauth_targets { _installed_delegate_oauth_targets = v.map { AnyString.init($0) } } else { _installed_delegate_oauth_targets = nil } + if let v = installed_delegate_oauth_targets { _installed_delegate_oauth_targets = v.map { AnyInt.init($0) } } else { _installed_delegate_oauth_targets = nil } } } @@ -10380,13 +7635,13 @@ public struct IntegrationHub: SDKModel { */ public var can: StringDictionary? - private var _id: AnyString? + private var _id: AnyInt? /** * ID of the hub. (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } private var _url: AnyString? @@ -10454,9 +7709,9 @@ public struct IntegrationHub: SDKModel { set { _legal_agreement_text = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, id: String? = nil, url: String? = nil, label: String? = nil, official: Bool? = nil, fetch_error_message: String? = nil, authorization_token: String? = nil, has_authorization_token: Bool? = nil, legal_agreement_signed: Bool? = nil, legal_agreement_required: Bool? = nil, legal_agreement_text: String? = nil) { + public init(can: StringDictionary? = nil, id: Int64? = nil, url: String? = nil, label: String? = nil, official: Bool? = nil, fetch_error_message: String? = nil, authorization_token: String? = nil, has_authorization_token: Bool? = nil, legal_agreement_signed: Bool? = nil, legal_agreement_required: Bool? = nil, legal_agreement_text: String? = nil) { self.can = can - self._id = id.map(AnyString.init) + self._id = id.map(AnyInt.init) self._url = url.map(AnyString.init) self._label = label.map(AnyString.init) self.official = official @@ -10705,33 +7960,6 @@ public struct InternalHelpResourcesContent: SDKModel { } -/** - * The type of the investigative content Valid values are: "dashboard". (Enum defined in Alert) - */ -public enum InvestigativeContentType: String, Codable { - case dashboard = "dashboard" -} - -public struct JdbcInterface: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _results = "results" - } - private var _results: AnyString? - /** - * JDBC Metadata to inflate Avatica response classes. (read-only) - */ - public var results: String? { - get { _results?.value } - set { _results = newValue.map(AnyString.init) } - } - - public init(results: String? = nil) { - self._results = results.map(AnyString.init) - } - -} - public struct LDAPConfig: SDKModel { private enum CodingKeys : String, CodingKey { @@ -10777,7 +8005,7 @@ public struct LDAPConfig: SDKModel { case allow_normal_group_membership case allow_roles_from_normal_groups case allow_direct_roles - case _url = "url" + case url } /** * Operations the current user is able to perform on this object (read-only) @@ -10840,13 +8068,13 @@ public struct LDAPConfig: SDKModel { */ public var connection_tls_no_verify: Bool? - private var _default_new_user_group_ids: [AnyString]? + private var _default_new_user_group_ids: [AnyInt]? /** * (Write-Only) Array of ids of groups that will be applied to new users the first time they login via LDAP */ - public var default_new_user_group_ids: [String]? { + public var default_new_user_group_ids: [Int64]? { get { if let v = _default_new_user_group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } } + set { if let v = newValue { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } } } /** @@ -10854,13 +8082,13 @@ public struct LDAPConfig: SDKModel { */ public var default_new_user_groups: [LkGroup]? - private var _default_new_user_role_ids: [AnyString]? + private var _default_new_user_role_ids: [AnyInt]? /** * (Write-Only) Array of ids of roles that will be applied to new users the first time they login via LDAP */ - public var default_new_user_role_ids: [String]? { + public var default_new_user_role_ids: [Int64]? { get { if let v = _default_new_user_role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } } + set { if let v = newValue { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } } } /** @@ -11081,16 +8309,12 @@ public struct LDAPConfig: SDKModel { */ public var allow_direct_roles: Bool? - private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(can: StringDictionary? = nil, alternate_email_login_allowed: Bool? = nil, auth_password: String? = nil, auth_requires_role: Bool? = nil, auth_username: String? = nil, connection_host: String? = nil, connection_port: String? = nil, connection_tls: Bool? = nil, connection_tls_no_verify: Bool? = nil, default_new_user_group_ids: [String]? = nil, default_new_user_groups: [LkGroup]? = nil, default_new_user_role_ids: [String]? = nil, default_new_user_roles: [Role]? = nil, enabled: Bool? = nil, force_no_page: Bool? = nil, groups: [LDAPGroupRead]? = nil, groups_base_dn: String? = nil, groups_finder_type: String? = nil, groups_member_attribute: String? = nil, groups_objectclasses: String? = nil, groups_user_attribute: String? = nil, groups_with_role_ids: [LDAPGroupWrite]? = nil, has_auth_password: Bool? = nil, merge_new_users_by_email: Bool? = nil, modified_at: String? = nil, modified_by: String? = nil, set_roles_from_groups: Bool? = nil, test_ldap_password: String? = nil, test_ldap_user: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attribute_map_ldap_id: String? = nil, user_attributes: [LDAPUserAttributeRead]? = nil, user_attributes_with_ids: [LDAPUserAttributeWrite]? = nil, user_bind_base_dn: String? = nil, user_custom_filter: String? = nil, user_id_attribute_names: String? = nil, user_objectclass: String? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil, url: String? = nil) { + public init(can: StringDictionary? = nil, alternate_email_login_allowed: Bool? = nil, auth_password: String? = nil, auth_requires_role: Bool? = nil, auth_username: String? = nil, connection_host: String? = nil, connection_port: String? = nil, connection_tls: Bool? = nil, connection_tls_no_verify: Bool? = nil, default_new_user_group_ids: [Int64]? = nil, default_new_user_groups: [LkGroup]? = nil, default_new_user_role_ids: [Int64]? = nil, default_new_user_roles: [Role]? = nil, enabled: Bool? = nil, force_no_page: Bool? = nil, groups: [LDAPGroupRead]? = nil, groups_base_dn: String? = nil, groups_finder_type: String? = nil, groups_member_attribute: String? = nil, groups_objectclasses: String? = nil, groups_user_attribute: String? = nil, groups_with_role_ids: [LDAPGroupWrite]? = nil, has_auth_password: Bool? = nil, merge_new_users_by_email: Bool? = nil, modified_at: String? = nil, modified_by: String? = nil, set_roles_from_groups: Bool? = nil, test_ldap_password: String? = nil, test_ldap_user: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attribute_map_ldap_id: String? = nil, user_attributes: [LDAPUserAttributeRead]? = nil, user_attributes_with_ids: [LDAPUserAttributeWrite]? = nil, user_bind_base_dn: String? = nil, user_custom_filter: String? = nil, user_id_attribute_names: String? = nil, user_objectclass: String? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil, url: URI? = nil) { self.can = can self.alternate_email_login_allowed = alternate_email_login_allowed self._auth_password = auth_password.map(AnyString.init) @@ -11100,9 +8324,9 @@ public struct LDAPConfig: SDKModel { self._connection_port = connection_port.map(AnyString.init) self.connection_tls = connection_tls self.connection_tls_no_verify = connection_tls_no_verify - if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } + if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } self.default_new_user_groups = default_new_user_groups - if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } + if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } self.default_new_user_roles = default_new_user_roles self.enabled = enabled self.force_no_page = force_no_page @@ -11133,7 +8357,7 @@ public struct LDAPConfig: SDKModel { self.allow_normal_group_membership = allow_normal_group_membership self.allow_roles_from_normal_groups = allow_roles_from_normal_groups self.allow_direct_roles = allow_direct_roles - self._url = url.map(AnyString.init) + self.url = url } } @@ -11143,6 +8367,7 @@ public struct LDAPConfigTestIssue: SDKModel { private enum CodingKeys : String, CodingKey { case _severity = "severity" case _message = "message" + case can } private var _severity: AnyString? /** @@ -11162,9 +8387,15 @@ public struct LDAPConfigTestIssue: SDKModel { set { _message = newValue.map(AnyString.init) } } - public init(severity: String? = nil, message: String? = nil) { + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + public init(severity: String? = nil, message: String? = nil, can: StringDictionary? = nil) { self._severity = severity.map(AnyString.init) self._message = message.map(AnyString.init) + self.can = can } } @@ -11178,7 +8409,7 @@ public struct LDAPConfigTestResult: SDKModel { case _status = "status" case _trace = "trace" case user - case _url = "url" + case url } private var _details: AnyString? /** @@ -11223,23 +8454,19 @@ public struct LDAPConfigTestResult: SDKModel { public var user: LDAPUser? - private var _url: AnyString? /** * Link to ldap config (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(details: String? = nil, issues: [LDAPConfigTestIssue]? = nil, message: String? = nil, status: String? = nil, trace: String? = nil, user: LDAPUser? = nil, url: String? = nil) { + public init(details: String? = nil, issues: [LDAPConfigTestIssue]? = nil, message: String? = nil, status: String? = nil, trace: String? = nil, user: LDAPUser? = nil, url: URI? = nil) { self._details = details.map(AnyString.init) self.issues = issues self._message = message.map(AnyString.init) self._status = status.map(AnyString.init) self._trace = trace.map(AnyString.init) self.user = user - self._url = url.map(AnyString.init) + self.url = url } } @@ -11252,24 +8479,24 @@ public struct LDAPGroupRead: SDKModel { case _looker_group_name = "looker_group_name" case _name = "name" case roles - case _url = "url" + case url } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } - private var _looker_group_id: AnyString? + private var _looker_group_id: AnyInt? /** * Unique Id of group in Looker (read-only) */ - public var looker_group_id: String? { + public var looker_group_id: Int64? { get { _looker_group_id?.value } - set { _looker_group_id = newValue.map(AnyString.init) } + set { _looker_group_id = newValue.map(AnyInt.init) } } private var _looker_group_name: AnyString? @@ -11295,22 +8522,18 @@ public struct LDAPGroupRead: SDKModel { */ public var roles: [Role]? - private var _url: AnyString? /** * Link to ldap config (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(id: String? = nil, looker_group_id: String? = nil, looker_group_name: String? = nil, name: String? = nil, roles: [Role]? = nil, url: String? = nil) { - self._id = id.map(AnyString.init) - self._looker_group_id = looker_group_id.map(AnyString.init) + public init(id: Int64? = nil, looker_group_id: Int64? = nil, looker_group_name: String? = nil, name: String? = nil, roles: [Role]? = nil, url: URI? = nil) { + self._id = id.map(AnyInt.init) + self._looker_group_id = looker_group_id.map(AnyInt.init) self._looker_group_name = looker_group_name.map(AnyString.init) self._name = name.map(AnyString.init) self.roles = roles - self._url = url.map(AnyString.init) + self.url = url } } @@ -11323,24 +8546,24 @@ public struct LDAPGroupWrite: SDKModel { case _looker_group_name = "looker_group_name" case _name = "name" case _role_ids = "role_ids" - case _url = "url" + case url } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } - private var _looker_group_id: AnyString? + private var _looker_group_id: AnyInt? /** * Unique Id of group in Looker (read-only) */ - public var looker_group_id: String? { + public var looker_group_id: Int64? { get { _looker_group_id?.value } - set { _looker_group_id = newValue.map(AnyString.init) } + set { _looker_group_id = newValue.map(AnyInt.init) } } private var _looker_group_name: AnyString? @@ -11361,31 +8584,27 @@ public struct LDAPGroupWrite: SDKModel { set { _name = newValue.map(AnyString.init) } } - private var _role_ids: [AnyString]? + private var _role_ids: [AnyInt]? /** * Looker Role Ids */ - public var role_ids: [String]? { + public var role_ids: [Int64]? { get { if let v = _role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } } + set { if let v = newValue { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } } } - private var _url: AnyString? /** * Link to ldap config (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(id: String? = nil, looker_group_id: String? = nil, looker_group_name: String? = nil, name: String? = nil, role_ids: [String]? = nil, url: String? = nil) { - self._id = id.map(AnyString.init) - self._looker_group_id = looker_group_id.map(AnyString.init) + public init(id: Int64? = nil, looker_group_id: Int64? = nil, looker_group_name: String? = nil, name: String? = nil, role_ids: [Int64]? = nil, url: URI? = nil) { + self._id = id.map(AnyInt.init) + self._looker_group_id = looker_group_id.map(AnyInt.init) self._looker_group_name = looker_group_name.map(AnyString.init) self._name = name.map(AnyString.init) - if let v = role_ids { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } - self._url = url.map(AnyString.init) + if let v = role_ids { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } + self.url = url } } @@ -11402,7 +8621,8 @@ public struct LDAPUser: SDKModel { case _ldap_dn = "ldap_dn" case _ldap_id = "ldap_id" case _roles = "roles" - case _url = "url" + case can + case url } private var _all_emails: [AnyString]? /** @@ -11481,16 +8701,17 @@ public struct LDAPUser: SDKModel { set { if let v = newValue { _roles = v.map { AnyString.init($0) } } else { _roles = nil } } } - private var _url: AnyString? + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + /** * Link to ldap config (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(all_emails: [String]? = nil, attributes: StringDictionary? = nil, email: String? = nil, first_name: String? = nil, groups: [String]? = nil, last_name: String? = nil, ldap_dn: String? = nil, ldap_id: String? = nil, roles: [String]? = nil, url: String? = nil) { + public init(all_emails: [String]? = nil, attributes: StringDictionary? = nil, email: String? = nil, first_name: String? = nil, groups: [String]? = nil, last_name: String? = nil, ldap_dn: String? = nil, ldap_id: String? = nil, roles: [String]? = nil, can: StringDictionary? = nil, url: URI? = nil) { if let v = all_emails { _all_emails = v.map { AnyString.init($0) } } else { _all_emails = nil } self.attributes = attributes self._email = email.map(AnyString.init) @@ -11500,7 +8721,8 @@ public struct LDAPUser: SDKModel { self._ldap_dn = ldap_dn.map(AnyString.init) self._ldap_id = ldap_id.map(AnyString.init) if let v = roles { _roles = v.map { AnyString.init($0) } } else { _roles = nil } - self._url = url.map(AnyString.init) + self.can = can + self.url = url } } @@ -11511,7 +8733,7 @@ public struct LDAPUserAttributeRead: SDKModel { case _name = "name" case required case user_attributes - case _url = "url" + case url } private var _name: AnyString? /** @@ -11532,20 +8754,16 @@ public struct LDAPUserAttributeRead: SDKModel { */ public var user_attributes: [UserAttribute]? - private var _url: AnyString? /** * Link to ldap config (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(name: String? = nil, required: Bool? = nil, user_attributes: [UserAttribute]? = nil, url: String? = nil) { + public init(name: String? = nil, required: Bool? = nil, user_attributes: [UserAttribute]? = nil, url: URI? = nil) { self._name = name.map(AnyString.init) self.required = required self.user_attributes = user_attributes - self._url = url.map(AnyString.init) + self.url = url } } @@ -11556,7 +8774,7 @@ public struct LDAPUserAttributeWrite: SDKModel { case _name = "name" case required case _user_attribute_ids = "user_attribute_ids" - case _url = "url" + case url } private var _name: AnyString? /** @@ -11572,29 +8790,25 @@ public struct LDAPUserAttributeWrite: SDKModel { */ public var required: Bool? - private var _user_attribute_ids: [AnyString]? + private var _user_attribute_ids: [AnyInt]? /** * Looker User Attribute Ids */ - public var user_attribute_ids: [String]? { + public var user_attribute_ids: [Int64]? { get { if let v = _user_attribute_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _user_attribute_ids = v.map { AnyString.init($0) } } else { _user_attribute_ids = nil } } + set { if let v = newValue { _user_attribute_ids = v.map { AnyInt.init($0) } } else { _user_attribute_ids = nil } } } - private var _url: AnyString? /** * Link to ldap config (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(name: String? = nil, required: Bool? = nil, user_attribute_ids: [String]? = nil, url: String? = nil) { + public init(name: String? = nil, required: Bool? = nil, user_attribute_ids: [Int64]? = nil, url: URI? = nil) { self._name = name.map(AnyString.init) self.required = required - if let v = user_attribute_ids { _user_attribute_ids = v.map { AnyString.init($0) } } else { _user_attribute_ids = nil } - self._url = url.map(AnyString.init) + if let v = user_attribute_ids { _user_attribute_ids = v.map { AnyInt.init($0) } } else { _user_attribute_ids = nil } + self.url = url } } @@ -11774,6 +8988,7 @@ public struct LocalizationSettings: SDKModel { private enum CodingKeys : String, CodingKey { case _default_locale = "default_locale" case _localization_level = "localization_level" + case can } private var _default_locale: AnyString? /** @@ -11793,9 +9008,15 @@ public struct LocalizationSettings: SDKModel { set { _localization_level = newValue.map(AnyString.init) } } - public init(default_locale: String? = nil, localization_level: String? = nil) { + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + public init(default_locale: String? = nil, localization_level: String? = nil, can: StringDictionary? = nil) { self._default_locale = default_locale.map(AnyString.init) self._localization_level = localization_level.map(AnyString.init) + self.can = can } } @@ -11807,7 +9028,6 @@ public struct Look: SDKModel { case _content_metadata_id = "content_metadata_id" case _id = "id" case _title = "title" - case _user_id = "user_id" case _content_favorite_id = "content_favorite_id" case created_at case deleted @@ -11832,29 +9052,33 @@ public struct Look: SDKModel { case folder case _folder_id = "folder_id" case updated_at + case _user_id = "user_id" case _view_count = "view_count" + case user + case _space_id = "space_id" + case space } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _content_metadata_id: AnyString? + private var _content_metadata_id: AnyInt? /** * Id of content metadata (read-only) */ - public var content_metadata_id: String? { + public var content_metadata_id: Int64? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } + set { _content_metadata_id = newValue.map(AnyInt.init) } } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } private var _title: AnyString? @@ -11866,22 +9090,13 @@ public struct Look: SDKModel { set { _title = newValue.map(AnyString.init) } } - private var _user_id: AnyString? - /** - * User Id - */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } - } - - private var _content_favorite_id: AnyString? + private var _content_favorite_id: AnyInt? /** * Content Favorite Id (read-only) */ - public var content_favorite_id: String? { + public var content_favorite_id: Int64? { get { _content_favorite_id?.value } - set { _content_favorite_id = newValue.map(AnyString.init) } + set { _content_favorite_id = newValue.map(AnyInt.init) } } /** @@ -11899,13 +9114,13 @@ public struct Look: SDKModel { */ public var deleted_at: Date? - private var _deleter_id: AnyString? + private var _deleter_id: AnyInt? /** * Id of User that deleted the look. (read-only) */ - public var deleter_id: String? { + public var deleter_id: Int64? { get { _deleter_id?.value } - set { _deleter_id = newValue.map(AnyString.init) } + set { _deleter_id = newValue.map(AnyInt.init) } } private var _description: AnyString? @@ -11972,13 +9187,13 @@ public struct Look: SDKModel { */ public var last_accessed_at: Date? - private var _last_updater_id: AnyString? + private var _last_updater_id: AnyInt? /** * Id of User that last updated the look. (read-only) */ - public var last_updater_id: String? { + public var last_updater_id: Int64? { get { _last_updater_id?.value } - set { _last_updater_id = newValue.map(AnyString.init) } + set { _last_updater_id = newValue.map(AnyInt.init) } } /** @@ -12011,13 +9226,13 @@ public struct Look: SDKModel { set { _public_url = newValue.map(AnyString.init) } } - private var _query_id: AnyString? + private var _query_id: AnyInt? /** * Query Id */ - public var query_id: String? { + public var query_id: Int64? { get { _query_id?.value } - set { _query_id = newValue.map(AnyString.init) } + set { _query_id = newValue.map(AnyInt.init) } } private var _short_url: AnyString? @@ -12045,6 +9260,15 @@ public struct Look: SDKModel { */ public var updated_at: Date? + private var _user_id: AnyInt? + /** + * User Id + */ + public var user_id: Int64? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyInt.init) } + } + private var _view_count: AnyInt? /** * Number of times viewed in the Looker web UI (read-only) @@ -12054,17 +9278,29 @@ public struct Look: SDKModel { set { _view_count = newValue.map(AnyInt.init) } } - public init(can: StringDictionary? = nil, content_metadata_id: String? = nil, id: String? = nil, title: String? = nil, user_id: String? = nil, content_favorite_id: String? = nil, created_at: Date? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: String? = nil, description: String? = nil, embed_url: String? = nil, excel_file_url: String? = nil, favorite_count: Int64? = nil, google_spreadsheet_formula: String? = nil, image_embed_url: String? = nil, is_run_on_load: Bool? = nil, last_accessed_at: Date? = nil, last_updater_id: String? = nil, last_viewed_at: Date? = nil, model: LookModel? = nil, `public`: Bool? = nil, public_slug: String? = nil, public_url: String? = nil, query_id: String? = nil, short_url: String? = nil, folder: FolderBase? = nil, folder_id: String? = nil, updated_at: Date? = nil, view_count: Int64? = nil) { + public var user: UserIdOnly? + + private var _space_id: AnyString? + /** + * Space Id + */ + public var space_id: String? { + get { _space_id?.value } + set { _space_id = newValue.map(AnyString.init) } + } + + public var space: SpaceBase? + + public init(can: StringDictionary? = nil, content_metadata_id: Int64? = nil, id: Int64? = nil, title: String? = nil, content_favorite_id: Int64? = nil, created_at: Date? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: Int64? = nil, description: String? = nil, embed_url: String? = nil, excel_file_url: String? = nil, favorite_count: Int64? = nil, google_spreadsheet_formula: String? = nil, image_embed_url: String? = nil, is_run_on_load: Bool? = nil, last_accessed_at: Date? = nil, last_updater_id: Int64? = nil, last_viewed_at: Date? = nil, model: LookModel? = nil, `public`: Bool? = nil, public_slug: String? = nil, public_url: String? = nil, query_id: Int64? = nil, short_url: String? = nil, folder: FolderBase? = nil, folder_id: String? = nil, updated_at: Date? = nil, user_id: Int64? = nil, view_count: Int64? = nil, user: UserIdOnly? = nil, space_id: String? = nil, space: SpaceBase? = nil) { self.can = can - self._content_metadata_id = content_metadata_id.map(AnyString.init) - self._id = id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self._id = id.map(AnyInt.init) self._title = title.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) - self._content_favorite_id = content_favorite_id.map(AnyString.init) + self._content_favorite_id = content_favorite_id.map(AnyInt.init) self.created_at = created_at self.deleted = deleted self.deleted_at = deleted_at - self._deleter_id = deleter_id.map(AnyString.init) + self._deleter_id = deleter_id.map(AnyInt.init) self._description = description.map(AnyString.init) self._embed_url = embed_url.map(AnyString.init) self._excel_file_url = excel_file_url.map(AnyString.init) @@ -12073,18 +9309,22 @@ public struct Look: SDKModel { self._image_embed_url = image_embed_url.map(AnyString.init) self.is_run_on_load = is_run_on_load self.last_accessed_at = last_accessed_at - self._last_updater_id = last_updater_id.map(AnyString.init) + self._last_updater_id = last_updater_id.map(AnyInt.init) self.last_viewed_at = last_viewed_at self.model = model self.`public` = `public` self._public_slug = public_slug.map(AnyString.init) self._public_url = public_url.map(AnyString.init) - self._query_id = query_id.map(AnyString.init) + self._query_id = query_id.map(AnyInt.init) self._short_url = short_url.map(AnyString.init) self.folder = folder self._folder_id = folder_id.map(AnyString.init) self.updated_at = updated_at + self._user_id = user_id.map(AnyInt.init) self._view_count = view_count.map(AnyInt.init) + self.user = user + self._space_id = space_id.map(AnyString.init) + self.space = space } } @@ -12096,29 +9336,28 @@ public struct LookBasic: SDKModel { case _content_metadata_id = "content_metadata_id" case _id = "id" case _title = "title" - case _user_id = "user_id" } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _content_metadata_id: AnyString? + private var _content_metadata_id: AnyInt? /** * Id of content metadata (read-only) */ - public var content_metadata_id: String? { + public var content_metadata_id: Int64? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } + set { _content_metadata_id = newValue.map(AnyInt.init) } } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } private var _title: AnyString? @@ -12130,21 +9369,11 @@ public struct LookBasic: SDKModel { set { _title = newValue.map(AnyString.init) } } - private var _user_id: AnyString? - /** - * User Id - */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, content_metadata_id: String? = nil, id: String? = nil, title: String? = nil, user_id: String? = nil) { + public init(can: StringDictionary? = nil, content_metadata_id: Int64? = nil, id: Int64? = nil, title: String? = nil) { self.can = can - self._content_metadata_id = content_metadata_id.map(AnyString.init) - self._id = id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self._id = id.map(AnyInt.init) self._title = title.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) } } @@ -12237,12 +9466,8 @@ public struct LookmlModelExplore: SDKModel { case _name = "name" case _description = "description" case _label = "label" - case _title = "title" case _scopes = "scopes" case can_total - case can_develop - case can_see_lookml - case _lookml_link = "lookml_link" case can_save case can_explain case can_pivot_in_db @@ -12271,7 +9496,6 @@ public struct LookmlModelExplore: SDKModel { case joins case _group_label = "group_label" case supported_measure_types - case _always_join = "always_join" } private var _id: AnyString? /** @@ -12309,47 +9533,19 @@ public struct LookmlModelExplore: SDKModel { set { _label = newValue.map(AnyString.init) } } - private var _title: AnyString? - /** - * Explore title (read-only) - */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } - } - private var _scopes: [AnyString]? /** * Scopes (read-only) */ public var scopes: [String]? { get { if let v = _scopes { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _scopes = v.map { AnyString.init($0) } } else { _scopes = nil } } - } - - /** - * Can Total (read-only) - */ - public var can_total: Bool? - - /** - * Can Develop LookML (read-only) - */ - public var can_develop: Bool? - - /** - * Can See LookML (read-only) - */ - public var can_see_lookml: Bool? + set { if let v = newValue { _scopes = v.map { AnyString.init($0) } } else { _scopes = nil } } + } - private var _lookml_link: AnyString? /** - * A URL linking to the definition of this explore in the LookML IDE. (read-only) + * Can Total (read-only) */ - public var lookml_link: String? { - get { _lookml_link?.value } - set { _lookml_link = newValue.map(AnyString.init) } - } + public var can_total: Bool? /** * Can Save (read-only) @@ -12536,26 +9732,13 @@ public struct LookmlModelExplore: SDKModel { */ public var supported_measure_types: [LookmlModelExploreSupportedMeasureType]? - private var _always_join: [AnyString]? - /** - * 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. (read-only) - */ - public var always_join: [String]? { - get { if let v = _always_join { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _always_join = v.map { AnyString.init($0) } } else { _always_join = nil } } - } - - public init(id: String? = nil, name: String? = nil, description: String? = nil, label: String? = nil, title: String? = nil, scopes: [String]? = nil, can_total: Bool? = nil, can_develop: Bool? = nil, can_see_lookml: Bool? = nil, lookml_link: String? = nil, can_save: Bool? = nil, can_explain: Bool? = nil, can_pivot_in_db: Bool? = nil, can_subtotal: Bool? = nil, has_timezone_support: Bool? = nil, supports_cost_estimate: Bool? = nil, connection_name: String? = nil, null_sort_treatment: String? = nil, files: [String]? = nil, source_file: String? = nil, project_name: String? = nil, model_name: String? = nil, view_name: String? = nil, hidden: Bool? = nil, sql_table_name: String? = nil, access_filter_fields: [String]? = nil, access_filters: [LookmlModelExploreAccessFilter]? = nil, aliases: [LookmlModelExploreAlias]? = nil, always_filter: [LookmlModelExploreAlwaysFilter]? = nil, conditionally_filter: [LookmlModelExploreConditionallyFilter]? = nil, index_fields: [String]? = nil, sets: [LookmlModelExploreSet]? = nil, tags: [String]? = nil, errors: [LookmlModelExploreError]? = nil, fields: LookmlModelExploreFieldset? = nil, joins: [LookmlModelExploreJoins]? = nil, group_label: String? = nil, supported_measure_types: [LookmlModelExploreSupportedMeasureType]? = nil, always_join: [String]? = nil) { + public init(id: String? = nil, name: String? = nil, description: String? = nil, label: String? = nil, scopes: [String]? = nil, can_total: Bool? = nil, can_save: Bool? = nil, can_explain: Bool? = nil, can_pivot_in_db: Bool? = nil, can_subtotal: Bool? = nil, has_timezone_support: Bool? = nil, supports_cost_estimate: Bool? = nil, connection_name: String? = nil, null_sort_treatment: String? = nil, files: [String]? = nil, source_file: String? = nil, project_name: String? = nil, model_name: String? = nil, view_name: String? = nil, hidden: Bool? = nil, sql_table_name: String? = nil, access_filter_fields: [String]? = nil, access_filters: [LookmlModelExploreAccessFilter]? = nil, aliases: [LookmlModelExploreAlias]? = nil, always_filter: [LookmlModelExploreAlwaysFilter]? = nil, conditionally_filter: [LookmlModelExploreConditionallyFilter]? = nil, index_fields: [String]? = nil, sets: [LookmlModelExploreSet]? = nil, tags: [String]? = nil, errors: [LookmlModelExploreError]? = nil, fields: LookmlModelExploreFieldset? = nil, joins: [LookmlModelExploreJoins]? = nil, group_label: String? = nil, supported_measure_types: [LookmlModelExploreSupportedMeasureType]? = nil) { self._id = id.map(AnyString.init) self._name = name.map(AnyString.init) self._description = description.map(AnyString.init) self._label = label.map(AnyString.init) - self._title = title.map(AnyString.init) if let v = scopes { _scopes = v.map { AnyString.init($0) } } else { _scopes = nil } self.can_total = can_total - self.can_develop = can_develop - self.can_see_lookml = can_see_lookml - self._lookml_link = lookml_link.map(AnyString.init) self.can_save = can_save self.can_explain = can_explain self.can_pivot_in_db = can_pivot_in_db @@ -12584,7 +9767,6 @@ public struct LookmlModelExplore: SDKModel { self.joins = joins self._group_label = group_label.map(AnyString.init) self.supported_measure_types = supported_measure_types - if let v = always_join { _always_join = v.map { AnyString.init($0) } } else { _always_join = nil } } } @@ -12813,8 +9995,6 @@ public struct LookmlModelExploreField: SDKModel { case _view_label = "view_label" case `dynamic` case week_start_day - case _times_used = "times_used" - case _original_view = "original_view" } /** * The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: "left", "right". (read-only) @@ -12925,1357 +10105,1047 @@ public struct LookmlModelExploreField: SDKModel { public var is_fiscal: Bool? /** - * Whether this field is of a type that represents a numeric value. (read-only) - */ - public var is_numeric: Bool? - - /** - * Whether this field is of a type that represents a time value. (read-only) - */ - public var is_timeframe: Bool? - - /** - * Whether this field can be time filtered. (read-only) - */ - public var can_time_filter: Bool? - - public var time_interval: LookmlModelExploreFieldTimeInterval? - - private var _label: AnyString? - /** - * Fully-qualified human-readable label of the field. (read-only) - */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } - } - - private var _label_from_parameter: AnyString? - /** - * The name of the parameter that will provide a parameterized label for this field, if available in the current context. (read-only) - */ - public var label_from_parameter: String? { - get { _label_from_parameter?.value } - set { _label_from_parameter = newValue.map(AnyString.init) } - } - - private var _label_short: AnyString? - /** - * The human-readable label of the field, without the view label. (read-only) - */ - public var label_short: String? { - get { _label_short?.value } - set { _label_short = newValue.map(AnyString.init) } - } - - private var _lookml_link: AnyString? - /** - * A URL linking to the definition of this field in the LookML IDE. (read-only) - */ - public var lookml_link: String? { - get { _lookml_link?.value } - set { _lookml_link = newValue.map(AnyString.init) } - } - - public var map_layer: LookmlModelExploreFieldMapLayer? - - /** - * Whether this field is a measure. (read-only) - */ - public var measure: Bool? - - private var _name: AnyString? - /** - * Fully-qualified name of the field. (read-only) - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - /** - * If yes, the field will not be localized with the user attribute number_format. Defaults to no (read-only) - */ - public var strict_value_format: Bool? - - /** - * Whether this field is a parameter. (read-only) - */ - public var parameter: Bool? - - /** - * Whether this field can be removed from a query. (read-only) - */ - public var permanent: Bool? - - /** - * Whether or not the field represents a primary key. (read-only) - */ - public var primary_key: Bool? - - private var _project_name: AnyString? - /** - * The name of the project this field is defined in. (read-only) - */ - public var project_name: String? { - get { _project_name?.value } - set { _project_name = newValue.map(AnyString.init) } - } - - /** - * When true, it's not possible to re-sort this field's values without re-running the SQL query, due to database logic that affects the sort. (read-only) - */ - public var requires_refresh_on_sort: Bool? - - private var _scope: AnyString? - /** - * The LookML scope this field belongs to. The scope is typically the field's view. (read-only) - */ - public var scope: String? { - get { _scope?.value } - set { _scope = newValue.map(AnyString.init) } - } - - /** - * Whether this field can be sorted. (read-only) - */ - public var sortable: Bool? - - private var _source_file: AnyString? - /** - * The path portion of source_file_path. (read-only) - */ - public var source_file: String? { - get { _source_file?.value } - set { _source_file = newValue.map(AnyString.init) } - } - - private var _source_file_path: AnyString? - /** - * The fully-qualified path of the project file this field is defined in. (read-only) - */ - public var source_file_path: String? { - get { _source_file_path?.value } - set { _source_file_path = newValue.map(AnyString.init) } - } - - private var _sql: AnyString? - /** - * SQL expression as defined in the LookML model. The SQL syntax shown here is a representation intended for auditability, and is not neccessarily an exact match for what will ultimately be run in the database. It may contain special LookML syntax or annotations that are not valid SQL. This will be null if the current user does not have the see_lookml permission for the field's model. (read-only) - */ - public var sql: String? { - get { _sql?.value } - set { _sql = newValue.map(AnyString.init) } - } - - /** - * An array of conditions and values that make up a SQL Case expression, as defined in the LookML model. The SQL syntax shown here is a representation intended for auditability, and is not neccessarily an exact match for what will ultimately be run in the database. It may contain special LookML syntax or annotations that are not valid SQL. This will be null if the current user does not have the see_lookml permission for the field's model. (read-only) - */ - public var sql_case: [LookmlModelExploreFieldSqlCase]? - - /** - * Array of filter conditions defined for the measure in LookML. (read-only) - */ - public var filters: [LookmlModelExploreFieldMeasureFilters]? - - private var _suggest_dimension: AnyString? - /** - * The name of the dimension to base suggest queries from. (read-only) - */ - public var suggest_dimension: String? { - get { _suggest_dimension?.value } - set { _suggest_dimension = newValue.map(AnyString.init) } - } - - private var _suggest_explore: AnyString? - /** - * The name of the explore to base suggest queries from. (read-only) - */ - public var suggest_explore: String? { - get { _suggest_explore?.value } - set { _suggest_explore = newValue.map(AnyString.init) } - } - - /** - * Whether or not suggestions are possible for this field. (read-only) - */ - public var suggestable: Bool? - - private var _suggestions: [AnyString]? - /** - * If available, a list of suggestions for this field. For most fields, a suggest query is a more appropriate way to get an up-to-date list of suggestions. Or use enumerations to list all the possible values. (read-only) - */ - public var suggestions: [String]? { - get { if let v = _suggestions { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _suggestions = v.map { AnyString.init($0) } } else { _suggestions = nil } } - } - - private var _tags: [AnyString]? - /** - * An array of arbitrary string tags provided in the model for this field. (read-only) - */ - public var tags: [String]? { - get { if let v = _tags { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _tags = v.map { AnyString.init($0) } } else { _tags = nil } } - } - - private var _type: AnyString? - /** - * The LookML type of the field. (read-only) - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - /** - * 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". (read-only) - */ - public var user_attribute_filter_types: [UserAttributeFilterTypes]? - - private var _value_format: AnyString? - /** - * If specified, the LookML value format string for formatting values of this field. (read-only) - */ - public var value_format: String? { - get { _value_format?.value } - set { _value_format = newValue.map(AnyString.init) } - } - - private var _view: AnyString? - /** - * The name of the view this field belongs to. (read-only) - */ - public var view: String? { - get { _view?.value } - set { _view = newValue.map(AnyString.init) } - } - - private var _view_label: AnyString? - /** - * The human-readable label of the view the field belongs to. (read-only) - */ - public var view_label: String? { - get { _view_label?.value } - set { _view_label = newValue.map(AnyString.init) } - } - - /** - * Whether this field was specified in "dynamic_fields" and is not part of the model. (read-only) - */ - public var `dynamic`: Bool? - - /** - * The name of the starting day of the week. Valid values are: "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday". (read-only) + * Whether this field is of a type that represents a numeric value. (read-only) */ - public var week_start_day: WeekStartDay? + public var is_numeric: Bool? - private var _times_used: AnyInt? /** - * The number of times this field has been used in queries (read-only) + * Whether this field is of a type that represents a time value. (read-only) */ - public var times_used: Int64? { - get { _times_used?.value } - set { _times_used = newValue.map(AnyInt.init) } - } + public var is_timeframe: Bool? - private var _original_view: AnyString? /** - * The name of the view this field is defined in. This will be different than "view" when the view has been joined via a different name using the "from" parameter. (read-only) + * Whether this field can be time filtered. (read-only) */ - public var original_view: String? { - get { _original_view?.value } - set { _original_view = newValue.map(AnyString.init) } - } - - public init(align: Align? = nil, can_filter: Bool? = nil, category: Category? = nil, default_filter_value: String? = nil, description: String? = nil, dimension_group: 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, 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, map_layer: LookmlModelExploreFieldMapLayer? = nil, measure: Bool? = nil, name: String? = nil, strict_value_format: Bool? = nil, parameter: Bool? = 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, tags: [String]? = nil, type: String? = nil, user_attribute_filter_types: [UserAttributeFilterTypes]? = nil, value_format: 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) { - self.align = align - self.can_filter = can_filter - self.category = category - self._default_filter_value = default_filter_value.map(AnyString.init) - self._description = description.map(AnyString.init) - self._dimension_group = dimension_group.map(AnyString.init) - self.enumerations = enumerations - self._error = error.map(AnyString.init) - self._field_group_label = field_group_label.map(AnyString.init) - self._field_group_variant = field_group_variant.map(AnyString.init) - self.fill_style = fill_style - self._fiscal_month_offset = fiscal_month_offset.map(AnyInt.init) - self.has_allowed_values = has_allowed_values - self.hidden = hidden - self.is_filter = is_filter - self.is_fiscal = is_fiscal - self.is_numeric = is_numeric - self.is_timeframe = is_timeframe - self.can_time_filter = can_time_filter - self.time_interval = time_interval - self._label = label.map(AnyString.init) - self._label_from_parameter = label_from_parameter.map(AnyString.init) - self._label_short = label_short.map(AnyString.init) - self._lookml_link = lookml_link.map(AnyString.init) - self.map_layer = map_layer - self.measure = measure - self._name = name.map(AnyString.init) - self.strict_value_format = strict_value_format - self.parameter = parameter - self.permanent = permanent - self.primary_key = primary_key - self._project_name = project_name.map(AnyString.init) - self.requires_refresh_on_sort = requires_refresh_on_sort - self._scope = scope.map(AnyString.init) - self.sortable = sortable - self._source_file = source_file.map(AnyString.init) - self._source_file_path = source_file_path.map(AnyString.init) - self._sql = sql.map(AnyString.init) - self.sql_case = sql_case - self.filters = filters - self._suggest_dimension = suggest_dimension.map(AnyString.init) - self._suggest_explore = suggest_explore.map(AnyString.init) - self.suggestable = suggestable - if let v = suggestions { _suggestions = v.map { AnyString.init($0) } } else { _suggestions = nil } - if let v = tags { _tags = v.map { AnyString.init($0) } } else { _tags = nil } - self._type = type.map(AnyString.init) - self.user_attribute_filter_types = user_attribute_filter_types - self._value_format = value_format.map(AnyString.init) - self._view = view.map(AnyString.init) - self._view_label = view_label.map(AnyString.init) - self.`dynamic` = `dynamic` - self.week_start_day = week_start_day - self._times_used = times_used.map(AnyInt.init) - self._original_view = original_view.map(AnyString.init) - } - -} + public var can_time_filter: Bool? -public struct LookmlModelExploreFieldEnumeration: SDKModel { + public var time_interval: LookmlModelExploreFieldTimeInterval? - private enum CodingKeys : String, CodingKey { - case _label = "label" - case value - } private var _label: AnyString? /** - * Label (read-only) + * Fully-qualified human-readable label of the field. (read-only) */ public var label: String? { get { _label?.value } set { _label = newValue.map(AnyString.init) } } + private var _label_from_parameter: AnyString? /** - * Value (read-only) + * The name of the parameter that will provide a parameterized label for this field, if available in the current context. (read-only) */ - public var value: AnyCodable? + public var label_from_parameter: String? { + get { _label_from_parameter?.value } + set { _label_from_parameter = newValue.map(AnyString.init) } + } - public init(label: String? = nil, value: AnyCodable? = nil) { - self._label = label.map(AnyString.init) - self.value = value + private var _label_short: AnyString? + /** + * The human-readable label of the field, without the view label. (read-only) + */ + public var label_short: String? { + get { _label_short?.value } + set { _label_short = newValue.map(AnyString.init) } } -} + private var _lookml_link: AnyString? + /** + * A URL linking to the definition of this field in the LookML IDE. (read-only) + */ + public var lookml_link: String? { + get { _lookml_link?.value } + set { _lookml_link = newValue.map(AnyString.init) } + } -public struct LookmlModelExploreFieldMapLayer: SDKModel { + public var map_layer: LookmlModelExploreFieldMapLayer? - private enum CodingKeys : String, CodingKey { - case _url = "url" - case _name = "name" - case _feature_key = "feature_key" - case _property_key = "property_key" - case _property_label_key = "property_label_key" - case _projection = "projection" - case format - case _extents_json_url = "extents_json_url" - case _max_zoom_level = "max_zoom_level" - case _min_zoom_level = "min_zoom_level" - } - private var _url: AnyString? /** - * URL to the map layer resource. (read-only) + * Whether this field is a measure. (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var measure: Bool? private var _name: AnyString? /** - * Name of the map layer, as defined in LookML. (read-only) + * Fully-qualified name of the field. (read-only) */ public var name: String? { get { _name?.value } set { _name = newValue.map(AnyString.init) } } - private var _feature_key: AnyString? /** - * Specifies the name of the TopoJSON object that the map layer references. If not specified, use the first object.. (read-only) + * If yes, the field will not be localized with the user attribute number_format. Defaults to no (read-only) */ - public var feature_key: String? { - get { _feature_key?.value } - set { _feature_key = newValue.map(AnyString.init) } - } + public var strict_value_format: Bool? - private var _property_key: AnyString? /** - * Selects which property from the TopoJSON data to plot against. TopoJSON supports arbitrary metadata for each region. When null, the first matching property should be used. (read-only) + * Whether this field is a parameter. (read-only) */ - public var property_key: String? { - get { _property_key?.value } - set { _property_key = newValue.map(AnyString.init) } - } + public var parameter: Bool? - private var _property_label_key: AnyString? /** - * Which property from the TopoJSON data to use to label the region. When null, property_key should be used. (read-only) + * Whether this field can be removed from a query. (read-only) */ - public var property_label_key: String? { - get { _property_label_key?.value } - set { _property_label_key = newValue.map(AnyString.init) } - } + public var permanent: Bool? - private var _projection: AnyString? /** - * The preferred geographic projection of the map layer when displayed in a visualization that supports multiple geographic projections. (read-only) + * Whether or not the field represents a primary key. (read-only) */ - public var projection: String? { - get { _projection?.value } - set { _projection = newValue.map(AnyString.init) } + public var primary_key: Bool? + + private var _project_name: AnyString? + /** + * The name of the project this field is defined in. (read-only) + */ + public var project_name: String? { + get { _project_name?.value } + set { _project_name = newValue.map(AnyString.init) } } /** - * Specifies the data format of the region information. Valid values are: "topojson", "vector_tile_region". (read-only) + * When true, it's not possible to re-sort this field's values without re-running the SQL query, due to database logic that affects the sort. (read-only) */ - public var format: Format? + public var requires_refresh_on_sort: Bool? - private var _extents_json_url: AnyString? + private var _scope: AnyString? /** - * Specifies the URL to a JSON file that defines the geographic extents of each region available in the map layer. This data is used to automatically center the map on the available data for visualization purposes. The JSON file must be a JSON object where the keys are the mapping value of the feature (as specified by property_key) and the values are arrays of four numbers representing the west longitude, south latitude, east longitude, and north latitude extents of the region. The object must include a key for every possible value of property_key. (read-only) + * The LookML scope this field belongs to. The scope is typically the field's view. (read-only) */ - public var extents_json_url: String? { - get { _extents_json_url?.value } - set { _extents_json_url = newValue.map(AnyString.init) } + public var scope: String? { + get { _scope?.value } + set { _scope = newValue.map(AnyString.init) } } - private var _max_zoom_level: AnyInt? /** - * The minimum zoom level that the map layer may be displayed at, for visualizations that support zooming. (read-only) + * Whether this field can be sorted. (read-only) */ - public var max_zoom_level: Int64? { - get { _max_zoom_level?.value } - set { _max_zoom_level = newValue.map(AnyInt.init) } + public var sortable: Bool? + + private var _source_file: AnyString? + /** + * The path portion of source_file_path. (read-only) + */ + public var source_file: String? { + get { _source_file?.value } + set { _source_file = newValue.map(AnyString.init) } } - private var _min_zoom_level: AnyInt? + private var _source_file_path: AnyString? /** - * The maximum zoom level that the map layer may be displayed at, for visualizations that support zooming. (read-only) + * The fully-qualified path of the project file this field is defined in. (read-only) */ - public var min_zoom_level: Int64? { - get { _min_zoom_level?.value } - set { _min_zoom_level = newValue.map(AnyInt.init) } + public var source_file_path: String? { + get { _source_file_path?.value } + set { _source_file_path = newValue.map(AnyString.init) } } - public init(url: String? = nil, name: String? = nil, feature_key: String? = nil, property_key: String? = nil, property_label_key: String? = nil, projection: String? = nil, format: Format? = nil, extents_json_url: String? = nil, max_zoom_level: Int64? = nil, min_zoom_level: Int64? = nil) { - self._url = url.map(AnyString.init) - self._name = name.map(AnyString.init) - self._feature_key = feature_key.map(AnyString.init) - self._property_key = property_key.map(AnyString.init) - self._property_label_key = property_label_key.map(AnyString.init) - self._projection = projection.map(AnyString.init) - self.format = format - self._extents_json_url = extents_json_url.map(AnyString.init) - self._max_zoom_level = max_zoom_level.map(AnyInt.init) - self._min_zoom_level = min_zoom_level.map(AnyInt.init) + private var _sql: AnyString? + /** + * SQL expression as defined in the LookML model. The SQL syntax shown here is a representation intended for auditability, and is not neccessarily an exact match for what will ultimately be run in the database. It may contain special LookML syntax or annotations that are not valid SQL. This will be null if the current user does not have the see_lookml permission for the field's model. (read-only) + */ + public var sql: String? { + get { _sql?.value } + set { _sql = newValue.map(AnyString.init) } } -} + /** + * An array of conditions and values that make up a SQL Case expression, as defined in the LookML model. The SQL syntax shown here is a representation intended for auditability, and is not neccessarily an exact match for what will ultimately be run in the database. It may contain special LookML syntax or annotations that are not valid SQL. This will be null if the current user does not have the see_lookml permission for the field's model. (read-only) + */ + public var sql_case: [LookmlModelExploreFieldSqlCase]? -public struct LookmlModelExploreFieldMeasureFilters: SDKModel { + /** + * Array of filter conditions defined for the measure in LookML. (read-only) + */ + public var filters: [LookmlModelExploreFieldMeasureFilters]? - private enum CodingKeys : String, CodingKey { - case _field = "field" - case _condition = "condition" + private var _suggest_dimension: AnyString? + /** + * The name of the dimension to base suggest queries from. (read-only) + */ + public var suggest_dimension: String? { + get { _suggest_dimension?.value } + set { _suggest_dimension = newValue.map(AnyString.init) } } - private var _field: AnyString? + + private var _suggest_explore: AnyString? + /** + * The name of the explore to base suggest queries from. (read-only) + */ + public var suggest_explore: String? { + get { _suggest_explore?.value } + set { _suggest_explore = newValue.map(AnyString.init) } + } + + /** + * Whether or not suggestions are possible for this field. (read-only) + */ + public var suggestable: Bool? + + private var _suggestions: [AnyString]? /** - * Filter field name (read-only) + * If available, a list of suggestions for this field. For most fields, a suggest query is a more appropriate way to get an up-to-date list of suggestions. Or use enumerations to list all the possible values. (read-only) */ - public var field: String? { - get { _field?.value } - set { _field = newValue.map(AnyString.init) } + public var suggestions: [String]? { + get { if let v = _suggestions { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _suggestions = v.map { AnyString.init($0) } } else { _suggestions = nil } } } - private var _condition: AnyString? + private var _tags: [AnyString]? /** - * Filter condition value (read-only) + * An array of arbitrary string tags provided in the model for this field. (read-only) */ - public var condition: String? { - get { _condition?.value } - set { _condition = newValue.map(AnyString.init) } + public var tags: [String]? { + get { if let v = _tags { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _tags = v.map { AnyString.init($0) } } else { _tags = nil } } } - public init(field: String? = nil, condition: String? = nil) { - self._field = field.map(AnyString.init) - self._condition = condition.map(AnyString.init) + private var _type: AnyString? + /** + * The LookML type of the field. (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } -} - -public struct LookmlModelExploreFieldset: SDKModel { /** - * Array of dimensions (read-only) + * 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". (read-only) */ - public var dimensions: [LookmlModelExploreField]? + public var user_attribute_filter_types: [UserAttributeFilterTypes]? + private var _value_format: AnyString? /** - * Array of measures (read-only) + * If specified, the LookML value format string for formatting values of this field. (read-only) */ - public var measures: [LookmlModelExploreField]? + public var value_format: String? { + get { _value_format?.value } + set { _value_format = newValue.map(AnyString.init) } + } + private var _view: AnyString? /** - * Array of filters (read-only) + * The name of the view this field belongs to. (read-only) */ - public var filters: [LookmlModelExploreField]? + public var view: String? { + get { _view?.value } + set { _view = newValue.map(AnyString.init) } + } + private var _view_label: AnyString? /** - * Array of parameters (read-only) + * The human-readable label of the view the field belongs to. (read-only) */ - public var parameters: [LookmlModelExploreField]? - - public init(dimensions: [LookmlModelExploreField]? = nil, measures: [LookmlModelExploreField]? = nil, filters: [LookmlModelExploreField]? = nil, parameters: [LookmlModelExploreField]? = nil) { - self.dimensions = dimensions - self.measures = measures - self.filters = filters - self.parameters = parameters + public var view_label: String? { + get { _view_label?.value } + set { _view_label = newValue.map(AnyString.init) } } -} - -public struct LookmlModelExploreFieldSqlCase: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _value = "value" - case _condition = "condition" - } - private var _value: AnyString? /** - * SQL Case label value (read-only) + * Whether this field was specified in "dynamic_fields" and is not part of the model. (read-only) */ - public var value: String? { - get { _value?.value } - set { _value = newValue.map(AnyString.init) } - } + public var `dynamic`: Bool? - private var _condition: AnyString? /** - * SQL Case condition expression (read-only) + * The name of the starting day of the week. Valid values are: "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday". (read-only) */ - public var condition: String? { - get { _condition?.value } - set { _condition = newValue.map(AnyString.init) } - } + public var week_start_day: WeekStartDay? - public init(value: String? = nil, condition: String? = nil) { - self._value = value.map(AnyString.init) - self._condition = condition.map(AnyString.init) + public init(align: Align? = nil, can_filter: Bool? = nil, category: Category? = nil, default_filter_value: String? = nil, description: String? = nil, dimension_group: 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, 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, map_layer: LookmlModelExploreFieldMapLayer? = nil, measure: Bool? = nil, name: String? = nil, strict_value_format: Bool? = nil, parameter: Bool? = 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, tags: [String]? = nil, type: String? = nil, user_attribute_filter_types: [UserAttributeFilterTypes]? = nil, value_format: String? = nil, view: String? = nil, view_label: String? = nil, `dynamic`: Bool? = nil, week_start_day: WeekStartDay? = nil) { + self.align = align + self.can_filter = can_filter + self.category = category + self._default_filter_value = default_filter_value.map(AnyString.init) + self._description = description.map(AnyString.init) + self._dimension_group = dimension_group.map(AnyString.init) + self.enumerations = enumerations + self._error = error.map(AnyString.init) + self._field_group_label = field_group_label.map(AnyString.init) + self._field_group_variant = field_group_variant.map(AnyString.init) + self.fill_style = fill_style + self._fiscal_month_offset = fiscal_month_offset.map(AnyInt.init) + self.has_allowed_values = has_allowed_values + self.hidden = hidden + self.is_filter = is_filter + self.is_fiscal = is_fiscal + self.is_numeric = is_numeric + self.is_timeframe = is_timeframe + self.can_time_filter = can_time_filter + self.time_interval = time_interval + self._label = label.map(AnyString.init) + self._label_from_parameter = label_from_parameter.map(AnyString.init) + self._label_short = label_short.map(AnyString.init) + self._lookml_link = lookml_link.map(AnyString.init) + self.map_layer = map_layer + self.measure = measure + self._name = name.map(AnyString.init) + self.strict_value_format = strict_value_format + self.parameter = parameter + self.permanent = permanent + self.primary_key = primary_key + self._project_name = project_name.map(AnyString.init) + self.requires_refresh_on_sort = requires_refresh_on_sort + self._scope = scope.map(AnyString.init) + self.sortable = sortable + self._source_file = source_file.map(AnyString.init) + self._source_file_path = source_file_path.map(AnyString.init) + self._sql = sql.map(AnyString.init) + self.sql_case = sql_case + self.filters = filters + self._suggest_dimension = suggest_dimension.map(AnyString.init) + self._suggest_explore = suggest_explore.map(AnyString.init) + self.suggestable = suggestable + if let v = suggestions { _suggestions = v.map { AnyString.init($0) } } else { _suggestions = nil } + if let v = tags { _tags = v.map { AnyString.init($0) } } else { _tags = nil } + self._type = type.map(AnyString.init) + self.user_attribute_filter_types = user_attribute_filter_types + self._value_format = value_format.map(AnyString.init) + self._view = view.map(AnyString.init) + self._view_label = view_label.map(AnyString.init) + self.`dynamic` = `dynamic` + self.week_start_day = week_start_day } } -public struct LookmlModelExploreFieldTimeInterval: SDKModel { +public struct LookmlModelExploreFieldEnumeration: SDKModel { private enum CodingKeys : String, CodingKey { - case name - case _count = "count" + case _label = "label" + case value } + private var _label: AnyString? /** - * The type of time interval this field represents a grouping of. Valid values are: "day", "hour", "minute", "second", "millisecond", "microsecond", "week", "month", "quarter", "year". (read-only) + * Label (read-only) */ - public var name: Name? + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } + } - private var _count: AnyInt? /** - * The number of intervals this field represents a grouping of. (read-only) + * Value (read-only) */ - public var count: Int64? { - get { _count?.value } - set { _count = newValue.map(AnyInt.init) } - } + public var value: AnyCodable? - public init(name: Name? = nil, count: Int64? = nil) { - self.name = name - self._count = count.map(AnyInt.init) + public init(label: String? = nil, value: AnyCodable? = nil) { + self._label = label.map(AnyString.init) + self.value = value } } -public struct LookmlModelExploreJoins: SDKModel { +public struct LookmlModelExploreFieldMapLayer: SDKModel { private enum CodingKeys : String, CodingKey { + case _url = "url" case _name = "name" - case _dependent_fields = "dependent_fields" - case _fields = "fields" - case _foreign_key = "foreign_key" - case _from = "from" - case outer_only - case _relationship = "relationship" - case _required_joins = "required_joins" - case _sql_foreign_key = "sql_foreign_key" - case _sql_on = "sql_on" - case _sql_table_name = "sql_table_name" - case _type = "type" - case _view_label = "view_label" - } - private var _name: AnyString? - /** - * Name of this join (and name of the view to join) (read-only) - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - private var _dependent_fields: [AnyString]? - /** - * Fields referenced by the join (read-only) - */ - public var dependent_fields: [String]? { - get { if let v = _dependent_fields { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _dependent_fields = v.map { AnyString.init($0) } } else { _dependent_fields = nil } } + case _feature_key = "feature_key" + case _property_key = "property_key" + case _property_label_key = "property_label_key" + case _projection = "projection" + case format + case _extents_json_url = "extents_json_url" + case _max_zoom_level = "max_zoom_level" + case _min_zoom_level = "min_zoom_level" } - - private var _fields: [AnyString]? + private var _url: AnyString? /** - * Fields of the joined view to pull into this explore (read-only) + * URL to the map layer resource. (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 } } + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } } - private var _foreign_key: AnyString? + private var _name: AnyString? /** - * Name of the dimension in this explore whose value is in the primary key of the joined view (read-only) + * Name of the map layer, as defined in LookML. (read-only) */ - public var foreign_key: String? { - get { _foreign_key?.value } - set { _foreign_key = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - private var _from: AnyString? + private var _feature_key: AnyString? /** - * Name of view to join (read-only) + * Specifies the name of the TopoJSON object that the map layer references. If not specified, use the first object.. (read-only) */ - public var from: String? { - get { _from?.value } - set { _from = newValue.map(AnyString.init) } + public var feature_key: String? { + get { _feature_key?.value } + set { _feature_key = newValue.map(AnyString.init) } } + private var _property_key: AnyString? /** - * Specifies whether all queries must use an outer join (read-only) - */ - public var outer_only: Bool? - - private var _relationship: AnyString? - /** - * many_to_one, one_to_one, one_to_many, many_to_many (read-only) - */ - public var relationship: String? { - get { _relationship?.value } - set { _relationship = newValue.map(AnyString.init) } + * Selects which property from the TopoJSON data to plot against. TopoJSON supports arbitrary metadata for each region. When null, the first matching property should be used. (read-only) + */ + public var property_key: String? { + get { _property_key?.value } + set { _property_key = newValue.map(AnyString.init) } } - private var _required_joins: [AnyString]? + private var _property_label_key: AnyString? /** - * Names of joins that must always be included in SQL queries (read-only) + * Which property from the TopoJSON data to use to label the region. When null, property_key should be used. (read-only) */ - public var required_joins: [String]? { - get { if let v = _required_joins { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _required_joins = v.map { AnyString.init($0) } } else { _required_joins = nil } } + public var property_label_key: String? { + get { _property_label_key?.value } + set { _property_label_key = newValue.map(AnyString.init) } } - private var _sql_foreign_key: AnyString? + private var _projection: AnyString? /** - * SQL expression that produces a foreign key (read-only) + * The preferred geographic projection of the map layer when displayed in a visualization that supports multiple geographic projections. (read-only) */ - public var sql_foreign_key: String? { - get { _sql_foreign_key?.value } - set { _sql_foreign_key = newValue.map(AnyString.init) } + public var projection: String? { + get { _projection?.value } + set { _projection = newValue.map(AnyString.init) } } - private var _sql_on: AnyString? /** - * SQL ON expression describing the join condition (read-only) + * Specifies the data format of the region information. Valid values are: "topojson", "vector_tile_region". (read-only) */ - public var sql_on: String? { - get { _sql_on?.value } - set { _sql_on = newValue.map(AnyString.init) } - } + public var format: Format? - private var _sql_table_name: AnyString? + private var _extents_json_url: AnyString? /** - * SQL table name to join (read-only) + * Specifies the URL to a JSON file that defines the geographic extents of each region available in the map layer. This data is used to automatically center the map on the available data for visualization purposes. The JSON file must be a JSON object where the keys are the mapping value of the feature (as specified by property_key) and the values are arrays of four numbers representing the west longitude, south latitude, east longitude, and north latitude extents of the region. The object must include a key for every possible value of property_key. (read-only) */ - public var sql_table_name: String? { - get { _sql_table_name?.value } - set { _sql_table_name = newValue.map(AnyString.init) } + public var extents_json_url: String? { + get { _extents_json_url?.value } + set { _extents_json_url = newValue.map(AnyString.init) } } - private var _type: AnyString? + private var _max_zoom_level: AnyInt? /** - * The join type: left_outer, full_outer, inner, or cross (read-only) + * The minimum zoom level that the map layer may be displayed at, for visualizations that support zooming. (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var max_zoom_level: Int64? { + get { _max_zoom_level?.value } + set { _max_zoom_level = newValue.map(AnyInt.init) } } - private var _view_label: AnyString? + private var _min_zoom_level: AnyInt? /** - * Label to display in UI selectors (read-only) + * The maximum zoom level that the map layer may be displayed at, for visualizations that support zooming. (read-only) */ - public var view_label: String? { - get { _view_label?.value } - set { _view_label = newValue.map(AnyString.init) } + public var min_zoom_level: Int64? { + get { _min_zoom_level?.value } + set { _min_zoom_level = newValue.map(AnyInt.init) } } - public init(name: String? = nil, dependent_fields: [String]? = nil, fields: [String]? = nil, foreign_key: String? = nil, from: String? = nil, outer_only: Bool? = nil, relationship: String? = nil, required_joins: [String]? = nil, sql_foreign_key: String? = nil, sql_on: String? = nil, sql_table_name: String? = nil, type: String? = nil, view_label: String? = nil) { + public init(url: String? = nil, name: String? = nil, feature_key: String? = nil, property_key: String? = nil, property_label_key: String? = nil, projection: String? = nil, format: Format? = nil, extents_json_url: String? = nil, max_zoom_level: Int64? = nil, min_zoom_level: Int64? = nil) { + self._url = url.map(AnyString.init) self._name = name.map(AnyString.init) - if let v = dependent_fields { _dependent_fields = v.map { AnyString.init($0) } } else { _dependent_fields = nil } - if let v = fields { _fields = v.map { AnyString.init($0) } } else { _fields = nil } - self._foreign_key = foreign_key.map(AnyString.init) - self._from = from.map(AnyString.init) - self.outer_only = outer_only - self._relationship = relationship.map(AnyString.init) - if let v = required_joins { _required_joins = v.map { AnyString.init($0) } } else { _required_joins = nil } - self._sql_foreign_key = sql_foreign_key.map(AnyString.init) - self._sql_on = sql_on.map(AnyString.init) - self._sql_table_name = sql_table_name.map(AnyString.init) - self._type = type.map(AnyString.init) - self._view_label = view_label.map(AnyString.init) + self._feature_key = feature_key.map(AnyString.init) + self._property_key = property_key.map(AnyString.init) + self._property_label_key = property_label_key.map(AnyString.init) + self._projection = projection.map(AnyString.init) + self.format = format + self._extents_json_url = extents_json_url.map(AnyString.init) + self._max_zoom_level = max_zoom_level.map(AnyInt.init) + self._min_zoom_level = min_zoom_level.map(AnyInt.init) } } -public struct LookmlModelExploreSet: SDKModel { +public struct LookmlModelExploreFieldMeasureFilters: SDKModel { private enum CodingKeys : String, CodingKey { - case _name = "name" - case _value = "value" + case _field = "field" + case _condition = "condition" } - private var _name: AnyString? + private var _field: AnyString? /** - * Name (read-only) + * Filter field name (read-only) */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var field: String? { + get { _field?.value } + set { _field = newValue.map(AnyString.init) } } - private var _value: [AnyString]? + private var _condition: AnyString? /** - * Value set (read-only) + * Filter condition value (read-only) */ - public var value: [String]? { - get { if let v = _value { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _value = v.map { AnyString.init($0) } } else { _value = nil } } + public var condition: String? { + get { _condition?.value } + set { _condition = newValue.map(AnyString.init) } } - public init(name: String? = nil, value: [String]? = nil) { - self._name = name.map(AnyString.init) - if let v = value { _value = v.map { AnyString.init($0) } } else { _value = nil } + public init(field: String? = nil, condition: String? = nil) { + self._field = field.map(AnyString.init) + self._condition = condition.map(AnyString.init) } } -public struct LookmlModelExploreSupportedMeasureType: SDKModel { +public struct LookmlModelExploreFieldset: SDKModel { + /** + * Array of dimensions (read-only) + */ + public var dimensions: [LookmlModelExploreField]? - private enum CodingKeys : String, CodingKey { - case _dimension_type = "dimension_type" - case _measure_types = "measure_types" - } - private var _dimension_type: AnyString? /** - * (read-only) + * Array of measures (read-only) */ - public var dimension_type: String? { - get { _dimension_type?.value } - set { _dimension_type = newValue.map(AnyString.init) } - } + public var measures: [LookmlModelExploreField]? - private var _measure_types: [AnyString]? /** - * (read-only) + * Array of filters (read-only) */ - public var measure_types: [String]? { - get { if let v = _measure_types { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _measure_types = v.map { AnyString.init($0) } } else { _measure_types = nil } } - } + public var filters: [LookmlModelExploreField]? - public init(dimension_type: String? = nil, measure_types: [String]? = nil) { - self._dimension_type = dimension_type.map(AnyString.init) - if let v = measure_types { _measure_types = v.map { AnyString.init($0) } } else { _measure_types = nil } + /** + * Array of parameters (read-only) + */ + public var parameters: [LookmlModelExploreField]? + + public init(dimensions: [LookmlModelExploreField]? = nil, measures: [LookmlModelExploreField]? = nil, filters: [LookmlModelExploreField]? = nil, parameters: [LookmlModelExploreField]? = nil) { + self.dimensions = dimensions + self.measures = measures + self.filters = filters + self.parameters = parameters } } -public struct LookmlModelNavExplore: SDKModel { +public struct LookmlModelExploreFieldSqlCase: SDKModel { private enum CodingKeys : String, CodingKey { - case _name = "name" - case _description = "description" - case _label = "label" - case hidden - case _group_label = "group_label" + case _value = "value" + case _condition = "condition" } - private var _name: AnyString? + private var _value: AnyString? /** - * Name of the explore (read-only) + * SQL Case label value (read-only) */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var value: String? { + get { _value?.value } + set { _value = newValue.map(AnyString.init) } } - private var _description: AnyString? + private var _condition: AnyString? /** - * Description for the explore (read-only) + * SQL Case condition expression (read-only) */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + public var condition: String? { + get { _condition?.value } + set { _condition = newValue.map(AnyString.init) } } - private var _label: AnyString? - /** - * Label for the explore (read-only) - */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } + public init(value: String? = nil, condition: String? = nil) { + self._value = value.map(AnyString.init) + self._condition = condition.map(AnyString.init) } +} + +public struct LookmlModelExploreFieldTimeInterval: SDKModel { + + private enum CodingKeys : String, CodingKey { + case name + case _count = "count" + } /** - * Is this explore marked as hidden (read-only) + * The type of time interval this field represents a grouping of. Valid values are: "day", "hour", "minute", "second", "millisecond", "microsecond", "week", "month", "quarter", "year". (read-only) */ - public var hidden: Bool? + public var name: Name? - private var _group_label: AnyString? + private var _count: AnyInt? /** - * Label used to group explores in the navigation menus (read-only) + * The number of intervals this field represents a grouping of. (read-only) */ - public var group_label: String? { - get { _group_label?.value } - set { _group_label = newValue.map(AnyString.init) } + public var count: Int64? { + get { _count?.value } + set { _count = newValue.map(AnyInt.init) } } - public init(name: String? = nil, description: String? = nil, label: String? = nil, hidden: Bool? = nil, group_label: String? = nil) { - self._name = name.map(AnyString.init) - self._description = description.map(AnyString.init) - self._label = label.map(AnyString.init) - self.hidden = hidden - self._group_label = group_label.map(AnyString.init) + public init(name: Name? = nil, count: Int64? = nil) { + self.name = name + self._count = count.map(AnyInt.init) } } -public struct LookmlTest: SDKModel { +public struct LookmlModelExploreJoins: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _model_name = "model_name" case _name = "name" - case _explore_name = "explore_name" - case _query_url_params = "query_url_params" - case _file = "file" - case _line = "line" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _model_name: AnyString? - /** - * Name of model containing this test. (read-only) - */ - public var model_name: String? { - get { _model_name?.value } - set { _model_name = newValue.map(AnyString.init) } + case _dependent_fields = "dependent_fields" + case _fields = "fields" + case _foreign_key = "foreign_key" + case _from = "from" + case outer_only + case _relationship = "relationship" + case _required_joins = "required_joins" + case _sql_foreign_key = "sql_foreign_key" + case _sql_on = "sql_on" + case _sql_table_name = "sql_table_name" + case _type = "type" + case _view_label = "view_label" } - private var _name: AnyString? /** - * Name of this test. (read-only) + * Name of this join (and name of the view to join) (read-only) */ public var name: String? { get { _name?.value } set { _name = newValue.map(AnyString.init) } } - private var _explore_name: AnyString? + private var _dependent_fields: [AnyString]? /** - * Name of the explore this test runs a query against (read-only) + * Fields referenced by the join (read-only) */ - public var explore_name: String? { - get { _explore_name?.value } - set { _explore_name = newValue.map(AnyString.init) } + public var dependent_fields: [String]? { + get { if let v = _dependent_fields { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _dependent_fields = v.map { AnyString.init($0) } } else { _dependent_fields = nil } } } - private var _query_url_params: AnyString? + private var _fields: [AnyString]? /** - * The url parameters that can be used to reproduce this test's query on an explore. (read-only) + * Fields of the joined view to pull into this explore (read-only) */ - public var query_url_params: String? { - get { _query_url_params?.value } - set { _query_url_params = newValue.map(AnyString.init) } + 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 } } } - private var _file: AnyString? + private var _foreign_key: AnyString? /** - * Name of the LookML file containing this test. (read-only) + * Name of the dimension in this explore whose value is in the primary key of the joined view (read-only) */ - public var file: String? { - get { _file?.value } - set { _file = newValue.map(AnyString.init) } + public var foreign_key: String? { + get { _foreign_key?.value } + set { _foreign_key = newValue.map(AnyString.init) } } - private var _line: AnyInt? + private var _from: AnyString? /** - * Line number of this test in LookML. (read-only) + * Name of view to join (read-only) */ - public var line: Int64? { - get { _line?.value } - set { _line = newValue.map(AnyInt.init) } - } - - public init(can: StringDictionary? = nil, model_name: String? = nil, name: String? = nil, explore_name: String? = nil, query_url_params: String? = nil, file: String? = nil, line: Int64? = nil) { - self.can = can - self._model_name = model_name.map(AnyString.init) - self._name = name.map(AnyString.init) - self._explore_name = explore_name.map(AnyString.init) - self._query_url_params = query_url_params.map(AnyString.init) - self._file = file.map(AnyString.init) - self._line = line.map(AnyInt.init) + public var from: String? { + get { _from?.value } + set { _from = newValue.map(AnyString.init) } } -} - -public struct LookmlTestResult: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _model_name = "model_name" - case _test_name = "test_name" - case _assertions_count = "assertions_count" - case _assertions_failed = "assertions_failed" - case errors - case warnings - case success - } /** - * Operations the current user is able to perform on this object (read-only) + * Specifies whether all queries must use an outer join (read-only) */ - public var can: StringDictionary? + public var outer_only: Bool? - private var _model_name: AnyString? + private var _relationship: AnyString? /** - * Name of model containing this test. (read-only) + * many_to_one, one_to_one, one_to_many, many_to_many (read-only) */ - public var model_name: String? { - get { _model_name?.value } - set { _model_name = newValue.map(AnyString.init) } + public var relationship: String? { + get { _relationship?.value } + set { _relationship = newValue.map(AnyString.init) } } - private var _test_name: AnyString? + private var _required_joins: [AnyString]? /** - * Name of this test. (read-only) + * Names of joins that must always be included in SQL queries (read-only) */ - public var test_name: String? { - get { _test_name?.value } - set { _test_name = newValue.map(AnyString.init) } + public var required_joins: [String]? { + get { if let v = _required_joins { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _required_joins = v.map { AnyString.init($0) } } else { _required_joins = nil } } } - private var _assertions_count: AnyInt? + private var _sql_foreign_key: AnyString? /** - * Number of assertions in this test (read-only) + * SQL expression that produces a foreign key (read-only) */ - public var assertions_count: Int64? { - get { _assertions_count?.value } - set { _assertions_count = newValue.map(AnyInt.init) } + public var sql_foreign_key: String? { + get { _sql_foreign_key?.value } + set { _sql_foreign_key = newValue.map(AnyString.init) } } - private var _assertions_failed: AnyInt? + private var _sql_on: AnyString? /** - * Number of assertions passed in this test (read-only) + * SQL ON expression describing the join condition (read-only) */ - public var assertions_failed: Int64? { - get { _assertions_failed?.value } - set { _assertions_failed = newValue.map(AnyInt.init) } + public var sql_on: String? { + get { _sql_on?.value } + set { _sql_on = newValue.map(AnyString.init) } } + private var _sql_table_name: AnyString? /** - * A list of any errors encountered by the test. (read-only) - */ - public var errors: [ProjectError]? - - /** - * A list of any warnings encountered by the test. (read-only) - */ - public var warnings: [ProjectError]? - - /** - * True if this test passsed without errors. (read-only) + * SQL table name to join (read-only) */ - public var success: Bool? - - public init(can: StringDictionary? = nil, model_name: String? = nil, test_name: String? = nil, assertions_count: Int64? = nil, assertions_failed: Int64? = nil, errors: [ProjectError]? = nil, warnings: [ProjectError]? = nil, success: Bool? = nil) { - self.can = can - self._model_name = model_name.map(AnyString.init) - self._test_name = test_name.map(AnyString.init) - self._assertions_count = assertions_count.map(AnyInt.init) - self._assertions_failed = assertions_failed.map(AnyInt.init) - self.errors = errors - self.warnings = warnings - self.success = success + public var sql_table_name: String? { + get { _sql_table_name?.value } + set { _sql_table_name = newValue.map(AnyString.init) } } -} - -public struct LookModel: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _id = "id" - case _label = "label" - } - private var _id: AnyString? + private var _type: AnyString? /** - * Model Id (read-only) + * The join type: left_outer, full_outer, inner, or cross (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - private var _label: AnyString? + private var _view_label: AnyString? /** - * Model Label (read-only) + * Label to display in UI selectors (read-only) */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } + public var view_label: String? { + get { _view_label?.value } + set { _view_label = newValue.map(AnyString.init) } } - public init(id: String? = nil, label: String? = nil) { - self._id = id.map(AnyString.init) - self._label = label.map(AnyString.init) + public init(name: String? = nil, dependent_fields: [String]? = nil, fields: [String]? = nil, foreign_key: String? = nil, from: String? = nil, outer_only: Bool? = nil, relationship: String? = nil, required_joins: [String]? = nil, sql_foreign_key: String? = nil, sql_on: String? = nil, sql_table_name: String? = nil, type: String? = nil, view_label: String? = nil) { + self._name = name.map(AnyString.init) + if let v = dependent_fields { _dependent_fields = v.map { AnyString.init($0) } } else { _dependent_fields = nil } + if let v = fields { _fields = v.map { AnyString.init($0) } } else { _fields = nil } + self._foreign_key = foreign_key.map(AnyString.init) + self._from = from.map(AnyString.init) + self.outer_only = outer_only + self._relationship = relationship.map(AnyString.init) + if let v = required_joins { _required_joins = v.map { AnyString.init($0) } } else { _required_joins = nil } + self._sql_foreign_key = sql_foreign_key.map(AnyString.init) + self._sql_on = sql_on.map(AnyString.init) + self._sql_table_name = sql_table_name.map(AnyString.init) + self._type = type.map(AnyString.init) + self._view_label = view_label.map(AnyString.init) } } -public struct LookWithDashboards: SDKModel { +public struct LookmlModelExploreSet: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _content_metadata_id = "content_metadata_id" - case _id = "id" - case _title = "title" - case _user_id = "user_id" - case _content_favorite_id = "content_favorite_id" - case created_at - case deleted - case deleted_at - case _deleter_id = "deleter_id" - case _description = "description" - case _embed_url = "embed_url" - case _excel_file_url = "excel_file_url" - case _favorite_count = "favorite_count" - case _google_spreadsheet_formula = "google_spreadsheet_formula" - case _image_embed_url = "image_embed_url" - case is_run_on_load - case last_accessed_at - case _last_updater_id = "last_updater_id" - case last_viewed_at - case model - case `public` - case _public_slug = "public_slug" - case _public_url = "public_url" - case _query_id = "query_id" - case _short_url = "short_url" - case folder - case _folder_id = "folder_id" - case updated_at - case _view_count = "view_count" - case dashboards + case _name = "name" + case _value = "value" } + private var _name: AnyString? /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _content_metadata_id: AnyString? - /** - * Id of content metadata (read-only) + * Name (read-only) */ - public var content_metadata_id: String? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - private var _id: AnyString? + private var _value: [AnyString]? /** - * Unique Id (read-only) + * Value set (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var value: [String]? { + get { if let v = _value { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _value = v.map { AnyString.init($0) } } else { _value = nil } } } - private var _title: AnyString? - /** - * Look Title - */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public init(name: String? = nil, value: [String]? = nil) { + self._name = name.map(AnyString.init) + if let v = value { _value = v.map { AnyString.init($0) } } else { _value = nil } } - private var _user_id: AnyString? +} + +public struct LookmlModelExploreSupportedMeasureType: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _dimension_type = "dimension_type" + case _measure_types = "measure_types" + } + private var _dimension_type: AnyString? /** - * User Id + * (read-only) */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + public var dimension_type: String? { + get { _dimension_type?.value } + set { _dimension_type = newValue.map(AnyString.init) } } - private var _content_favorite_id: AnyString? + private var _measure_types: [AnyString]? /** - * Content Favorite Id (read-only) + * (read-only) */ - public var content_favorite_id: String? { - get { _content_favorite_id?.value } - set { _content_favorite_id = newValue.map(AnyString.init) } + public var measure_types: [String]? { + get { if let v = _measure_types { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _measure_types = v.map { AnyString.init($0) } } else { _measure_types = nil } } } - /** - * Time that the Look was created. (read-only) - */ - public var created_at: Date? + public init(dimension_type: String? = nil, measure_types: [String]? = nil) { + self._dimension_type = dimension_type.map(AnyString.init) + if let v = measure_types { _measure_types = v.map { AnyString.init($0) } } else { _measure_types = nil } + } - /** - * Whether or not a look is 'soft' deleted. - */ - public var deleted: Bool? +} - /** - * Time that the Look was deleted. (read-only) - */ - public var deleted_at: Date? +public struct LookmlModelNavExplore: SDKModel { - private var _deleter_id: AnyString? + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _description = "description" + case _label = "label" + case hidden + case _group_label = "group_label" + case can + } + private var _name: AnyString? /** - * Id of User that deleted the look. (read-only) + * Name of the explore (read-only) */ - public var deleter_id: String? { - get { _deleter_id?.value } - set { _deleter_id = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } private var _description: AnyString? /** - * Description + * Description for the explore (read-only) */ public var description: String? { get { _description?.value } set { _description = newValue.map(AnyString.init) } } - private var _embed_url: AnyString? + private var _label: AnyString? /** - * Embed Url (read-only) + * Label for the explore (read-only) */ - public var embed_url: String? { - get { _embed_url?.value } - set { _embed_url = newValue.map(AnyString.init) } + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } } - private var _excel_file_url: AnyString? /** - * Excel File Url (read-only) + * Is this explore marked as hidden (read-only) */ - public var excel_file_url: String? { - get { _excel_file_url?.value } - set { _excel_file_url = newValue.map(AnyString.init) } + public var hidden: Bool? + + private var _group_label: AnyString? + /** + * Label used to group explores in the navigation menus (read-only) + */ + public var group_label: String? { + get { _group_label?.value } + set { _group_label = newValue.map(AnyString.init) } } - private var _favorite_count: AnyInt? /** - * Number of times favorited (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var favorite_count: Int64? { - get { _favorite_count?.value } - set { _favorite_count = newValue.map(AnyInt.init) } + public var can: StringDictionary? + + public init(name: String? = nil, description: String? = nil, label: String? = nil, hidden: Bool? = nil, group_label: String? = nil, can: StringDictionary? = nil) { + self._name = name.map(AnyString.init) + self._description = description.map(AnyString.init) + self._label = label.map(AnyString.init) + self.hidden = hidden + self._group_label = group_label.map(AnyString.init) + self.can = can } - private var _google_spreadsheet_formula: AnyString? +} + +public struct LookmlTest: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _model_name = "model_name" + case _name = "name" + case _explore_name = "explore_name" + case _query_url_params = "query_url_params" + case _file = "file" + case _line = "line" + } /** - * Google Spreadsheet Formula (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var google_spreadsheet_formula: String? { - get { _google_spreadsheet_formula?.value } - set { _google_spreadsheet_formula = newValue.map(AnyString.init) } + public var can: StringDictionary? + + private var _model_name: AnyString? + /** + * Name of model containing this test. (read-only) + */ + public var model_name: String? { + get { _model_name?.value } + set { _model_name = newValue.map(AnyString.init) } } - private var _image_embed_url: AnyString? + private var _name: AnyString? /** - * Image Embed Url (read-only) + * Name of this test. (read-only) */ - public var image_embed_url: String? { - get { _image_embed_url?.value } - set { _image_embed_url = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } + private var _explore_name: AnyString? /** - * auto-run query when Look viewed + * Name of the explore this test runs a query against (read-only) */ - public var is_run_on_load: Bool? + public var explore_name: String? { + get { _explore_name?.value } + set { _explore_name = newValue.map(AnyString.init) } + } + private var _query_url_params: AnyString? /** - * Time that the Look was last accessed by any user (read-only) + * The url parameters that can be used to reproduce this test's query on an explore. (read-only) */ - public var last_accessed_at: Date? + public var query_url_params: String? { + get { _query_url_params?.value } + set { _query_url_params = newValue.map(AnyString.init) } + } - private var _last_updater_id: AnyString? + private var _file: AnyString? /** - * Id of User that last updated the look. (read-only) + * Name of the LookML file containing this test. (read-only) */ - public var last_updater_id: String? { - get { _last_updater_id?.value } - set { _last_updater_id = newValue.map(AnyString.init) } + public var file: String? { + get { _file?.value } + set { _file = newValue.map(AnyString.init) } } + private var _line: AnyInt? /** - * Time last viewed in the Looker web UI (read-only) + * Line number of this test in LookML. (read-only) */ - public var last_viewed_at: Date? + public var line: Int64? { + get { _line?.value } + set { _line = newValue.map(AnyInt.init) } + } - public var model: LookModel? + public init(can: StringDictionary? = nil, model_name: String? = nil, name: String? = nil, explore_name: String? = nil, query_url_params: String? = nil, file: String? = nil, line: Int64? = nil) { + self.can = can + self._model_name = model_name.map(AnyString.init) + self._name = name.map(AnyString.init) + self._explore_name = explore_name.map(AnyString.init) + self._query_url_params = query_url_params.map(AnyString.init) + self._file = file.map(AnyString.init) + self._line = line.map(AnyInt.init) + } + +} +public struct LookmlTestResult: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _model_name = "model_name" + case _test_name = "test_name" + case _assertions_count = "assertions_count" + case _assertions_failed = "assertions_failed" + case errors + case warnings + case success + } /** - * Is Public + * Operations the current user is able to perform on this object (read-only) */ - public var `public`: Bool? + public var can: StringDictionary? - private var _public_slug: AnyString? + private var _model_name: AnyString? /** - * Public Slug (read-only) + * Name of model containing this test. (read-only) */ - public var public_slug: String? { - get { _public_slug?.value } - set { _public_slug = newValue.map(AnyString.init) } + public var model_name: String? { + get { _model_name?.value } + set { _model_name = newValue.map(AnyString.init) } } - private var _public_url: AnyString? + private var _test_name: AnyString? /** - * Public Url (read-only) + * Name of this test. (read-only) */ - public var public_url: String? { - get { _public_url?.value } - set { _public_url = newValue.map(AnyString.init) } + public var test_name: String? { + get { _test_name?.value } + set { _test_name = newValue.map(AnyString.init) } } - private var _query_id: AnyString? + private var _assertions_count: AnyInt? /** - * Query Id + * Number of assertions in this test (read-only) */ - public var query_id: String? { - get { _query_id?.value } - set { _query_id = newValue.map(AnyString.init) } + public var assertions_count: Int64? { + get { _assertions_count?.value } + set { _assertions_count = newValue.map(AnyInt.init) } } - private var _short_url: AnyString? + private var _assertions_failed: AnyInt? /** - * Short Url (read-only) + * Number of assertions passed in this test (read-only) */ - public var short_url: String? { - get { _short_url?.value } - set { _short_url = newValue.map(AnyString.init) } + public var assertions_failed: Int64? { + get { _assertions_failed?.value } + set { _assertions_failed = newValue.map(AnyInt.init) } } - public var folder: FolderBase? + /** + * A list of any errors encountered by the test. (read-only) + */ + public var errors: [ProjectError]? - private var _folder_id: AnyString? /** - * Folder Id + * A list of any warnings encountered by the test. (read-only) */ - public var folder_id: String? { - get { _folder_id?.value } - set { _folder_id = newValue.map(AnyString.init) } + public var warnings: [ProjectError]? + + /** + * True if this test passsed without errors. (read-only) + */ + public var success: Bool? + + public init(can: StringDictionary? = nil, model_name: String? = nil, test_name: String? = nil, assertions_count: Int64? = nil, assertions_failed: Int64? = nil, errors: [ProjectError]? = nil, warnings: [ProjectError]? = nil, success: Bool? = nil) { + self.can = can + self._model_name = model_name.map(AnyString.init) + self._test_name = test_name.map(AnyString.init) + self._assertions_count = assertions_count.map(AnyInt.init) + self._assertions_failed = assertions_failed.map(AnyInt.init) + self.errors = errors + self.warnings = warnings + self.success = success } - /** - * Time that the Look was updated. (read-only) - */ - public var updated_at: Date? +} - private var _view_count: AnyInt? +public struct LookModel: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _id = "id" + case _label = "label" + } + private var _id: AnyString? /** - * Number of times viewed in the Looker web UI (read-only) + * Model Id (read-only) */ - public var view_count: Int64? { - get { _view_count?.value } - set { _view_count = newValue.map(AnyInt.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } + private var _label: AnyString? /** - * Dashboards (read-only) + * Model Label (read-only) */ - public var dashboards: [DashboardBase]? + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, content_metadata_id: String? = nil, id: String? = nil, title: String? = nil, user_id: String? = nil, content_favorite_id: String? = nil, created_at: Date? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: String? = nil, description: String? = nil, embed_url: String? = nil, excel_file_url: String? = nil, favorite_count: Int64? = nil, google_spreadsheet_formula: String? = nil, image_embed_url: String? = nil, is_run_on_load: Bool? = nil, last_accessed_at: Date? = nil, last_updater_id: String? = nil, last_viewed_at: Date? = nil, model: LookModel? = nil, `public`: Bool? = nil, public_slug: String? = nil, public_url: String? = nil, query_id: String? = nil, short_url: String? = nil, folder: FolderBase? = nil, folder_id: String? = nil, updated_at: Date? = nil, view_count: Int64? = nil, dashboards: [DashboardBase]? = nil) { - self.can = can - self._content_metadata_id = content_metadata_id.map(AnyString.init) + public init(id: String? = nil, label: String? = nil) { self._id = id.map(AnyString.init) - self._title = title.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) - self._content_favorite_id = content_favorite_id.map(AnyString.init) - self.created_at = created_at - self.deleted = deleted - self.deleted_at = deleted_at - self._deleter_id = deleter_id.map(AnyString.init) - self._description = description.map(AnyString.init) - self._embed_url = embed_url.map(AnyString.init) - self._excel_file_url = excel_file_url.map(AnyString.init) - self._favorite_count = favorite_count.map(AnyInt.init) - self._google_spreadsheet_formula = google_spreadsheet_formula.map(AnyString.init) - self._image_embed_url = image_embed_url.map(AnyString.init) - self.is_run_on_load = is_run_on_load - self.last_accessed_at = last_accessed_at - self._last_updater_id = last_updater_id.map(AnyString.init) - self.last_viewed_at = last_viewed_at - self.model = model - self.`public` = `public` - self._public_slug = public_slug.map(AnyString.init) - self._public_url = public_url.map(AnyString.init) - self._query_id = query_id.map(AnyString.init) - self._short_url = short_url.map(AnyString.init) - self.folder = folder - self._folder_id = folder_id.map(AnyString.init) - self.updated_at = updated_at - self._view_count = view_count.map(AnyInt.init) - self.dashboards = dashboards + self._label = label.map(AnyString.init) } } -public struct LookWithQuery: SDKModel { +public struct LookWithDashboards: SDKModel { private enum CodingKeys : String, CodingKey { case can case _content_metadata_id = "content_metadata_id" case _id = "id" case _title = "title" - case _user_id = "user_id" case _content_favorite_id = "content_favorite_id" case created_at case deleted @@ -14300,31 +11170,34 @@ public struct LookWithQuery: SDKModel { case folder case _folder_id = "folder_id" case updated_at + case _user_id = "user_id" case _view_count = "view_count" - case query - case _url = "url" + case user + case _space_id = "space_id" + case space + case dashboards } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _content_metadata_id: AnyString? + private var _content_metadata_id: AnyInt? /** * Id of content metadata (read-only) */ - public var content_metadata_id: String? { + public var content_metadata_id: Int64? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } + set { _content_metadata_id = newValue.map(AnyInt.init) } } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } private var _title: AnyString? @@ -14336,22 +11209,13 @@ public struct LookWithQuery: SDKModel { set { _title = newValue.map(AnyString.init) } } - private var _user_id: AnyString? - /** - * User Id - */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } - } - - private var _content_favorite_id: AnyString? + private var _content_favorite_id: AnyInt? /** * Content Favorite Id (read-only) */ - public var content_favorite_id: String? { + public var content_favorite_id: Int64? { get { _content_favorite_id?.value } - set { _content_favorite_id = newValue.map(AnyString.init) } + set { _content_favorite_id = newValue.map(AnyInt.init) } } /** @@ -14369,13 +11233,13 @@ public struct LookWithQuery: SDKModel { */ public var deleted_at: Date? - private var _deleter_id: AnyString? + private var _deleter_id: AnyInt? /** * Id of User that deleted the look. (read-only) */ - public var deleter_id: String? { + public var deleter_id: Int64? { get { _deleter_id?.value } - set { _deleter_id = newValue.map(AnyString.init) } + set { _deleter_id = newValue.map(AnyInt.init) } } private var _description: AnyString? @@ -14442,13 +11306,13 @@ public struct LookWithQuery: SDKModel { */ public var last_accessed_at: Date? - private var _last_updater_id: AnyString? + private var _last_updater_id: AnyInt? /** * Id of User that last updated the look. (read-only) */ - public var last_updater_id: String? { + public var last_updater_id: Int64? { get { _last_updater_id?.value } - set { _last_updater_id = newValue.map(AnyString.init) } + set { _last_updater_id = newValue.map(AnyInt.init) } } /** @@ -14481,13 +11345,13 @@ public struct LookWithQuery: SDKModel { set { _public_url = newValue.map(AnyString.init) } } - private var _query_id: AnyString? + private var _query_id: AnyInt? /** * Query Id */ - public var query_id: String? { + public var query_id: Int64? { get { _query_id?.value } - set { _query_id = newValue.map(AnyString.init) } + set { _query_id = newValue.map(AnyInt.init) } } private var _short_url: AnyString? @@ -14515,6 +11379,15 @@ public struct LookWithQuery: SDKModel { */ public var updated_at: Date? + private var _user_id: AnyInt? + /** + * User Id + */ + public var user_id: Int64? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyInt.init) } + } + private var _view_count: AnyInt? /** * Number of times viewed in the Looker web UI (read-only) @@ -14524,28 +11397,34 @@ public struct LookWithQuery: SDKModel { set { _view_count = newValue.map(AnyInt.init) } } - public var query: Query? + public var user: UserIdOnly? - private var _url: AnyString? + private var _space_id: AnyString? /** - * Url (read-only) + * Space Id */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } + public var space_id: String? { + get { _space_id?.value } + set { _space_id = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, content_metadata_id: String? = nil, id: String? = nil, title: String? = nil, user_id: String? = nil, content_favorite_id: String? = nil, created_at: Date? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: String? = nil, description: String? = nil, embed_url: String? = nil, excel_file_url: String? = nil, favorite_count: Int64? = nil, google_spreadsheet_formula: String? = nil, image_embed_url: String? = nil, is_run_on_load: Bool? = nil, last_accessed_at: Date? = nil, last_updater_id: String? = nil, last_viewed_at: Date? = nil, model: LookModel? = nil, `public`: Bool? = nil, public_slug: String? = nil, public_url: String? = nil, query_id: String? = nil, short_url: String? = nil, folder: FolderBase? = nil, folder_id: String? = nil, updated_at: Date? = nil, view_count: Int64? = nil, query: Query? = nil, url: String? = nil) { + public var space: SpaceBase? + + /** + * Dashboards (read-only) + */ + public var dashboards: [DashboardBase]? + + public init(can: StringDictionary? = nil, content_metadata_id: Int64? = nil, id: Int64? = nil, title: String? = nil, content_favorite_id: Int64? = nil, created_at: Date? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: Int64? = nil, description: String? = nil, embed_url: String? = nil, excel_file_url: String? = nil, favorite_count: Int64? = nil, google_spreadsheet_formula: String? = nil, image_embed_url: String? = nil, is_run_on_load: Bool? = nil, last_accessed_at: Date? = nil, last_updater_id: Int64? = nil, last_viewed_at: Date? = nil, model: LookModel? = nil, `public`: Bool? = nil, public_slug: String? = nil, public_url: String? = nil, query_id: Int64? = nil, short_url: String? = nil, folder: FolderBase? = nil, folder_id: String? = nil, updated_at: Date? = nil, user_id: Int64? = nil, view_count: Int64? = nil, user: UserIdOnly? = nil, space_id: String? = nil, space: SpaceBase? = nil, dashboards: [DashboardBase]? = nil) { self.can = can - self._content_metadata_id = content_metadata_id.map(AnyString.init) - self._id = id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self._id = id.map(AnyInt.init) self._title = title.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) - self._content_favorite_id = content_favorite_id.map(AnyString.init) + self._content_favorite_id = content_favorite_id.map(AnyInt.init) self.created_at = created_at self.deleted = deleted self.deleted_at = deleted_at - self._deleter_id = deleter_id.map(AnyString.init) + self._deleter_id = deleter_id.map(AnyInt.init) self._description = description.map(AnyString.init) self._embed_url = embed_url.map(AnyString.init) self._excel_file_url = excel_file_url.map(AnyString.init) @@ -14554,572 +11433,587 @@ public struct LookWithQuery: SDKModel { self._image_embed_url = image_embed_url.map(AnyString.init) self.is_run_on_load = is_run_on_load self.last_accessed_at = last_accessed_at - self._last_updater_id = last_updater_id.map(AnyString.init) + self._last_updater_id = last_updater_id.map(AnyInt.init) self.last_viewed_at = last_viewed_at self.model = model self.`public` = `public` self._public_slug = public_slug.map(AnyString.init) self._public_url = public_url.map(AnyString.init) - self._query_id = query_id.map(AnyString.init) + self._query_id = query_id.map(AnyInt.init) self._short_url = short_url.map(AnyString.init) self.folder = folder self._folder_id = folder_id.map(AnyString.init) self.updated_at = updated_at + self._user_id = user_id.map(AnyInt.init) self._view_count = view_count.map(AnyInt.init) - self.query = query - self._url = url.map(AnyString.init) + self.user = user + self._space_id = space_id.map(AnyString.init) + self.space = space + self.dashboards = dashboards } } -public struct Manifest: SDKModel { +public struct LookWithQuery: SDKModel { private enum CodingKeys : String, CodingKey { case can - case _name = "name" - case imports - case localization_settings + case _content_metadata_id = "content_metadata_id" + case _id = "id" + case _title = "title" + case _content_favorite_id = "content_favorite_id" + case created_at + case deleted + case deleted_at + case _deleter_id = "deleter_id" + case _description = "description" + case _embed_url = "embed_url" + case _excel_file_url = "excel_file_url" + case _favorite_count = "favorite_count" + case _google_spreadsheet_formula = "google_spreadsheet_formula" + case _image_embed_url = "image_embed_url" + case is_run_on_load + case last_accessed_at + case _last_updater_id = "last_updater_id" + case last_viewed_at + case model + case `public` + case _public_slug = "public_slug" + case _public_url = "public_url" + case _query_id = "query_id" + case _short_url = "short_url" + case folder + case _folder_id = "folder_id" + case updated_at + case _user_id = "user_id" + case _view_count = "view_count" + case user + case _space_id = "space_id" + case space + case query + case _url = "url" } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _name: AnyString? - /** - * Manifest project name (read-only) - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - + private var _content_metadata_id: AnyInt? /** - * Imports for a project (read-only) + * Id of content metadata (read-only) */ - public var imports: [ImportedProject]? - - public var localization_settings: LocalizationSettings? - - public init(can: StringDictionary? = nil, name: String? = nil, imports: [ImportedProject]? = nil, localization_settings: LocalizationSettings? = nil) { - self.can = can - self._name = name.map(AnyString.init) - self.imports = imports - self.localization_settings = localization_settings + public var content_metadata_id: Int64? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyInt.init) } } -} - -public struct MaterializePDT: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _materialization_id = "materialization_id" - case _resp_text = "resp_text" - } - private var _materialization_id: AnyString? + private var _id: AnyInt? /** - * The ID of the enqueued materialization task (read-only) + * Unique Id (read-only) */ - public var materialization_id: String? { - get { _materialization_id?.value } - set { _materialization_id = newValue.map(AnyString.init) } + public var id: Int64? { + get { _id?.value } + set { _id = newValue.map(AnyInt.init) } } - private var _resp_text: AnyString? + private var _title: AnyString? /** - * Detailed response in text format (read-only) + * Look Title */ - public var resp_text: String? { - get { _resp_text?.value } - set { _resp_text = newValue.map(AnyString.init) } - } - - public init(materialization_id: String? = nil, resp_text: String? = nil) { - self._materialization_id = materialization_id.map(AnyString.init) - self._resp_text = resp_text.map(AnyString.init) + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } -} - -public struct MergeFields: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _field_name = "field_name" - case _source_field_name = "source_field_name" - } - private var _field_name: AnyString? + private var _content_favorite_id: AnyInt? /** - * Field name to map onto in the merged results + * Content Favorite Id (read-only) */ - public var field_name: String? { - get { _field_name?.value } - set { _field_name = newValue.map(AnyString.init) } + public var content_favorite_id: Int64? { + get { _content_favorite_id?.value } + set { _content_favorite_id = newValue.map(AnyInt.init) } } - private var _source_field_name: AnyString? /** - * Field name from the source query + * Time that the Look was created. (read-only) */ - public var source_field_name: String? { - get { _source_field_name?.value } - set { _source_field_name = newValue.map(AnyString.init) } - } - - public init(field_name: String? = nil, source_field_name: String? = nil) { - self._field_name = field_name.map(AnyString.init) - self._source_field_name = source_field_name.map(AnyString.init) - } - -} - -public struct MergeQuery: SDKModel { + public var created_at: Date? - private enum CodingKeys : String, CodingKey { - case can - case _column_limit = "column_limit" - case _dynamic_fields = "dynamic_fields" - case _id = "id" - case _pivots = "pivots" - case _result_maker_id = "result_maker_id" - case _sorts = "sorts" - case source_queries - case total - case vis_config - } /** - * Operations the current user is able to perform on this object (read-only) + * Whether or not a look is 'soft' deleted. */ - public var can: StringDictionary? + public var deleted: Bool? - private var _column_limit: AnyString? /** - * Column Limit + * Time that the Look was deleted. (read-only) */ - public var column_limit: String? { - get { _column_limit?.value } - set { _column_limit = newValue.map(AnyString.init) } + public var deleted_at: Date? + + private var _deleter_id: AnyInt? + /** + * Id of User that deleted the look. (read-only) + */ + public var deleter_id: Int64? { + get { _deleter_id?.value } + set { _deleter_id = newValue.map(AnyInt.init) } } - private var _dynamic_fields: AnyString? + private var _description: AnyString? /** - * Dynamic Fields + * Description */ - public var dynamic_fields: String? { - get { _dynamic_fields?.value } - set { _dynamic_fields = newValue.map(AnyString.init) } + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } } - private var _id: AnyString? + private var _embed_url: AnyString? /** - * Unique Id (read-only) + * Embed Url (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var embed_url: String? { + get { _embed_url?.value } + set { _embed_url = newValue.map(AnyString.init) } } - private var _pivots: [AnyString]? + private var _excel_file_url: AnyString? /** - * Pivots + * Excel File Url (read-only) */ - public var pivots: [String]? { - get { if let v = _pivots { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _pivots = v.map { AnyString.init($0) } } else { _pivots = nil } } + public var excel_file_url: String? { + get { _excel_file_url?.value } + set { _excel_file_url = newValue.map(AnyString.init) } } - private var _result_maker_id: AnyString? + private var _favorite_count: AnyInt? /** - * Unique to get results (read-only) + * Number of times favorited (read-only) */ - public var result_maker_id: String? { - get { _result_maker_id?.value } - set { _result_maker_id = newValue.map(AnyString.init) } + public var favorite_count: Int64? { + get { _favorite_count?.value } + set { _favorite_count = newValue.map(AnyInt.init) } } - private var _sorts: [AnyString]? + private var _google_spreadsheet_formula: AnyString? /** - * Sorts + * Google Spreadsheet Formula (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 } } + public var google_spreadsheet_formula: String? { + get { _google_spreadsheet_formula?.value } + set { _google_spreadsheet_formula = newValue.map(AnyString.init) } } + private var _image_embed_url: AnyString? /** - * Source Queries defining the results to be merged. + * Image Embed Url (read-only) */ - public var source_queries: [MergeQuerySourceQuery]? + public var image_embed_url: String? { + get { _image_embed_url?.value } + set { _image_embed_url = newValue.map(AnyString.init) } + } /** - * Total + * auto-run query when Look viewed */ - public var total: Bool? + public var is_run_on_load: Bool? /** - * Visualization Config + * Time that the Look was last accessed by any user (read-only) */ - public var vis_config: StringDictionary? + public var last_accessed_at: Date? - public init(can: StringDictionary? = nil, column_limit: String? = nil, dynamic_fields: String? = nil, id: String? = nil, pivots: [String]? = nil, result_maker_id: String? = nil, sorts: [String]? = nil, source_queries: [MergeQuerySourceQuery]? = nil, total: Bool? = nil, vis_config: StringDictionary? = nil) { - self.can = can - self._column_limit = column_limit.map(AnyString.init) - self._dynamic_fields = dynamic_fields.map(AnyString.init) - self._id = id.map(AnyString.init) - if let v = pivots { _pivots = v.map { AnyString.init($0) } } else { _pivots = nil } - self._result_maker_id = result_maker_id.map(AnyString.init) - if let v = sorts { _sorts = v.map { AnyString.init($0) } } else { _sorts = nil } - self.source_queries = source_queries - self.total = total - self.vis_config = vis_config + private var _last_updater_id: AnyInt? + /** + * Id of User that last updated the look. (read-only) + */ + public var last_updater_id: Int64? { + get { _last_updater_id?.value } + set { _last_updater_id = newValue.map(AnyInt.init) } } -} + /** + * Time last viewed in the Looker web UI (read-only) + */ + public var last_viewed_at: Date? -public struct MergeQuerySourceQuery: SDKModel { + public var model: LookModel? - private enum CodingKeys : String, CodingKey { - case merge_fields - case _name = "name" - case _query_id = "query_id" - } /** - * An array defining which fields of the source query are mapped onto fields of the merge query + * Is Public */ - public var merge_fields: [MergeFields]? + public var `public`: Bool? - private var _name: AnyString? + private var _public_slug: AnyString? /** - * Display name + * Public Slug (read-only) */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var public_slug: String? { + get { _public_slug?.value } + set { _public_slug = newValue.map(AnyString.init) } } - private var _query_id: AnyString? + private var _public_url: AnyString? /** - * Id of the query to merge + * Public Url (read-only) */ - public var query_id: String? { - get { _query_id?.value } - set { _query_id = newValue.map(AnyString.init) } - } - - public init(merge_fields: [MergeFields]? = nil, name: String? = nil, query_id: String? = nil) { - self.merge_fields = merge_fields - self._name = name.map(AnyString.init) - self._query_id = query_id.map(AnyString.init) + public var public_url: String? { + get { _public_url?.value } + set { _public_url = newValue.map(AnyString.init) } } -} - -public struct MobileFeatureFlags: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _feature_flag_name = "feature_flag_name" - case feature_flag_state - } - private var _feature_flag_name: AnyString? + private var _query_id: AnyInt? /** - * Specifies the name of feature flag. (read-only) + * Query Id */ - public var feature_flag_name: String? { - get { _feature_flag_name?.value } - set { _feature_flag_name = newValue.map(AnyString.init) } + public var query_id: Int64? { + get { _query_id?.value } + set { _query_id = newValue.map(AnyInt.init) } } + private var _short_url: AnyString? /** - * Specifies the state of feature flag (read-only) + * Short Url (read-only) */ - public var feature_flag_state: Bool? - - public init(feature_flag_name: String? = nil, feature_flag_state: Bool? = nil) { - self._feature_flag_name = feature_flag_name.map(AnyString.init) - self.feature_flag_state = feature_flag_state + public var short_url: String? { + get { _short_url?.value } + set { _short_url = newValue.map(AnyString.init) } } -} - -public struct MobilePayload: SDKModel { + public var folder: FolderBase? - private enum CodingKeys : String, CodingKey { - case _title = "title" - case _alert_id = "alert_id" - case _investigative_content_id = "investigative_content_id" - case _dashboard_name = "dashboard_name" - case _dashboard_id = "dashboard_id" - case _query_slug = "query_slug" - } - private var _title: AnyString? + private var _folder_id: AnyString? /** - * Title of the alert (read-only) + * Folder Id */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var folder_id: String? { + get { _folder_id?.value } + set { _folder_id = newValue.map(AnyString.init) } } - private var _alert_id: AnyString /** - * ID of the alert (read-only) + * Time that the Look was updated. (read-only) */ - public var alert_id: String { - get { _alert_id.value } - set { _alert_id = AnyString.init(newValue) } - } + public var updated_at: Date? - private var _investigative_content_id: AnyString? + private var _user_id: AnyInt? /** - * ID of the investigative content (read-only) + * User Id */ - public var investigative_content_id: String? { - get { _investigative_content_id?.value } - set { _investigative_content_id = newValue.map(AnyString.init) } + public var user_id: Int64? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyInt.init) } } - private var _dashboard_name: AnyString? + private var _view_count: AnyInt? /** - * Name of the dashboard on which the alert has been set (read-only) + * Number of times viewed in the Looker web UI (read-only) */ - public var dashboard_name: String? { - get { _dashboard_name?.value } - set { _dashboard_name = newValue.map(AnyString.init) } + public var view_count: Int64? { + get { _view_count?.value } + set { _view_count = newValue.map(AnyInt.init) } } - private var _dashboard_id: AnyString? + public var user: UserIdOnly? + + private var _space_id: AnyString? /** - * ID of the dashboard on which the alert has been set (read-only) + * Space Id */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + public var space_id: String? { + get { _space_id?.value } + set { _space_id = newValue.map(AnyString.init) } } - private var _query_slug: AnyString? + public var space: SpaceBase? + + public var query: Query? + + private var _url: AnyString? /** - * Slug of the query which runs the alert queries. (read-only) + * Url (read-only) */ - public var query_slug: String? { - get { _query_slug?.value } - set { _query_slug = newValue.map(AnyString.init) } + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } } - public init(title: String? = nil, alert_id: String, investigative_content_id: String? = nil, dashboard_name: String? = nil, dashboard_id: String? = nil, query_slug: String? = nil) { + public init(can: StringDictionary? = nil, content_metadata_id: Int64? = nil, id: Int64? = nil, title: String? = nil, content_favorite_id: Int64? = nil, created_at: Date? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: Int64? = nil, description: String? = nil, embed_url: String? = nil, excel_file_url: String? = nil, favorite_count: Int64? = nil, google_spreadsheet_formula: String? = nil, image_embed_url: String? = nil, is_run_on_load: Bool? = nil, last_accessed_at: Date? = nil, last_updater_id: Int64? = nil, last_viewed_at: Date? = nil, model: LookModel? = nil, `public`: Bool? = nil, public_slug: String? = nil, public_url: String? = nil, query_id: Int64? = nil, short_url: String? = nil, folder: FolderBase? = nil, folder_id: String? = nil, updated_at: Date? = nil, user_id: Int64? = nil, view_count: Int64? = nil, user: UserIdOnly? = nil, space_id: String? = nil, space: SpaceBase? = nil, query: Query? = nil, url: String? = nil) { + self.can = can + self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self._id = id.map(AnyInt.init) self._title = title.map(AnyString.init) - self._alert_id = AnyString.init(alert_id) - self._investigative_content_id = investigative_content_id.map(AnyString.init) - self._dashboard_name = dashboard_name.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._query_slug = query_slug.map(AnyString.init) + self._content_favorite_id = content_favorite_id.map(AnyInt.init) + self.created_at = created_at + self.deleted = deleted + self.deleted_at = deleted_at + self._deleter_id = deleter_id.map(AnyInt.init) + self._description = description.map(AnyString.init) + self._embed_url = embed_url.map(AnyString.init) + self._excel_file_url = excel_file_url.map(AnyString.init) + self._favorite_count = favorite_count.map(AnyInt.init) + self._google_spreadsheet_formula = google_spreadsheet_formula.map(AnyString.init) + self._image_embed_url = image_embed_url.map(AnyString.init) + self.is_run_on_load = is_run_on_load + self.last_accessed_at = last_accessed_at + self._last_updater_id = last_updater_id.map(AnyInt.init) + self.last_viewed_at = last_viewed_at + self.model = model + self.`public` = `public` + self._public_slug = public_slug.map(AnyString.init) + self._public_url = public_url.map(AnyString.init) + self._query_id = query_id.map(AnyInt.init) + self._short_url = short_url.map(AnyString.init) + self.folder = folder + self._folder_id = folder_id.map(AnyString.init) + self.updated_at = updated_at + self._user_id = user_id.map(AnyInt.init) + self._view_count = view_count.map(AnyInt.init) + self.user = user + self._space_id = space_id.map(AnyString.init) + self.space = space + self.query = query + self._url = url.map(AnyString.init) } - public init(title: String? = nil, _ alert_id: String, investigative_content_id: String? = nil, dashboard_name: String? = nil, dashboard_id: String? = nil, query_slug: String? = nil) { - self.init(title: title, alert_id: alert_id, investigative_content_id: investigative_content_id, dashboard_name: dashboard_name, dashboard_id: dashboard_id, query_slug: query_slug) +} + +public struct Manifest: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _name = "name" + case imports + case localization_settings } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? -} + private var _name: AnyString? + /** + * Manifest project name (read-only) + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } -public struct MobileSettings: SDKModel { /** - * Specifies whether the force authentication option is enabled for mobile (read-only) + * Imports for a project (read-only) */ - public var mobile_force_authentication: Bool? + public var imports: [ImportedProject]? + public var localization_settings: LocalizationSettings? + + public init(can: StringDictionary? = nil, name: String? = nil, imports: [ImportedProject]? = nil, localization_settings: LocalizationSettings? = nil) { + self.can = can + self._name = name.map(AnyString.init) + self.imports = imports + self.localization_settings = localization_settings + } + +} + +public struct MaterializePDT: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _materialization_id = "materialization_id" + case _resp_text = "resp_text" + } + private var _materialization_id: AnyString? /** - * Specifies whether mobile access for this instance is enabled. (read-only) + * The ID of the enqueued materialization task (read-only) */ - public var mobile_app_integration: Bool? + public var materialization_id: String? { + get { _materialization_id?.value } + set { _materialization_id = newValue.map(AnyString.init) } + } + private var _resp_text: AnyString? /** - * Specifies feature flag and state relevant to mobile. (read-only) + * Detailed response in text format (read-only) */ - public var mobile_feature_flags: [MobileFeatureFlags]? + public var resp_text: String? { + get { _resp_text?.value } + set { _resp_text = newValue.map(AnyString.init) } + } - public init(mobile_force_authentication: Bool? = nil, mobile_app_integration: Bool? = nil, mobile_feature_flags: [MobileFeatureFlags]? = nil) { - self.mobile_force_authentication = mobile_force_authentication - self.mobile_app_integration = mobile_app_integration - self.mobile_feature_flags = mobile_feature_flags + public init(materialization_id: String? = nil, resp_text: String? = nil) { + self._materialization_id = materialization_id.map(AnyString.init) + self._resp_text = resp_text.map(AnyString.init) } } -public struct MobileToken: SDKModel { +public struct MergeFields: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" - case _device_token = "device_token" - case device_type - } - private var _id: AnyString? - /** - * Unique ID. (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + case _field_name = "field_name" + case _source_field_name = "source_field_name" } - - private var _device_token: AnyString + private var _field_name: AnyString? /** - * Specifies the device token + * Field name to map onto in the merged results */ - public var device_token: String { - get { _device_token.value } - set { _device_token = AnyString.init(newValue) } + public var field_name: String? { + get { _field_name?.value } + set { _field_name = newValue.map(AnyString.init) } } + private var _source_field_name: AnyString? /** - * Specifies type of device. Valid values are: "android", "ios". + * Field name from the source query */ - public var device_type: DeviceType - - public init(id: String? = nil, device_token: String, device_type: DeviceType) { - self._id = id.map(AnyString.init) - self._device_token = AnyString.init(device_token) - self.device_type = device_type + public var source_field_name: String? { + get { _source_field_name?.value } + set { _source_field_name = newValue.map(AnyString.init) } } - public init(id: String? = nil, _ device_token: String, _ device_type: DeviceType) { - self.init(id: id, device_token: device_token, device_type: device_type) + public init(field_name: String? = nil, source_field_name: String? = nil) { + self._field_name = field_name.map(AnyString.init) + self._source_field_name = source_field_name.map(AnyString.init) } } -public struct Model: SDKModel { +public struct MergeQuery: SDKModel { private enum CodingKeys : String, CodingKey { - case _connection = "connection" - case _name = "name" - case value_formats + case can + case _column_limit = "column_limit" + case _dynamic_fields = "dynamic_fields" + case _id = "id" + case _pivots = "pivots" + case _result_maker_id = "result_maker_id" + case _sorts = "sorts" + case source_queries + case total + case vis_config } - private var _connection: AnyString? /** - * (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var connection: String? { - get { _connection?.value } - set { _connection = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _name: AnyString? + private var _column_limit: AnyString? /** - * (read-only) + * Column Limit */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var column_limit: String? { + get { _column_limit?.value } + set { _column_limit = newValue.map(AnyString.init) } } + private var _dynamic_fields: AnyString? /** - * Array of named value formats (read-only) + * Dynamic Fields */ - public var value_formats: [ModelNamedValueFormats]? - - public init(connection: String? = nil, name: String? = nil, value_formats: [ModelNamedValueFormats]? = nil) { - self._connection = connection.map(AnyString.init) - self._name = name.map(AnyString.init) - self.value_formats = value_formats + public var dynamic_fields: String? { + get { _dynamic_fields?.value } + set { _dynamic_fields = newValue.map(AnyString.init) } } -} - -public struct ModelFieldSuggestions: SDKModel { + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } - private enum CodingKeys : String, CodingKey { - case _suggestions = "suggestions" - case _error = "error" - case from_cache - case hit_limit - case used_calcite_materialization + private var _pivots: [AnyString]? + /** + * Pivots + */ + public var pivots: [String]? { + get { if let v = _pivots { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _pivots = v.map { AnyString.init($0) } } else { _pivots = nil } } } - private var _suggestions: [AnyString]? + + private var _result_maker_id: AnyInt? /** - * List of suggestions (read-only) + * Unique to get results (read-only) */ - public var suggestions: [String]? { - get { if let v = _suggestions { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _suggestions = v.map { AnyString.init($0) } } else { _suggestions = nil } } + public var result_maker_id: Int64? { + get { _result_maker_id?.value } + set { _result_maker_id = newValue.map(AnyInt.init) } } - private var _error: AnyString? + private var _sorts: [AnyString]? /** - * Error message (read-only) + * Sorts */ - public var error: String? { - get { _error?.value } - set { _error = newValue.map(AnyString.init) } + 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 } } } /** - * True if result came from the cache (read-only) + * Source Queries defining the results to be merged. */ - public var from_cache: Bool? + public var source_queries: [MergeQuerySourceQuery]? /** - * True if this was a hit limit (read-only) + * Total */ - public var hit_limit: Bool? + public var total: Bool? /** - * True if calcite was used (read-only) + * Visualization Config */ - public var used_calcite_materialization: Bool? + public var vis_config: StringDictionary? - public init(suggestions: [String]? = nil, error: String? = nil, from_cache: Bool? = nil, hit_limit: Bool? = nil, used_calcite_materialization: Bool? = nil) { - if let v = suggestions { _suggestions = v.map { AnyString.init($0) } } else { _suggestions = nil } - self._error = error.map(AnyString.init) - self.from_cache = from_cache - self.hit_limit = hit_limit - self.used_calcite_materialization = used_calcite_materialization + public init(can: StringDictionary? = nil, column_limit: String? = nil, dynamic_fields: String? = nil, id: String? = nil, pivots: [String]? = nil, result_maker_id: Int64? = nil, sorts: [String]? = nil, source_queries: [MergeQuerySourceQuery]? = nil, total: Bool? = nil, vis_config: StringDictionary? = nil) { + self.can = can + self._column_limit = column_limit.map(AnyString.init) + self._dynamic_fields = dynamic_fields.map(AnyString.init) + self._id = id.map(AnyString.init) + if let v = pivots { _pivots = v.map { AnyString.init($0) } } else { _pivots = nil } + self._result_maker_id = result_maker_id.map(AnyInt.init) + if let v = sorts { _sorts = v.map { AnyString.init($0) } } else { _sorts = nil } + self.source_queries = source_queries + self.total = total + self.vis_config = vis_config } } -public struct ModelNamedValueFormats: SDKModel { +public struct MergeQuerySourceQuery: SDKModel { private enum CodingKeys : String, CodingKey { - case _format_string = "format_string" - case _label = "label" + case merge_fields case _name = "name" - case strict_value_format - } - private var _format_string: AnyString? - /** - * (read-only) - */ - public var format_string: String? { - get { _format_string?.value } - set { _format_string = newValue.map(AnyString.init) } + case _query_id = "query_id" } - - private var _label: AnyString? /** - * (read-only) + * An array defining which fields of the source query are mapped onto fields of the merge query */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } - } + public var merge_fields: [MergeFields]? private var _name: AnyString? /** - * (read-only) + * Display name */ public var name: String? { get { _name?.value } set { _name = newValue.map(AnyString.init) } } + private var _query_id: AnyInt? /** - * (read-only) + * Id of the query to merge */ - public var strict_value_format: Bool? + public var query_id: Int64? { + get { _query_id?.value } + set { _query_id = newValue.map(AnyInt.init) } + } - public init(format_string: String? = nil, label: String? = nil, name: String? = nil, strict_value_format: Bool? = nil) { - self._format_string = format_string.map(AnyString.init) - self._label = label.map(AnyString.init) + public init(merge_fields: [MergeFields]? = nil, name: String? = nil, query_id: Int64? = nil) { + self.merge_fields = merge_fields self._name = name.map(AnyString.init) - self.strict_value_format = strict_value_format + self._query_id = query_id.map(AnyInt.init) } } @@ -15133,7 +12027,7 @@ public struct ModelSet: SDKModel { case _id = "id" case _models = "models" case _name = "name" - case _url = "url" + case url } /** * Operations the current user is able to perform on this object (read-only) @@ -15150,13 +12044,13 @@ public struct ModelSet: SDKModel { */ public var built_in: Bool? - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } private var _models: [AnyString]? @@ -15174,166 +12068,70 @@ public struct ModelSet: SDKModel { set { _name = newValue.map(AnyString.init) } } - private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(can: StringDictionary? = nil, all_access: Bool? = nil, built_in: Bool? = nil, id: String? = nil, models: [String]? = nil, name: String? = nil, url: String? = nil) { + public init(can: StringDictionary? = nil, all_access: Bool? = nil, built_in: Bool? = nil, id: Int64? = nil, models: [String]? = nil, name: String? = nil, url: URI? = nil) { self.can = can self.all_access = all_access self.built_in = built_in - self._id = id.map(AnyString.init) + self._id = id.map(AnyInt.init) if let v = models { _models = v.map { AnyString.init($0) } } else { _models = nil } - self._name = name.map(AnyString.init) - self._url = url.map(AnyString.init) - } - -} - -public struct ModelsNotValidated: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _project_file_id = "project_file_id" - } - private var _name: AnyString? - /** - * Model name (read-only) - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - private var _project_file_id: AnyString? - /** - * Project file (read-only) - */ - public var project_file_id: String? { - get { _project_file_id?.value } - set { _project_file_id = newValue.map(AnyString.init) } - } - - public init(name: String? = nil, project_file_id: String? = nil) { - self._name = name.map(AnyString.init) - self._project_file_id = project_file_id.map(AnyString.init) - } - -} - -/** - * 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) - */ -public enum Name: String, Codable { - case day = "day" - case hour = "hour" - case minute = "minute" - case second = "second" - case millisecond = "millisecond" - case microsecond = "microsecond" - case week = "week" - case month = "month" - case quarter = "quarter" - case year = "year" -} - -public struct OauthClientApp: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _client_guid = "client_guid" - case _redirect_uri = "redirect_uri" - case _display_name = "display_name" - case _description = "description" - case enabled - case _group_id = "group_id" - case tokens_invalid_before - case activated_users - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _client_guid: AnyString? - /** - * The globally unique id of this application (read-only) - */ - public var client_guid: String? { - get { _client_guid?.value } - set { _client_guid = newValue.map(AnyString.init) } - } - - private var _redirect_uri: AnyString? - /** - * The uri with which this application will receive an auth code by browser redirect. - */ - public var redirect_uri: String? { - get { _redirect_uri?.value } - set { _redirect_uri = newValue.map(AnyString.init) } - } - - private var _display_name: AnyString? - /** - * The application's display name - */ - public var display_name: String? { - get { _display_name?.value } - set { _display_name = newValue.map(AnyString.init) } - } - - private var _description: AnyString? - /** - * A description of the application that will be displayed to users - */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + self._name = name.map(AnyString.init) + self.url = url } - /** - * 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. - */ - public var enabled: Bool? +} - private var _group_id: AnyString? - /** - * 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 - */ - public var group_id: String? { - get { _group_id?.value } - set { _group_id = newValue.map(AnyString.init) } - } +public struct ModelsNotValidated: SDKModel { + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _project_file_id = "project_file_id" + } + private var _name: AnyString? /** - * All auth codes, access tokens, and refresh tokens issued for this application prior to this date-time for ALL USERS will be invalid. (read-only) + * Model name (read-only) */ - public var tokens_invalid_before: Date? + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + private var _project_file_id: AnyString? /** - * All users who have been activated to use this app (read-only) + * Project file (read-only) */ - public var activated_users: [UserPublic]? + public var project_file_id: String? { + get { _project_file_id?.value } + set { _project_file_id = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, client_guid: String? = nil, redirect_uri: String? = nil, display_name: String? = nil, description: String? = nil, enabled: Bool? = nil, group_id: String? = nil, tokens_invalid_before: Date? = nil, activated_users: [UserPublic]? = nil) { - self.can = can - self._client_guid = client_guid.map(AnyString.init) - self._redirect_uri = redirect_uri.map(AnyString.init) - self._display_name = display_name.map(AnyString.init) - self._description = description.map(AnyString.init) - self.enabled = enabled - self._group_id = group_id.map(AnyString.init) - self.tokens_invalid_before = tokens_invalid_before - self.activated_users = activated_users + public init(name: String? = nil, project_file_id: String? = nil) { + self._name = name.map(AnyString.init) + self._project_file_id = project_file_id.map(AnyString.init) } } +/** + * 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) + */ +public enum Name: String, Codable { + case day = "day" + case hour = "hour" + case minute = "minute" + case second = "second" + case millisecond = "millisecond" + case microsecond = "microsecond" + case week = "week" + case month = "month" + case quarter = "quarter" + case year = "year" +} + public struct OIDCConfig: SDKModel { private enum CodingKeys : String, CodingKey { @@ -15341,7 +12139,7 @@ public struct OIDCConfig: SDKModel { case alternate_email_login_allowed case _audience = "audience" case auth_requires_role - case _authorization_endpoint = "authorization_endpoint" + case authorization_endpoint case _default_new_user_group_ids = "default_new_user_group_ids" case default_new_user_groups case _default_new_user_role_ids = "default_new_user_role_ids" @@ -15365,11 +12163,11 @@ public struct OIDCConfig: SDKModel { case _user_attribute_map_last_name = "user_attribute_map_last_name" case user_attributes case user_attributes_with_ids - case _userinfo_endpoint = "userinfo_endpoint" + case userinfo_endpoint case allow_normal_group_membership case allow_roles_from_normal_groups case allow_direct_roles - case _url = "url" + case url } /** * Operations the current user is able to perform on this object (read-only) @@ -15395,22 +12193,18 @@ public struct OIDCConfig: SDKModel { */ public var auth_requires_role: Bool? - private var _authorization_endpoint: AnyString? /** * OpenID Provider Authorization Url */ - public var authorization_endpoint: String? { - get { _authorization_endpoint?.value } - set { _authorization_endpoint = newValue.map(AnyString.init) } - } + public var authorization_endpoint: URI? - private var _default_new_user_group_ids: [AnyString]? + private var _default_new_user_group_ids: [AnyInt]? /** * (Write-Only) Array of ids of groups that will be applied to new users the first time they login via OIDC */ - public var default_new_user_group_ids: [String]? { + public var default_new_user_group_ids: [Int64]? { get { if let v = _default_new_user_group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } } + set { if let v = newValue { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } } } /** @@ -15418,13 +12212,13 @@ public struct OIDCConfig: SDKModel { */ public var default_new_user_groups: [LkGroup]? - private var _default_new_user_role_ids: [AnyString]? + private var _default_new_user_role_ids: [AnyInt]? /** * (Write-Only) Array of ids of roles that will be applied to new users the first time they login via OIDC */ - public var default_new_user_role_ids: [String]? { + public var default_new_user_role_ids: [Int64]? { get { if let v = _default_new_user_role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } } + set { if let v = newValue { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } } } /** @@ -15479,13 +12273,13 @@ public struct OIDCConfig: SDKModel { */ public var modified_at: Date? - private var _modified_by: AnyString? + private var _modified_by: AnyInt? /** * User id of user who last modified this config (read-only) */ - public var modified_by: String? { + public var modified_by: Int64? { get { _modified_by?.value } - set { _modified_by = newValue.map(AnyString.init) } + set { _modified_by = newValue.map(AnyInt.init) } } private var _new_user_migration_types: AnyString? @@ -15575,14 +12369,10 @@ public struct OIDCConfig: SDKModel { */ public var user_attributes_with_ids: [OIDCUserAttributeWrite]? - private var _userinfo_endpoint: AnyString? /** * OpenID Provider User Information Url */ - public var userinfo_endpoint: String? { - get { _userinfo_endpoint?.value } - set { _userinfo_endpoint = newValue.map(AnyString.init) } - } + public var userinfo_endpoint: URI? /** * 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. @@ -15599,24 +12389,20 @@ public struct OIDCConfig: SDKModel { */ public var allow_direct_roles: Bool? - private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(can: StringDictionary? = nil, alternate_email_login_allowed: Bool? = nil, audience: String? = nil, auth_requires_role: Bool? = nil, authorization_endpoint: String? = nil, default_new_user_group_ids: [String]? = nil, default_new_user_groups: [LkGroup]? = nil, default_new_user_role_ids: [String]? = nil, default_new_user_roles: [Role]? = nil, enabled: Bool? = nil, groups: [OIDCGroupRead]? = nil, groups_attribute: String? = nil, groups_with_role_ids: [OIDCGroupWrite]? = nil, identifier: String? = nil, issuer: String? = nil, modified_at: Date? = nil, modified_by: String? = nil, new_user_migration_types: String? = nil, scopes: [String]? = nil, secret: String? = nil, set_roles_from_groups: Bool? = nil, test_slug: String? = nil, token_endpoint: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attributes: [OIDCUserAttributeRead]? = nil, user_attributes_with_ids: [OIDCUserAttributeWrite]? = nil, userinfo_endpoint: String? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil, url: String? = nil) { + public init(can: StringDictionary? = nil, alternate_email_login_allowed: Bool? = nil, audience: String? = nil, auth_requires_role: Bool? = nil, authorization_endpoint: URI? = nil, default_new_user_group_ids: [Int64]? = nil, default_new_user_groups: [LkGroup]? = nil, default_new_user_role_ids: [Int64]? = nil, default_new_user_roles: [Role]? = nil, enabled: Bool? = nil, groups: [OIDCGroupRead]? = nil, groups_attribute: String? = nil, groups_with_role_ids: [OIDCGroupWrite]? = nil, identifier: String? = nil, issuer: String? = nil, modified_at: Date? = nil, modified_by: Int64? = nil, new_user_migration_types: String? = nil, scopes: [String]? = nil, secret: String? = nil, set_roles_from_groups: Bool? = nil, test_slug: String? = nil, token_endpoint: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attributes: [OIDCUserAttributeRead]? = nil, user_attributes_with_ids: [OIDCUserAttributeWrite]? = nil, userinfo_endpoint: URI? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil, url: URI? = nil) { self.can = can self.alternate_email_login_allowed = alternate_email_login_allowed self._audience = audience.map(AnyString.init) self.auth_requires_role = auth_requires_role - self._authorization_endpoint = authorization_endpoint.map(AnyString.init) - if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } + self.authorization_endpoint = authorization_endpoint + if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } self.default_new_user_groups = default_new_user_groups - if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } + if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } self.default_new_user_roles = default_new_user_roles self.enabled = enabled self.groups = groups @@ -15625,7 +12411,7 @@ public struct OIDCConfig: SDKModel { self._identifier = identifier.map(AnyString.init) self._issuer = issuer.map(AnyString.init) self.modified_at = modified_at - self._modified_by = modified_by.map(AnyString.init) + self._modified_by = modified_by.map(AnyInt.init) self._new_user_migration_types = new_user_migration_types.map(AnyString.init) if let v = scopes { _scopes = v.map { AnyString.init($0) } } else { _scopes = nil } self._secret = secret.map(AnyString.init) @@ -15637,11 +12423,11 @@ public struct OIDCConfig: SDKModel { self._user_attribute_map_last_name = user_attribute_map_last_name.map(AnyString.init) self.user_attributes = user_attributes self.user_attributes_with_ids = user_attributes_with_ids - self._userinfo_endpoint = userinfo_endpoint.map(AnyString.init) + self.userinfo_endpoint = userinfo_endpoint self.allow_normal_group_membership = allow_normal_group_membership self.allow_roles_from_normal_groups = allow_roles_from_normal_groups self.allow_direct_roles = allow_direct_roles - self._url = url.map(AnyString.init) + self.url = url } } @@ -15655,22 +12441,22 @@ public struct OIDCGroupRead: SDKModel { case _name = "name" case roles } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } - private var _looker_group_id: AnyString? + private var _looker_group_id: AnyInt? /** * Unique Id of group in Looker (read-only) */ - public var looker_group_id: String? { + public var looker_group_id: Int64? { get { _looker_group_id?.value } - set { _looker_group_id = newValue.map(AnyString.init) } + set { _looker_group_id = newValue.map(AnyInt.init) } } private var _looker_group_name: AnyString? @@ -15696,9 +12482,9 @@ public struct OIDCGroupRead: SDKModel { */ public var roles: [Role]? - public init(id: String? = nil, looker_group_id: String? = nil, looker_group_name: String? = nil, name: String? = nil, roles: [Role]? = nil) { - self._id = id.map(AnyString.init) - self._looker_group_id = looker_group_id.map(AnyString.init) + public init(id: Int64? = nil, looker_group_id: Int64? = nil, looker_group_name: String? = nil, name: String? = nil, roles: [Role]? = nil) { + self._id = id.map(AnyInt.init) + self._looker_group_id = looker_group_id.map(AnyInt.init) self._looker_group_name = looker_group_name.map(AnyString.init) self._name = name.map(AnyString.init) self.roles = roles @@ -15714,23 +12500,24 @@ public struct OIDCGroupWrite: SDKModel { case _looker_group_name = "looker_group_name" case _name = "name" case _role_ids = "role_ids" + case can } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } - private var _looker_group_id: AnyString? + private var _looker_group_id: AnyInt? /** * Unique Id of group in Looker (read-only) */ - public var looker_group_id: String? { + public var looker_group_id: Int64? { get { _looker_group_id?.value } - set { _looker_group_id = newValue.map(AnyString.init) } + set { _looker_group_id = newValue.map(AnyInt.init) } } private var _looker_group_name: AnyString? @@ -15751,21 +12538,27 @@ public struct OIDCGroupWrite: SDKModel { set { _name = newValue.map(AnyString.init) } } - private var _role_ids: [AnyString]? + private var _role_ids: [AnyInt]? /** * Looker Role Ids */ - public var role_ids: [String]? { + public var role_ids: [Int64]? { get { if let v = _role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } } + set { if let v = newValue { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } } } - public init(id: String? = nil, looker_group_id: String? = nil, looker_group_name: String? = nil, name: String? = nil, role_ids: [String]? = nil) { - self._id = id.map(AnyString.init) - self._looker_group_id = looker_group_id.map(AnyString.init) + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + public init(id: Int64? = nil, looker_group_id: Int64? = nil, looker_group_name: String? = nil, name: String? = nil, role_ids: [Int64]? = nil, can: StringDictionary? = nil) { + self._id = id.map(AnyInt.init) + self._looker_group_id = looker_group_id.map(AnyInt.init) self._looker_group_name = looker_group_name.map(AnyString.init) self._name = name.map(AnyString.init) - if let v = role_ids { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } + if let v = role_ids { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } + self.can = can } } @@ -15810,6 +12603,7 @@ public struct OIDCUserAttributeWrite: SDKModel { case _name = "name" case required case _user_attribute_ids = "user_attribute_ids" + case can } private var _name: AnyString? /** @@ -15825,19 +12619,25 @@ public struct OIDCUserAttributeWrite: SDKModel { */ public var required: Bool? - private var _user_attribute_ids: [AnyString]? + private var _user_attribute_ids: [AnyInt]? /** * Looker User Attribute Ids */ - public var user_attribute_ids: [String]? { + public var user_attribute_ids: [Int64]? { get { if let v = _user_attribute_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _user_attribute_ids = v.map { AnyString.init($0) } } else { _user_attribute_ids = nil } } + set { if let v = newValue { _user_attribute_ids = v.map { AnyInt.init($0) } } else { _user_attribute_ids = nil } } } - public init(name: String? = nil, required: Bool? = nil, user_attribute_ids: [String]? = nil) { + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + public init(name: String? = nil, required: Bool? = nil, user_attribute_ids: [Int64]? = nil, can: StringDictionary? = nil) { self._name = name.map(AnyString.init) self.required = required - if let v = user_attribute_ids { _user_attribute_ids = v.map { AnyString.init($0) } } else { _user_attribute_ids = nil } + if let v = user_attribute_ids { _user_attribute_ids = v.map { AnyInt.init($0) } } else { _user_attribute_ids = nil } + self.can = can } } @@ -15899,259 +12699,121 @@ public struct Permission: SDKModel { case _description = "description" } /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _permission: AnyString? - /** - * Permission symbol (read-only) - */ - public var permission: String? { - get { _permission?.value } - set { _permission = newValue.map(AnyString.init) } - } - - private var _parent: AnyString? - /** - * Dependency parent symbol (read-only) - */ - public var parent: String? { - get { _parent?.value } - set { _parent = newValue.map(AnyString.init) } - } - - private var _description: AnyString? - /** - * Description (read-only) - */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, permission: String? = nil, parent: String? = nil, description: String? = nil) { - self.can = can - self._permission = permission.map(AnyString.init) - self._parent = parent.map(AnyString.init) - self._description = description.map(AnyString.init) - } - -} - -public struct PermissionSet: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case all_access - case built_in - case _id = "id" - case _name = "name" - case _permissions = "permissions" - case _url = "url" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - /** - * (read-only) - */ - public var all_access: Bool? - - /** - * (read-only) - */ - public var built_in: Bool? - - private var _id: AnyString? - /** - * Unique Id (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - private var _name: AnyString? - /** - * Name of PermissionSet - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - private var _permissions: [AnyString]? - public var permissions: [String]? { - get { if let v = _permissions { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } } - } - - private var _url: AnyString? - /** - * Link to get this item (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, all_access: Bool? = nil, built_in: Bool? = nil, id: String? = nil, name: String? = nil, permissions: [String]? = nil, url: String? = nil) { - self.can = can - self.all_access = all_access - self.built_in = built_in - self._id = id.map(AnyString.init) - self._name = name.map(AnyString.init) - if let v = permissions { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } - self._url = url.map(AnyString.init) - } - -} - -/** - * Type of permission: "view" or "edit" Valid values are: "view", "edit". (Enum defined in ContentMetaGroupUser) - */ -public enum PermissionType: String, Codable { - case view = "view" - case edit = "edit" -} - -public struct PrivatelabelConfiguration: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _logo_file = "logo_file" - case _logo_url = "logo_url" - case _favicon_file = "favicon_file" - case _favicon_url = "favicon_url" - case _default_title = "default_title" - case show_help_menu - case show_docs - case show_email_sub_options - case allow_looker_mentions - case allow_looker_links - case custom_welcome_email_advanced - case setup_mentions - case alerts_logo - case alerts_links - case folders_mentions - } - private var _logo_file: AnyString? - /** - * Customer logo image. Expected base64 encoded data (write-only) - */ - public var logo_file: String? { - get { _logo_file?.value } - set { _logo_file = newValue.map(AnyString.init) } - } - - private var _logo_url: AnyString? - /** - * Logo image url (read-only) (read-only) - */ - public var logo_url: String? { - get { _logo_url?.value } - set { _logo_url = newValue.map(AnyString.init) } - } - - private var _favicon_file: AnyString? - /** - * Custom favicon image. Expected base64 encoded data (write-only) - */ - public var favicon_file: String? { - get { _favicon_file?.value } - set { _favicon_file = newValue.map(AnyString.init) } - } - - private var _favicon_url: AnyString? - /** - * Favicon image url (read-only) (read-only) - */ - public var favicon_url: String? { - get { _favicon_url?.value } - set { _favicon_url = newValue.map(AnyString.init) } - } - - private var _default_title: AnyString? - /** - * Default page title + * Operations the current user is able to perform on this object (read-only) */ - public var default_title: String? { - get { _default_title?.value } - set { _default_title = newValue.map(AnyString.init) } - } + public var can: StringDictionary? + private var _permission: AnyString? /** - * Boolean to toggle showing help menus + * Permission symbol (read-only) */ - public var show_help_menu: Bool? + public var permission: String? { + get { _permission?.value } + set { _permission = newValue.map(AnyString.init) } + } + private var _parent: AnyString? /** - * Boolean to toggle showing docs + * Dependency parent symbol (read-only) */ - public var show_docs: Bool? + public var parent: String? { + get { _parent?.value } + set { _parent = newValue.map(AnyString.init) } + } + private var _description: AnyString? /** - * Boolean to toggle showing email subscription options. + * Description (read-only) */ - public var show_email_sub_options: Bool? + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } - /** - * Boolean to toggle mentions of Looker in emails - */ - public var allow_looker_mentions: Bool? + public init(can: StringDictionary? = nil, permission: String? = nil, parent: String? = nil, description: String? = nil) { + self.can = can + self._permission = permission.map(AnyString.init) + self._parent = parent.map(AnyString.init) + self._description = description.map(AnyString.init) + } + +} + +public struct PermissionSet: SDKModel { + private enum CodingKeys : String, CodingKey { + case can + case all_access + case built_in + case _id = "id" + case _name = "name" + case _permissions = "permissions" + case url + } /** - * Boolean to toggle links to Looker in emails + * Operations the current user is able to perform on this object (read-only) */ - public var allow_looker_links: Bool? + public var can: StringDictionary? /** - * Allow subject line and email heading customization in customized emails” + * (read-only) */ - public var custom_welcome_email_advanced: Bool? + public var all_access: Bool? /** - * Remove the word Looker from appearing in the account setup page + * (read-only) */ - public var setup_mentions: Bool? + public var built_in: Bool? + private var _id: AnyInt? /** - * Remove Looker logo from Alerts + * Unique Id (read-only) */ - public var alerts_logo: Bool? + public var id: Int64? { + get { _id?.value } + set { _id = newValue.map(AnyInt.init) } + } + private var _name: AnyString? /** - * Remove Looker links from Alerts + * Name of PermissionSet */ - public var alerts_links: Bool? + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + + private var _permissions: [AnyString]? + public var permissions: [String]? { + get { if let v = _permissions { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } } + } /** - * Remove Looker mentions in home folder page when you don’t have any items saved + * Link to get this item (read-only) */ - public var folders_mentions: Bool? + public var url: URI? - public init(logo_file: String? = nil, logo_url: String? = nil, favicon_file: String? = nil, favicon_url: String? = nil, default_title: String? = nil, show_help_menu: Bool? = nil, show_docs: Bool? = nil, show_email_sub_options: Bool? = nil, allow_looker_mentions: Bool? = nil, allow_looker_links: Bool? = nil, custom_welcome_email_advanced: Bool? = nil, setup_mentions: Bool? = nil, alerts_logo: Bool? = nil, alerts_links: Bool? = nil, folders_mentions: Bool? = nil) { - self._logo_file = logo_file.map(AnyString.init) - self._logo_url = logo_url.map(AnyString.init) - self._favicon_file = favicon_file.map(AnyString.init) - self._favicon_url = favicon_url.map(AnyString.init) - self._default_title = default_title.map(AnyString.init) - self.show_help_menu = show_help_menu - self.show_docs = show_docs - self.show_email_sub_options = show_email_sub_options - self.allow_looker_mentions = allow_looker_mentions - self.allow_looker_links = allow_looker_links - self.custom_welcome_email_advanced = custom_welcome_email_advanced - self.setup_mentions = setup_mentions - self.alerts_logo = alerts_logo - self.alerts_links = alerts_links - self.folders_mentions = folders_mentions + public init(can: StringDictionary? = nil, all_access: Bool? = nil, built_in: Bool? = nil, id: Int64? = nil, name: String? = nil, permissions: [String]? = nil, url: URI? = nil) { + self.can = can + self.all_access = all_access + self.built_in = built_in + self._id = id.map(AnyInt.init) + self._name = name.map(AnyString.init) + if let v = permissions { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } + self.url = url } } +/** + * Type of permission: "view" or "edit" Valid values are: "view", "edit". (Enum defined in ContentMetaGroupUser) + */ +public enum PermissionType: String, Codable { + case view = "view" + case edit = "edit" +} + public struct Project: SDKModel { private enum CodingKeys : String, CodingKey { @@ -16176,7 +12838,6 @@ public struct Project: SDKModel { case git_release_mgmt_enabled case allow_warnings case is_example - case _dependency_status = "dependency_status" } /** * Operations the current user is able to perform on this object (read-only) @@ -16331,16 +12992,7 @@ public struct Project: SDKModel { */ public var is_example: Bool? - private var _dependency_status: AnyString? - /** - * Status of dependencies in your manifest & lockfile - */ - public var dependency_status: String? { - get { _dependency_status?.value } - set { _dependency_status = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, id: String? = nil, name: String? = nil, uses_git: Bool? = nil, git_remote_url: String? = nil, git_username: String? = nil, git_password: String? = nil, git_production_branch_name: String? = nil, use_git_cookie_auth: Bool? = nil, git_username_user_attribute: String? = nil, git_password_user_attribute: String? = nil, git_service_name: String? = nil, git_application_server_http_port: Int64? = nil, git_application_server_http_scheme: String? = nil, deploy_secret: String? = nil, unset_deploy_secret: Bool? = nil, pull_request_mode: PullRequestMode? = nil, validation_required: Bool? = nil, git_release_mgmt_enabled: Bool? = nil, allow_warnings: Bool? = nil, is_example: Bool? = nil, dependency_status: String? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, name: String? = nil, uses_git: Bool? = nil, git_remote_url: String? = nil, git_username: String? = nil, git_password: String? = nil, git_production_branch_name: String? = nil, use_git_cookie_auth: Bool? = nil, git_username_user_attribute: String? = nil, git_password_user_attribute: String? = nil, git_service_name: String? = nil, git_application_server_http_port: Int64? = nil, git_application_server_http_scheme: String? = nil, deploy_secret: String? = nil, unset_deploy_secret: Bool? = nil, pull_request_mode: PullRequestMode? = nil, validation_required: Bool? = nil, git_release_mgmt_enabled: Bool? = nil, allow_warnings: Bool? = nil, is_example: Bool? = nil) { self.can = can self._id = id.map(AnyString.init) self._name = name.map(AnyString.init) @@ -16362,7 +13014,6 @@ public struct Project: SDKModel { self.git_release_mgmt_enabled = git_release_mgmt_enabled self.allow_warnings = allow_warnings self.is_example = is_example - self._dependency_status = dependency_status.map(AnyString.init) } } @@ -16807,19 +13458,20 @@ public struct Query: SDKModel { case _url = "url" case _query_timezone = "query_timezone" case has_table_calculations + case runtime } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } private var _model: AnyString @@ -17018,9 +13670,14 @@ public struct Query: SDKModel { */ public var has_table_calculations: Bool? - public init(can: StringDictionary? = nil, id: String? = nil, model: String, view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, slug: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, share_url: String? = nil, expanded_share_url: String? = nil, url: String? = nil, query_timezone: String? = nil, has_table_calculations: Bool? = nil) { + /** + * (DEPRECATED) Runtime (Deprecated) + */ + public var runtime: Double? + + public init(can: StringDictionary? = nil, id: Int64? = nil, model: String, view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, slug: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, share_url: String? = nil, expanded_share_url: String? = nil, url: String? = nil, query_timezone: String? = nil, has_table_calculations: Bool? = nil, runtime: Double? = nil) { self.can = can - self._id = id.map(AnyString.init) + self._id = id.map(AnyInt.init) self._model = AnyString.init(model) self._view = AnyString.init(view) if let v = fields { _fields = v.map { AnyString.init($0) } } else { _fields = nil } @@ -17045,10 +13702,11 @@ public struct Query: SDKModel { self._url = url.map(AnyString.init) self._query_timezone = query_timezone.map(AnyString.init) self.has_table_calculations = has_table_calculations + self.runtime = runtime } - public init(can: StringDictionary? = nil, id: String? = nil, _ model: String, _ view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, slug: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, share_url: String? = nil, expanded_share_url: String? = nil, url: String? = nil, query_timezone: String? = nil, has_table_calculations: Bool? = nil) { - self.init(can: can, id: id, model: model, view: view, fields: fields, pivots: pivots, fill_fields: fill_fields, filters: filters, filter_expression: filter_expression, sorts: sorts, limit: limit, column_limit: column_limit, total: total, row_total: row_total, subtotals: subtotals, vis_config: vis_config, filter_config: filter_config, visible_ui_sections: visible_ui_sections, slug: slug, dynamic_fields: dynamic_fields, client_id: client_id, share_url: share_url, expanded_share_url: expanded_share_url, url: url, query_timezone: query_timezone, has_table_calculations: has_table_calculations) + public init(can: StringDictionary? = nil, id: Int64? = nil, _ model: String, _ view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, slug: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, share_url: String? = nil, expanded_share_url: String? = nil, url: String? = nil, query_timezone: String? = nil, has_table_calculations: Bool? = nil, runtime: Double? = nil) { + self.init(can: can, id: id, model: model, view: view, fields: fields, pivots: pivots, fill_fields: fill_fields, filters: filters, filter_expression: filter_expression, sorts: sorts, limit: limit, column_limit: column_limit, total: total, row_total: row_total, subtotals: subtotals, vis_config: vis_config, filter_config: filter_config, visible_ui_sections: visible_ui_sections, slug: slug, dynamic_fields: dynamic_fields, client_id: client_id, share_url: share_url, expanded_share_url: expanded_share_url, url: url, query_timezone: query_timezone, has_table_calculations: has_table_calculations, runtime: runtime) } } @@ -17090,13 +13748,13 @@ public struct QueryTask: SDKModel { set { _id = newValue.map(AnyString.init) } } - private var _query_id: AnyString? + private var _query_id: AnyInt? /** * Id of query */ - public var query_id: String? { + public var query_id: Int64? { get { _query_id?.value } - set { _query_id = newValue.map(AnyString.init) } + set { _query_id = newValue.map(AnyInt.init) } } public var query: Query? @@ -17181,13 +13839,13 @@ public struct QueryTask: SDKModel { set { _result_source = newValue.map(AnyString.init) } } - private var _look_id: AnyString? + private var _look_id: AnyInt? /** * Id of look associated with query. */ - public var look_id: String? { + public var look_id: Int64? { get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } + set { _look_id = newValue.map(AnyInt.init) } } private var _dashboard_id: AnyString? @@ -17208,10 +13866,10 @@ public struct QueryTask: SDKModel { set { _result_format = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, id: String? = nil, query_id: String? = nil, query: Query? = nil, generate_links: Bool? = nil, force_production: Bool? = nil, path_prefix: String? = nil, cache: Bool? = nil, server_table_calcs: Bool? = nil, cache_only: Bool? = nil, cache_key: String? = nil, status: String? = nil, source: String? = nil, runtime: Float? = nil, rebuild_pdts: Bool? = nil, result_source: String? = nil, look_id: String? = nil, dashboard_id: String? = nil, result_format: String? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, query_id: Int64? = nil, query: Query? = nil, generate_links: Bool? = nil, force_production: Bool? = nil, path_prefix: String? = nil, cache: Bool? = nil, server_table_calcs: Bool? = nil, cache_only: Bool? = nil, cache_key: String? = nil, status: String? = nil, source: String? = nil, runtime: Float? = nil, rebuild_pdts: Bool? = nil, result_source: String? = nil, look_id: Int64? = nil, dashboard_id: String? = nil, result_format: String? = nil) { self.can = can self._id = id.map(AnyString.init) - self._query_id = query_id.map(AnyString.init) + self._query_id = query_id.map(AnyInt.init) self.query = query self.generate_links = generate_links self.force_production = force_production @@ -17225,7 +13883,7 @@ public struct QueryTask: SDKModel { self.runtime = runtime self.rebuild_pdts = rebuild_pdts self._result_source = result_source.map(AnyString.init) - self._look_id = look_id.map(AnyString.init) + self._look_id = look_id.map(AnyInt.init) self._dashboard_id = dashboard_id.map(AnyString.init) self._result_format = result_format.map(AnyString.init) } @@ -17279,13 +13937,13 @@ public struct RenderTask: SDKModel { set { _dashboard_filters = newValue.map(AnyString.init) } } - private var _dashboard_id: AnyString? + private var _dashboard_id: AnyInt? /** * Id of dashboard to render (read-only) */ - public var dashboard_id: String? { + public var dashboard_id: Int64? { get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + set { _dashboard_id = newValue.map(AnyInt.init) } } private var _dashboard_style: AnyString? @@ -17324,13 +13982,13 @@ public struct RenderTask: SDKModel { set { _id = newValue.map(AnyString.init) } } - private var _look_id: AnyString? + private var _look_id: AnyInt? /** * Id of look to render (read-only) */ - public var look_id: String? { + public var look_id: Int64? { get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } + set { _look_id = newValue.map(AnyInt.init) } } private var _lookml_dashboard_id: AnyString? @@ -17342,13 +14000,13 @@ public struct RenderTask: SDKModel { set { _lookml_dashboard_id = newValue.map(AnyString.init) } } - private var _query_id: AnyString? + private var _query_id: AnyInt? /** * Id of query to render (read-only) */ - public var query_id: String? { + public var query_id: Int64? { get { _query_id?.value } - set { _query_id = newValue.map(AnyString.init) } + set { _query_id = newValue.map(AnyInt.init) } } private var _dashboard_element_id: AnyString? @@ -17402,13 +14060,13 @@ public struct RenderTask: SDKModel { set { _status_detail = newValue.map(AnyString.init) } } - private var _user_id: AnyString? + private var _user_id: AnyInt? /** * The user account permissions in which the render task will execute (read-only) */ - public var user_id: String? { + public var user_id: Int64? { get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + set { _user_id = newValue.map(AnyInt.init) } } private var _width: AnyInt? @@ -17420,18 +14078,18 @@ public struct RenderTask: SDKModel { set { _width = newValue.map(AnyInt.init) } } - public init(can: StringDictionary? = nil, created_at: String? = nil, dashboard_filters: String? = nil, dashboard_id: String? = nil, dashboard_style: String? = nil, finalized_at: String? = nil, height: Int64? = nil, id: String? = nil, look_id: String? = nil, lookml_dashboard_id: String? = nil, query_id: String? = nil, dashboard_element_id: String? = nil, query_runtime: Double? = nil, render_runtime: Double? = nil, result_format: String? = nil, runtime: Double? = nil, status: String? = nil, status_detail: String? = nil, user_id: String? = nil, width: Int64? = nil) { + public init(can: StringDictionary? = nil, created_at: String? = nil, dashboard_filters: String? = nil, dashboard_id: Int64? = nil, dashboard_style: String? = nil, finalized_at: String? = nil, height: Int64? = nil, id: String? = nil, look_id: Int64? = nil, lookml_dashboard_id: String? = nil, query_id: Int64? = nil, dashboard_element_id: String? = nil, query_runtime: Double? = nil, render_runtime: Double? = nil, result_format: String? = nil, runtime: Double? = nil, status: String? = nil, status_detail: String? = nil, user_id: Int64? = nil, width: Int64? = nil) { self.can = can self._created_at = created_at.map(AnyString.init) self._dashboard_filters = dashboard_filters.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyInt.init) self._dashboard_style = dashboard_style.map(AnyString.init) self._finalized_at = finalized_at.map(AnyString.init) self._height = height.map(AnyInt.init) self._id = id.map(AnyString.init) - self._look_id = look_id.map(AnyString.init) + self._look_id = look_id.map(AnyInt.init) self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) - self._query_id = query_id.map(AnyString.init) + self._query_id = query_id.map(AnyInt.init) self._dashboard_element_id = dashboard_element_id.map(AnyString.init) self.query_runtime = query_runtime self.render_runtime = render_runtime @@ -17439,7 +14097,7 @@ public struct RenderTask: SDKModel { self.runtime = runtime self._status = status.map(AnyString.init) self._status_detail = status_detail.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) + self._user_id = user_id.map(AnyInt.init) self._width = width.map(AnyInt.init) } @@ -17646,13 +14304,13 @@ public struct ResultMakerWithIdVisConfigAndDynamicFields: SDKModel { case query case vis_config } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id. (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } private var _dynamic_fields: AnyString? @@ -17692,13 +14350,13 @@ public struct ResultMakerWithIdVisConfigAndDynamicFields: SDKModel { */ public var total: Bool? - private var _query_id: AnyString? + private var _query_id: AnyInt? /** * ID of query if this is a query. (read-only) */ - public var query_id: String? { + public var query_id: Int64? { get { _query_id?.value } - set { _query_id = newValue.map(AnyString.init) } + set { _query_id = newValue.map(AnyInt.init) } } private var _sql_query_id: AnyString? @@ -17717,14 +14375,14 @@ public struct ResultMakerWithIdVisConfigAndDynamicFields: SDKModel { */ public var vis_config: StringDictionary? - public init(id: String? = nil, dynamic_fields: String? = nil, filterables: [ResultMakerFilterables]? = nil, sorts: [String]? = nil, merge_result_id: String? = nil, total: Bool? = nil, query_id: String? = nil, sql_query_id: String? = nil, query: Query? = nil, vis_config: StringDictionary? = nil) { - self._id = id.map(AnyString.init) + public init(id: Int64? = nil, dynamic_fields: String? = nil, filterables: [ResultMakerFilterables]? = nil, sorts: [String]? = nil, merge_result_id: String? = nil, total: Bool? = nil, query_id: Int64? = nil, sql_query_id: String? = nil, query: Query? = nil, vis_config: StringDictionary? = nil) { + self._id = id.map(AnyInt.init) self._dynamic_fields = dynamic_fields.map(AnyString.init) self.filterables = filterables if let v = sorts { _sorts = v.map { AnyString.init($0) } } else { _sorts = nil } self._merge_result_id = merge_result_id.map(AnyString.init) self.total = total - self._query_id = query_id.map(AnyString.init) + self._query_id = query_id.map(AnyInt.init) self._sql_query_id = sql_query_id.map(AnyString.init) self.query = query self.vis_config = vis_config @@ -17742,112 +14400,21 @@ public struct Role: SDKModel { case _permission_set_id = "permission_set_id" case model_set case _model_set_id = "model_set_id" - case _url = "url" - case _users_url = "users_url" - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _id: AnyString? - /** - * Unique Id (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - private var _name: AnyString? - /** - * Name of Role - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - public var permission_set: PermissionSet? - - private var _permission_set_id: AnyString? - /** - * (Write-Only) Id of permission set - */ - public var permission_set_id: String? { - get { _permission_set_id?.value } - set { _permission_set_id = newValue.map(AnyString.init) } - } - - public var model_set: ModelSet? - - private var _model_set_id: AnyString? - /** - * (Write-Only) Id of model set - */ - public var model_set_id: String? { - get { _model_set_id?.value } - set { _model_set_id = newValue.map(AnyString.init) } - } - - private var _url: AnyString? - /** - * Link to get this item (read-only) - */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } - - private var _users_url: AnyString? - /** - * Link to get list of users with this role (read-only) - */ - public var users_url: String? { - get { _users_url?.value } - set { _users_url = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, id: String? = nil, name: String? = nil, permission_set: PermissionSet? = nil, permission_set_id: String? = nil, model_set: ModelSet? = nil, model_set_id: String? = nil, url: String? = nil, users_url: String? = nil) { - self.can = can - self._id = id.map(AnyString.init) - self._name = name.map(AnyString.init) - self.permission_set = permission_set - self._permission_set_id = permission_set_id.map(AnyString.init) - self.model_set = model_set - self._model_set_id = model_set_id.map(AnyString.init) - self._url = url.map(AnyString.init) - self._users_url = users_url.map(AnyString.init) - } - -} - -public struct RoleSearch: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _id = "id" - case _name = "name" - case permission_set - case _permission_set_id = "permission_set_id" - case model_set - case _model_set_id = "model_set_id" - case _user_count = "user_count" - case _url = "url" - case _users_url = "users_url" + case url + case users_url } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } private var _name: AnyString? @@ -17861,64 +14428,46 @@ public struct RoleSearch: SDKModel { public var permission_set: PermissionSet? - private var _permission_set_id: AnyString? + private var _permission_set_id: AnyInt? /** * (Write-Only) Id of permission set */ - public var permission_set_id: String? { + public var permission_set_id: Int64? { get { _permission_set_id?.value } - set { _permission_set_id = newValue.map(AnyString.init) } + set { _permission_set_id = newValue.map(AnyInt.init) } } public var model_set: ModelSet? - private var _model_set_id: AnyString? + private var _model_set_id: AnyInt? /** * (Write-Only) Id of model set */ - public var model_set_id: String? { + public var model_set_id: Int64? { get { _model_set_id?.value } - set { _model_set_id = newValue.map(AnyString.init) } - } - - private var _user_count: AnyInt? - /** - * Count of users with this role (read-only) - */ - public var user_count: Int64? { - get { _user_count?.value } - set { _user_count = newValue.map(AnyInt.init) } + set { _model_set_id = newValue.map(AnyInt.init) } } - private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - private var _users_url: AnyString? /** * Link to get list of users with this role (read-only) */ - public var users_url: String? { - get { _users_url?.value } - set { _users_url = newValue.map(AnyString.init) } - } + public var users_url: URI? - public init(can: StringDictionary? = nil, id: String? = nil, name: String? = nil, permission_set: PermissionSet? = nil, permission_set_id: String? = nil, model_set: ModelSet? = nil, model_set_id: String? = nil, user_count: Int64? = nil, url: String? = nil, users_url: String? = nil) { + public init(can: StringDictionary? = nil, id: Int64? = nil, name: String? = nil, permission_set: PermissionSet? = nil, permission_set_id: Int64? = nil, model_set: ModelSet? = nil, model_set_id: Int64? = nil, url: URI? = nil, users_url: URI? = nil) { self.can = can - self._id = id.map(AnyString.init) + self._id = id.map(AnyInt.init) self._name = name.map(AnyString.init) self.permission_set = permission_set - self._permission_set_id = permission_set_id.map(AnyString.init) + self._permission_set_id = permission_set_id.map(AnyInt.init) self.model_set = model_set - self._model_set_id = model_set_id.map(AnyString.init) - self._user_count = user_count.map(AnyInt.init) - self._url = url.map(AnyString.init) - self._users_url = users_url.map(AnyString.init) + self._model_set_id = model_set_id.map(AnyInt.init) + self.url = url + self.users_url = users_url } } @@ -17953,13 +14502,13 @@ public struct RunningQueries: SDKModel { */ public var can: StringDictionary? - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } public var user: UserPublic? @@ -18101,9 +14650,9 @@ public struct RunningQueries: SDKModel { set { _sql = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, id: String? = nil, user: UserPublic? = nil, query: Query? = nil, sql_query: SqlQuery? = nil, look: LookBasic? = nil, created_at: String? = nil, completed_at: String? = nil, query_id: String? = nil, source: String? = nil, node_id: String? = nil, slug: String? = nil, query_task_id: String? = nil, cache_key: String? = nil, connection_name: String? = nil, dialect: String? = nil, connection_id: String? = nil, message: String? = nil, status: String? = nil, runtime: Double? = nil, sql: String? = nil) { + public init(can: StringDictionary? = nil, id: Int64? = nil, user: UserPublic? = nil, query: Query? = nil, sql_query: SqlQuery? = nil, look: LookBasic? = nil, created_at: String? = nil, completed_at: String? = nil, query_id: String? = nil, source: String? = nil, node_id: String? = nil, slug: String? = nil, query_task_id: String? = nil, cache_key: String? = nil, connection_name: String? = nil, dialect: String? = nil, connection_id: String? = nil, message: String? = nil, status: String? = nil, runtime: Double? = nil, sql: String? = nil) { self.can = can - self._id = id.map(AnyString.init) + self._id = id.map(AnyInt.init) self.user = user self.query = query self.sql_query = sql_query @@ -18162,7 +14711,7 @@ public struct SamlConfig: SDKModel { case allow_normal_group_membership case allow_roles_from_normal_groups case allow_direct_roles - case _url = "url" + case url } /** * Operations the current user is able to perform on this object (read-only) @@ -18297,22 +14846,22 @@ public struct SamlConfig: SDKModel { */ public var default_new_user_groups: [LkGroup]? - private var _default_new_user_role_ids: [AnyString]? + private var _default_new_user_role_ids: [AnyInt]? /** * (Write-Only) Array of ids of roles that will be applied to new users the first time they login via Saml */ - public var default_new_user_role_ids: [String]? { + public var default_new_user_role_ids: [Int64]? { get { if let v = _default_new_user_role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } } + set { if let v = newValue { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } } } - private var _default_new_user_group_ids: [AnyString]? + private var _default_new_user_group_ids: [AnyInt]? /** * (Write-Only) Array of ids of groups that will be applied to new users the first time they login via Saml */ - public var default_new_user_group_ids: [String]? { + public var default_new_user_group_ids: [Int64]? { get { if let v = _default_new_user_group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } } + set { if let v = newValue { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } } } /** @@ -18392,16 +14941,12 @@ public struct SamlConfig: SDKModel { */ public var allow_direct_roles: Bool? - private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(can: StringDictionary? = nil, enabled: Bool? = nil, idp_cert: String? = nil, idp_url: String? = nil, idp_issuer: String? = nil, idp_audience: String? = nil, allowed_clock_drift: Int64? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, new_user_migration_types: String? = nil, alternate_email_login_allowed: Bool? = nil, test_slug: String? = nil, modified_at: String? = nil, modified_by: String? = nil, default_new_user_roles: [Role]? = nil, default_new_user_groups: [LkGroup]? = nil, default_new_user_role_ids: [String]? = nil, default_new_user_group_ids: [String]? = nil, set_roles_from_groups: Bool? = nil, groups_attribute: String? = nil, groups: [SamlGroupRead]? = nil, groups_with_role_ids: [SamlGroupWrite]? = nil, auth_requires_role: Bool? = nil, user_attributes: [SamlUserAttributeRead]? = nil, user_attributes_with_ids: [SamlUserAttributeWrite]? = nil, groups_finder_type: String? = nil, groups_member_value: String? = nil, bypass_login_page: Bool? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil, url: String? = nil) { + public init(can: StringDictionary? = nil, enabled: Bool? = nil, idp_cert: String? = nil, idp_url: String? = nil, idp_issuer: String? = nil, idp_audience: String? = nil, allowed_clock_drift: Int64? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, new_user_migration_types: String? = nil, alternate_email_login_allowed: Bool? = nil, test_slug: String? = nil, modified_at: String? = nil, modified_by: String? = nil, default_new_user_roles: [Role]? = nil, default_new_user_groups: [LkGroup]? = nil, default_new_user_role_ids: [Int64]? = nil, default_new_user_group_ids: [Int64]? = nil, set_roles_from_groups: Bool? = nil, groups_attribute: String? = nil, groups: [SamlGroupRead]? = nil, groups_with_role_ids: [SamlGroupWrite]? = nil, auth_requires_role: Bool? = nil, user_attributes: [SamlUserAttributeRead]? = nil, user_attributes_with_ids: [SamlUserAttributeWrite]? = nil, groups_finder_type: String? = nil, groups_member_value: String? = nil, bypass_login_page: Bool? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil, url: URI? = nil) { self.can = can self.enabled = enabled self._idp_cert = idp_cert.map(AnyString.init) @@ -18419,8 +14964,8 @@ public struct SamlConfig: SDKModel { self._modified_by = modified_by.map(AnyString.init) self.default_new_user_roles = default_new_user_roles self.default_new_user_groups = default_new_user_groups - if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } - if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } + if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } + if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } self.set_roles_from_groups = set_roles_from_groups self._groups_attribute = groups_attribute.map(AnyString.init) self.groups = groups @@ -18434,7 +14979,7 @@ public struct SamlConfig: SDKModel { self.allow_normal_group_membership = allow_normal_group_membership self.allow_roles_from_normal_groups = allow_roles_from_normal_groups self.allow_direct_roles = allow_direct_roles - self._url = url.map(AnyString.init) + self.url = url } } @@ -18447,24 +14992,24 @@ public struct SamlGroupRead: SDKModel { case _looker_group_name = "looker_group_name" case _name = "name" case roles - case _url = "url" + case url } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } - private var _looker_group_id: AnyString? + private var _looker_group_id: AnyInt? /** * Unique Id of group in Looker (read-only) */ - public var looker_group_id: String? { + public var looker_group_id: Int64? { get { _looker_group_id?.value } - set { _looker_group_id = newValue.map(AnyString.init) } + set { _looker_group_id = newValue.map(AnyInt.init) } } private var _looker_group_name: AnyString? @@ -18490,22 +15035,18 @@ public struct SamlGroupRead: SDKModel { */ public var roles: [Role]? - private var _url: AnyString? /** * Link to saml config (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(id: String? = nil, looker_group_id: String? = nil, looker_group_name: String? = nil, name: String? = nil, roles: [Role]? = nil, url: String? = nil) { - self._id = id.map(AnyString.init) - self._looker_group_id = looker_group_id.map(AnyString.init) + public init(id: Int64? = nil, looker_group_id: Int64? = nil, looker_group_name: String? = nil, name: String? = nil, roles: [Role]? = nil, url: URI? = nil) { + self._id = id.map(AnyInt.init) + self._looker_group_id = looker_group_id.map(AnyInt.init) self._looker_group_name = looker_group_name.map(AnyString.init) self._name = name.map(AnyString.init) self.roles = roles - self._url = url.map(AnyString.init) + self.url = url } } @@ -18518,24 +15059,24 @@ public struct SamlGroupWrite: SDKModel { case _looker_group_name = "looker_group_name" case _name = "name" case _role_ids = "role_ids" - case _url = "url" + case url } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } - private var _looker_group_id: AnyString? + private var _looker_group_id: AnyInt? /** * Unique Id of group in Looker (read-only) */ - public var looker_group_id: String? { + public var looker_group_id: Int64? { get { _looker_group_id?.value } - set { _looker_group_id = newValue.map(AnyString.init) } + set { _looker_group_id = newValue.map(AnyInt.init) } } private var _looker_group_name: AnyString? @@ -18556,31 +15097,27 @@ public struct SamlGroupWrite: SDKModel { set { _name = newValue.map(AnyString.init) } } - private var _role_ids: [AnyString]? + private var _role_ids: [AnyInt]? /** * Looker Role Ids */ - public var role_ids: [String]? { + public var role_ids: [Int64]? { get { if let v = _role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } } + set { if let v = newValue { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } } } - private var _url: AnyString? /** * Link to saml config (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(id: String? = nil, looker_group_id: String? = nil, looker_group_name: String? = nil, name: String? = nil, role_ids: [String]? = nil, url: String? = nil) { - self._id = id.map(AnyString.init) - self._looker_group_id = looker_group_id.map(AnyString.init) + public init(id: Int64? = nil, looker_group_id: Int64? = nil, looker_group_name: String? = nil, name: String? = nil, role_ids: [Int64]? = nil, url: URI? = nil) { + self._id = id.map(AnyInt.init) + self._looker_group_id = looker_group_id.map(AnyInt.init) self._looker_group_name = looker_group_name.map(AnyString.init) self._name = name.map(AnyString.init) - if let v = role_ids { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } - self._url = url.map(AnyString.init) + if let v = role_ids { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } + self.url = url } } @@ -18640,7 +15177,7 @@ public struct SamlUserAttributeRead: SDKModel { case _name = "name" case required case user_attributes - case _url = "url" + case url } private var _name: AnyString? /** @@ -18661,20 +15198,16 @@ public struct SamlUserAttributeRead: SDKModel { */ public var user_attributes: [UserAttribute]? - private var _url: AnyString? /** * Link to saml config (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(name: String? = nil, required: Bool? = nil, user_attributes: [UserAttribute]? = nil, url: String? = nil) { + public init(name: String? = nil, required: Bool? = nil, user_attributes: [UserAttribute]? = nil, url: URI? = nil) { self._name = name.map(AnyString.init) self.required = required self.user_attributes = user_attributes - self._url = url.map(AnyString.init) + self.url = url } } @@ -18685,7 +15218,7 @@ public struct SamlUserAttributeWrite: SDKModel { case _name = "name" case required case _user_attribute_ids = "user_attribute_ids" - case _url = "url" + case url } private var _name: AnyString? /** @@ -18701,29 +15234,25 @@ public struct SamlUserAttributeWrite: SDKModel { */ public var required: Bool? - private var _user_attribute_ids: [AnyString]? + private var _user_attribute_ids: [AnyInt]? /** * Looker User Attribute Ids */ - public var user_attribute_ids: [String]? { + public var user_attribute_ids: [Int64]? { get { if let v = _user_attribute_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _user_attribute_ids = v.map { AnyString.init($0) } } else { _user_attribute_ids = nil } } + set { if let v = newValue { _user_attribute_ids = v.map { AnyInt.init($0) } } else { _user_attribute_ids = nil } } } - private var _url: AnyString? /** * Link to saml config (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(name: String? = nil, required: Bool? = nil, user_attribute_ids: [String]? = nil, url: String? = nil) { + public init(name: String? = nil, required: Bool? = nil, user_attribute_ids: [Int64]? = nil, url: URI? = nil) { self._name = name.map(AnyString.init) self.required = required - if let v = user_attribute_ids { _user_attribute_ids = v.map { AnyString.init($0) } } else { _user_attribute_ids = nil } - self._url = url.map(AnyString.init) + if let v = user_attribute_ids { _user_attribute_ids = v.map { AnyInt.init($0) } } else { _user_attribute_ids = nil } + self.url = url } } @@ -18779,13 +15308,13 @@ public struct ScheduledPlan: SDKModel { set { _name = newValue.map(AnyString.init) } } - private var _user_id: AnyString? + private var _user_id: AnyInt? /** * User Id which owns this scheduled plan */ - public var user_id: String? { + public var user_id: Int64? { get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + set { _user_id = newValue.map(AnyInt.init) } } /** @@ -18798,22 +15327,22 @@ public struct ScheduledPlan: SDKModel { */ public var enabled: Bool? - private var _look_id: AnyString? + private var _look_id: AnyInt? /** * Id of a look */ - public var look_id: String? { + public var look_id: Int64? { get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } + set { _look_id = newValue.map(AnyInt.init) } } - private var _dashboard_id: AnyString? + private var _dashboard_id: AnyInt? /** * Id of a dashboard */ - public var dashboard_id: String? { + public var dashboard_id: Int64? { get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + set { _dashboard_id = newValue.map(AnyInt.init) } } private var _lookml_dashboard_id: AnyString? @@ -18988,13 +15517,13 @@ public struct ScheduledPlan: SDKModel { set { _inline_table_width = newValue.map(AnyInt.init) } } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } /** @@ -19033,13 +15562,13 @@ 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, query_id: 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, inline_table_width: Int64? = 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: Int64? = nil, run_as_recipient: Bool? = nil, enabled: Bool? = nil, look_id: Int64? = nil, dashboard_id: Int64? = 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, query_id: 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, inline_table_width: Int64? = nil, id: Int64? = 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._user_id = user_id.map(AnyInt.init) self.run_as_recipient = run_as_recipient self.enabled = enabled - self._look_id = look_id.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) + self._look_id = look_id.map(AnyInt.init) + self._dashboard_id = dashboard_id.map(AnyInt.init) self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) self._filters_string = filters_string.map(AnyString.init) self._dashboard_filters = dashboard_filters.map(AnyString.init) @@ -19064,7 +15593,7 @@ public struct ScheduledPlan: SDKModel { self._color_theme = color_theme.map(AnyString.init) self.long_tables = long_tables self._inline_table_width = inline_table_width.map(AnyInt.init) - self._id = id.map(AnyString.init) + self._id = id.map(AnyInt.init) self.created_at = created_at self.updated_at = updated_at self._title = title.map(AnyString.init) @@ -19079,421 +15608,121 @@ public struct ScheduledPlan: SDKModel { public struct ScheduledPlanDestination: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" - case _scheduled_plan_id = "scheduled_plan_id" - case _format = "format" - case apply_formatting - case apply_vis - case _address = "address" - case looker_recipient - case _type = "type" - case _parameters = "parameters" - case _secret_parameters = "secret_parameters" - case _message = "message" - } - private var _id: AnyString? - /** - * Unique Id (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - private var _scheduled_plan_id: AnyString? - /** - * Id of a scheduled plan you own - */ - public var scheduled_plan_id: String? { - get { _scheduled_plan_id?.value } - set { _scheduled_plan_id = newValue.map(AnyString.init) } - } - - private var _format: AnyString? - /** - * 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" - */ - public var format: String? { - get { _format?.value } - set { _format = newValue.map(AnyString.init) } - } - - /** - * Are values formatted? (containing currency symbols, digit separators, etc. - */ - public var apply_formatting: Bool? - - /** - * Whether visualization options are applied to the results. - */ - public var apply_vis: Bool? - - private var _address: AnyString? - /** - * 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/'. - */ - public var address: String? { - get { _address?.value } - set { _address = newValue.map(AnyString.init) } - } - - /** - * Whether the recipient is a Looker user on the current instance (only applicable for email recipients) (read-only) - */ - public var looker_recipient: Bool? - - private var _type: AnyString? - /** - * Type of the address ('email', 'webhook', 's3', or 'sftp') - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } - - private var _parameters: AnyString? - /** - * 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. - */ - public var parameters: String? { - get { _parameters?.value } - set { _parameters = newValue.map(AnyString.init) } - } - - private var _secret_parameters: AnyString? - /** - * (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. - */ - public var secret_parameters: String? { - get { _secret_parameters?.value } - set { _secret_parameters = newValue.map(AnyString.init) } - } - - private var _message: AnyString? - /** - * Optional message to be included in scheduled emails - */ - public var message: String? { - get { _message?.value } - set { _message = newValue.map(AnyString.init) } - } - - public init(id: String? = nil, scheduled_plan_id: String? = nil, format: String? = nil, apply_formatting: Bool? = nil, apply_vis: Bool? = nil, address: String? = nil, looker_recipient: Bool? = nil, type: String? = nil, parameters: String? = nil, secret_parameters: String? = nil, message: String? = nil) { - self._id = id.map(AnyString.init) - self._scheduled_plan_id = scheduled_plan_id.map(AnyString.init) - self._format = format.map(AnyString.init) - self.apply_formatting = apply_formatting - self.apply_vis = apply_vis - self._address = address.map(AnyString.init) - self.looker_recipient = looker_recipient - self._type = type.map(AnyString.init) - self._parameters = parameters.map(AnyString.init) - self._secret_parameters = secret_parameters.map(AnyString.init) - self._message = message.map(AnyString.init) - } - -} - -public struct Schema: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case is_default - } - private var _name: AnyString? - /** - * Schema name (read-only) - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - /** - * True if this is the default schema (read-only) - */ - public var is_default: Bool? - - public init(name: String? = nil, is_default: Bool? = nil) { - self._name = name.map(AnyString.init) - self.is_default = is_default - } - -} - -public struct SchemaColumn: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _sql_escaped_name = "sql_escaped_name" - case _schema_name = "schema_name" - case _data_type_database = "data_type_database" - case _data_type = "data_type" - case _data_type_looker = "data_type_looker" - case _description = "description" - case _column_size = "column_size" - case snippets - } - private var _name: AnyString? - /** - * Schema item name (read-only) - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - private var _sql_escaped_name: AnyString? - /** - * Full name of item (read-only) - */ - public var sql_escaped_name: String? { - get { _sql_escaped_name?.value } - set { _sql_escaped_name = newValue.map(AnyString.init) } - } - - private var _schema_name: AnyString? - /** - * Name of schema (read-only) - */ - public var schema_name: String? { - get { _schema_name?.value } - set { _schema_name = newValue.map(AnyString.init) } - } - - private var _data_type_database: AnyString? - /** - * SQL dialect data type (read-only) - */ - public var data_type_database: String? { - get { _data_type_database?.value } - set { _data_type_database = newValue.map(AnyString.init) } - } - - private var _data_type: AnyString? - /** - * Data type (read-only) - */ - public var data_type: String? { - get { _data_type?.value } - set { _data_type = newValue.map(AnyString.init) } - } - - private var _data_type_looker: AnyString? - /** - * Looker data type (read-only) - */ - public var data_type_looker: String? { - get { _data_type_looker?.value } - set { _data_type_looker = newValue.map(AnyString.init) } - } - - private var _description: AnyString? - /** - * SQL data type (read-only) - */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } - } - - private var _column_size: AnyInt? - /** - * Column data size (read-only) - */ - public var column_size: Int64? { - get { _column_size?.value } - set { _column_size = newValue.map(AnyInt.init) } - } - - /** - * SQL Runner snippets for this connection (read-only) - */ - public var snippets: [Snippet]? - - public init(name: String? = nil, sql_escaped_name: String? = nil, schema_name: String? = nil, data_type_database: String? = nil, data_type: String? = nil, data_type_looker: String? = nil, description: String? = nil, column_size: Int64? = nil, snippets: [Snippet]? = nil) { - self._name = name.map(AnyString.init) - self._sql_escaped_name = sql_escaped_name.map(AnyString.init) - self._schema_name = schema_name.map(AnyString.init) - self._data_type_database = data_type_database.map(AnyString.init) - self._data_type = data_type.map(AnyString.init) - self._data_type_looker = data_type_looker.map(AnyString.init) - self._description = description.map(AnyString.init) - self._column_size = column_size.map(AnyInt.init) - self.snippets = snippets - } - -} - -public struct SchemaColumns: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _sql_escaped_name = "sql_escaped_name" - case _schema_name = "schema_name" - case columns + case _id = "id" + case _scheduled_plan_id = "scheduled_plan_id" + case _format = "format" + case apply_formatting + case apply_vis + case _address = "address" + case looker_recipient + case _type = "type" + case _parameters = "parameters" + case _secret_parameters = "secret_parameters" + case _message = "message" } - private var _name: AnyString? + private var _id: AnyInt? /** - * Schema item name (read-only) + * Unique Id (read-only) */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var id: Int64? { + get { _id?.value } + set { _id = newValue.map(AnyInt.init) } } - private var _sql_escaped_name: AnyString? + private var _scheduled_plan_id: AnyInt? /** - * Full name of item (read-only) + * Id of a scheduled plan you own */ - public var sql_escaped_name: String? { - get { _sql_escaped_name?.value } - set { _sql_escaped_name = newValue.map(AnyString.init) } + public var scheduled_plan_id: Int64? { + get { _scheduled_plan_id?.value } + set { _scheduled_plan_id = newValue.map(AnyInt.init) } } - private var _schema_name: AnyString? + private var _format: AnyString? /** - * Name of schema (read-only) + * 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" */ - public var schema_name: String? { - get { _schema_name?.value } - set { _schema_name = newValue.map(AnyString.init) } + public var format: String? { + get { _format?.value } + set { _format = newValue.map(AnyString.init) } } /** - * Columns for this schema (read-only) + * Are values formatted? (containing currency symbols, digit separators, etc. */ - public var columns: [SchemaColumn]? - - public init(name: String? = nil, sql_escaped_name: String? = nil, schema_name: String? = nil, columns: [SchemaColumn]? = nil) { - self._name = name.map(AnyString.init) - self._sql_escaped_name = sql_escaped_name.map(AnyString.init) - self._schema_name = schema_name.map(AnyString.init) - self.columns = columns - } - -} - -public struct SchemaTable: SDKModel { + public var apply_formatting: Bool? - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _sql_escaped_name = "sql_escaped_name" - case _schema_name = "schema_name" - case _rows = "rows" - case _external = "external" - case snippets - } - private var _name: AnyString? /** - * Schema item name (read-only) + * Whether visualization options are applied to the results. */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } + public var apply_vis: Bool? - private var _sql_escaped_name: AnyString? + private var _address: AnyString? /** - * Full name of item (read-only) + * 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/'. */ - public var sql_escaped_name: String? { - get { _sql_escaped_name?.value } - set { _sql_escaped_name = newValue.map(AnyString.init) } + public var address: String? { + get { _address?.value } + set { _address = newValue.map(AnyString.init) } } - private var _schema_name: AnyString? /** - * Name of schema (read-only) + * Whether the recipient is a Looker user on the current instance (only applicable for email recipients) (read-only) */ - public var schema_name: String? { - get { _schema_name?.value } - set { _schema_name = newValue.map(AnyString.init) } - } + public var looker_recipient: Bool? - private var _rows: AnyInt? + private var _type: AnyString? /** - * Number of data rows (read-only) + * Type of the address ('email', 'webhook', 's3', or 'sftp') */ - public var rows: Int64? { - get { _rows?.value } - set { _rows = newValue.map(AnyInt.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - private var _external: AnyString? + private var _parameters: AnyString? /** - * External reference??? (read-only) + * 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. */ - public var external: String? { - get { _external?.value } - set { _external = newValue.map(AnyString.init) } + public var parameters: String? { + get { _parameters?.value } + set { _parameters = newValue.map(AnyString.init) } } + private var _secret_parameters: AnyString? /** - * SQL Runner snippets for connection (read-only) + * (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. */ - public var snippets: [Snippet]? - - public init(name: String? = nil, sql_escaped_name: String? = nil, schema_name: String? = nil, rows: Int64? = nil, external: String? = nil, snippets: [Snippet]? = nil) { - self._name = name.map(AnyString.init) - self._sql_escaped_name = sql_escaped_name.map(AnyString.init) - self._schema_name = schema_name.map(AnyString.init) - self._rows = rows.map(AnyInt.init) - self._external = external.map(AnyString.init) - self.snippets = snippets + public var secret_parameters: String? { + get { _secret_parameters?.value } + set { _secret_parameters = newValue.map(AnyString.init) } } -} - -public struct SchemaTables: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case is_default - case tables - case table_limit_hit - } - private var _name: AnyString? + private var _message: AnyString? /** - * Schema name (read-only) + * Optional message to be included in scheduled emails */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var message: String? { + get { _message?.value } + set { _message = newValue.map(AnyString.init) } } - /** - * True if this is the default schema (read-only) - */ - public var is_default: Bool? - - /** - * Tables for this schema (read-only) - */ - public var tables: [SchemaTable]? - - /** - * True if the table limit was hit while retrieving tables in this schema (read-only) - */ - public var table_limit_hit: Bool? - - public init(name: String? = nil, is_default: Bool? = nil, tables: [SchemaTable]? = nil, table_limit_hit: Bool? = nil) { - self._name = name.map(AnyString.init) - self.is_default = is_default - self.tables = tables - self.table_limit_hit = table_limit_hit + public init(id: Int64? = nil, scheduled_plan_id: Int64? = nil, format: String? = nil, apply_formatting: Bool? = nil, apply_vis: Bool? = nil, address: String? = nil, looker_recipient: Bool? = nil, type: String? = nil, parameters: String? = nil, secret_parameters: String? = nil, message: String? = nil) { + self._id = id.map(AnyInt.init) + self._scheduled_plan_id = scheduled_plan_id.map(AnyInt.init) + self._format = format.map(AnyString.init) + self.apply_formatting = apply_formatting + self.apply_vis = apply_vis + self._address = address.map(AnyString.init) + self.looker_recipient = looker_recipient + self._type = type.map(AnyString.init) + self._parameters = parameters.map(AnyString.init) + self._secret_parameters = secret_parameters.map(AnyString.init) + self._message = message.map(AnyString.init) } } -/** - * Field to distinguish between SSO secrets and JWT secrets Valid values are: "SSO", "JWT". (Enum defined in EmbedSecret) - */ -public enum SecretType: String, Codable { - case SSO = "SSO" - case JWT = "JWT" -} - public struct Session: SDKModel { private enum CodingKeys : String, CodingKey { @@ -19511,20 +15740,20 @@ public struct Session: SDKModel { case _sudo_user_id = "sudo_user_id" case _created_at = "created_at" case _expires_at = "expires_at" - case _url = "url" + case url } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } private var _ip_address: AnyString? @@ -19608,13 +15837,13 @@ public struct Session: SDKModel { set { _extended_count = newValue.map(AnyInt.init) } } - private var _sudo_user_id: AnyString? + private var _sudo_user_id: AnyInt? /** * Actual user in the case when this session represents one user sudo'ing as another (read-only) */ - public var sudo_user_id: String? { + public var sudo_user_id: Int64? { get { _sudo_user_id?.value } - set { _sudo_user_id = newValue.map(AnyString.init) } + set { _sudo_user_id = newValue.map(AnyInt.init) } } private var _created_at: AnyString? @@ -19635,18 +15864,14 @@ public struct Session: SDKModel { set { _expires_at = newValue.map(AnyString.init) } } - private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(can: StringDictionary? = nil, id: String? = nil, ip_address: String? = nil, browser: String? = nil, operating_system: String? = nil, city: String? = nil, state: String? = nil, country: String? = nil, credentials_type: String? = nil, extended_at: String? = nil, extended_count: Int64? = nil, sudo_user_id: String? = nil, created_at: String? = nil, expires_at: String? = nil, url: String? = nil) { + public init(can: StringDictionary? = nil, id: Int64? = nil, ip_address: String? = nil, browser: String? = nil, operating_system: String? = nil, city: String? = nil, state: String? = nil, country: String? = nil, credentials_type: String? = nil, extended_at: String? = nil, extended_count: Int64? = nil, sudo_user_id: Int64? = nil, created_at: String? = nil, expires_at: String? = nil, url: URI? = nil) { self.can = can - self._id = id.map(AnyString.init) + self._id = id.map(AnyInt.init) self._ip_address = ip_address.map(AnyString.init) self._browser = browser.map(AnyString.init) self._operating_system = operating_system.map(AnyString.init) @@ -19656,10 +15881,10 @@ public struct Session: SDKModel { self._credentials_type = credentials_type.map(AnyString.init) self._extended_at = extended_at.map(AnyString.init) self._extended_count = extended_count.map(AnyInt.init) - self._sudo_user_id = sudo_user_id.map(AnyString.init) + self._sudo_user_id = sudo_user_id.map(AnyInt.init) self._created_at = created_at.map(AnyString.init) self._expires_at = expires_at.map(AnyString.init) - self._url = url.map(AnyString.init) + self.url = url } } @@ -19706,341 +15931,469 @@ public struct SessionConfig: SDKModel { /** * Track location of session when user logs in. */ - public var track_session_location: Bool? + public var track_session_location: Bool? + + public init(can: StringDictionary? = nil, allow_persistent_sessions: Bool? = nil, session_minutes: Int64? = nil, unlimited_sessions_per_user: Bool? = nil, use_inactivity_based_logout: Bool? = nil, track_session_location: Bool? = nil) { + self.can = can + self.allow_persistent_sessions = allow_persistent_sessions + self._session_minutes = session_minutes.map(AnyInt.init) + self.unlimited_sessions_per_user = unlimited_sessions_per_user + self.use_inactivity_based_logout = use_inactivity_based_logout + self.track_session_location = track_session_location + } + +} + +public struct SmtpSettings: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _address = "address" + case _from = "from" + case _user_name = "user_name" + case _password = "password" + case _port = "port" + case enable_starttls_auto + case ssl_version + case default_smtp + } + private var _address: AnyString? + /** + * SMTP Server url + */ + public var address: String? { + get { _address?.value } + set { _address = newValue.map(AnyString.init) } + } + + private var _from: AnyString? + /** + * From e-mail address + */ + public var from: String? { + get { _from?.value } + set { _from = newValue.map(AnyString.init) } + } + + private var _user_name: AnyString? + /** + * User name + */ + public var user_name: String? { + get { _user_name?.value } + set { _user_name = newValue.map(AnyString.init) } + } + + private var _password: AnyString? + /** + * Password + */ + public var password: String? { + get { _password?.value } + set { _password = newValue.map(AnyString.init) } + } + + private var _port: AnyInt? + /** + * SMTP Server's port + */ + public var port: Int64? { + get { _port?.value } + set { _port = newValue.map(AnyInt.init) } + } + + /** + * Is TLS encryption enabled? + */ + public var enable_starttls_auto: Bool? + + /** + * TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2". + */ + public var ssl_version: SslVersion? + + /** + * Whether to enable built-in Looker SMTP + */ + public var default_smtp: Bool? + + public init(address: String? = nil, from: String? = nil, user_name: String? = nil, password: String? = nil, port: Int64? = nil, enable_starttls_auto: Bool? = nil, ssl_version: SslVersion? = nil, default_smtp: Bool? = nil) { + self._address = address.map(AnyString.init) + self._from = from.map(AnyString.init) + self._user_name = user_name.map(AnyString.init) + self._password = password.map(AnyString.init) + self._port = port.map(AnyInt.init) + self.enable_starttls_auto = enable_starttls_auto + self.ssl_version = ssl_version + self.default_smtp = default_smtp + } + +} + +public struct Snippet: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _label = "label" + case _sql = "sql" + case can + } + private var _name: AnyString? + /** + * Name of the snippet (read-only) + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + + private var _label: AnyString? + /** + * Label of the snippet (read-only) + */ + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } + } + + private var _sql: AnyString? + /** + * SQL text of the snippet (read-only) + */ + public var sql: String? { + get { _sql?.value } + set { _sql = newValue.map(AnyString.init) } + } + + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? - public init(can: StringDictionary? = nil, allow_persistent_sessions: Bool? = nil, session_minutes: Int64? = nil, unlimited_sessions_per_user: Bool? = nil, use_inactivity_based_logout: Bool? = nil, track_session_location: Bool? = nil) { + public init(name: String? = nil, label: String? = nil, sql: String? = nil, can: StringDictionary? = nil) { + self._name = name.map(AnyString.init) + self._label = label.map(AnyString.init) + self._sql = sql.map(AnyString.init) self.can = can - self.allow_persistent_sessions = allow_persistent_sessions - self._session_minutes = session_minutes.map(AnyInt.init) - self.unlimited_sessions_per_user = unlimited_sessions_per_user - self.use_inactivity_based_logout = use_inactivity_based_logout - self.track_session_location = track_session_location } } -public struct Setting: SDKModel { +public struct Space: SDKModel { private enum CodingKeys : String, CodingKey { - case extension_framework_enabled - case extension_load_url_enabled - case marketplace_auto_install_enabled - case marketplace_enabled - case marketplace_terms_accepted - case privatelabel_configuration - case custom_welcome_email - case onboarding_enabled - case _timezone = "timezone" - case allow_user_timezones - case data_connector_default_enabled - case _host_url = "host_url" - case override_warnings - case _email_domain_allowlist = "email_domain_allowlist" - case embed_cookieless_v2 - case embed_enabled + case _name = "name" + case _parent_id = "parent_id" + case _id = "id" + case _content_metadata_id = "content_metadata_id" + case created_at + case _creator_id = "creator_id" + case _child_count = "child_count" + case _external_id = "external_id" + case is_embed + case is_embed_shared_root + case is_embed_users_root + case is_personal + case is_personal_descendant + case is_shared_root + case is_users_root + case can + case dashboards + case looks } + private var _name: AnyString /** - * Toggle extension framework on or off + * Unique Name */ - public var extension_framework_enabled: Bool? + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } + } + private var _parent_id: AnyString? /** - * (DEPRECATED) Toggle extension extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. + * Id of Parent. If the parent id is null, this is a root-level entry */ - public var extension_load_url_enabled: Bool? + public var parent_id: String? { + get { _parent_id?.value } + set { _parent_id = newValue.map(AnyString.init) } + } + private var _id: AnyString? /** - * Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled. + * Unique Id (read-only) */ - public var marketplace_auto_install_enabled: Bool? + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + private var _content_metadata_id: AnyInt? /** - * Toggle marketplace on or off + * Id of content metadata (read-only) */ - public var marketplace_enabled: Bool? + public var content_metadata_id: Int64? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyInt.init) } + } /** - * 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. + * Time the space was created (read-only) */ - public var marketplace_terms_accepted: Bool? - - public var privatelabel_configuration: PrivatelabelConfiguration? - - public var custom_welcome_email: CustomWelcomeEmail? + public var created_at: Date? + private var _creator_id: AnyInt? /** - * Toggle onboarding on or off + * User Id of Creator (read-only) */ - public var onboarding_enabled: Bool? + public var creator_id: Int64? { + get { _creator_id?.value } + set { _creator_id = newValue.map(AnyInt.init) } + } - private var _timezone: AnyString? + private var _child_count: AnyInt? /** - * Change instance-wide default timezone + * Children Count (read-only) */ - public var timezone: String? { - get { _timezone?.value } - set { _timezone = newValue.map(AnyString.init) } + public var child_count: Int64? { + get { _child_count?.value } + set { _child_count = newValue.map(AnyInt.init) } } + private var _external_id: AnyString? /** - * Toggle user-specific timezones on or off + * Embedder's Id if this space was autogenerated as an embedding shared space via 'external_group_id' in an SSO embed login (read-only) */ - public var allow_user_timezones: Bool? + public var external_id: String? { + get { _external_id?.value } + set { _external_id = newValue.map(AnyString.init) } + } /** - * Toggle default future connectors on or off + * Space is an embed space (read-only) */ - public var data_connector_default_enabled: Bool? + public var is_embed: Bool? - private var _host_url: AnyString? /** - * Change the base portion of your Looker instance URL setting + * Space is the root embed shared space (read-only) */ - public var host_url: String? { - get { _host_url?.value } - set { _host_url = newValue.map(AnyString.init) } - } + public var is_embed_shared_root: Bool? /** - * (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. + * Space is the root embed users space (read-only) */ - public var override_warnings: Bool? + public var is_embed_users_root: Bool? - private var _email_domain_allowlist: [AnyString]? /** - * An array of Email Domain Allowlist of type string for Scheduled Content + * Space is a user's personal space (read-only) */ - public var email_domain_allowlist: [String]? { - get { if let v = _email_domain_allowlist { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _email_domain_allowlist = v.map { AnyString.init($0) } } else { _email_domain_allowlist = nil } } - } + public var is_personal: Bool? /** - * Toggle cookieless embed setting + * Space is descendant of a user's personal space (read-only) */ - public var embed_cookieless_v2: Bool? + public var is_personal_descendant: Bool? /** - * True if embedding is enabled https://cloud.google.com/looker/docs/r/looker-core-feature-embed, false otherwise (read-only) + * Space is the root shared space (read-only) */ - public var embed_enabled: Bool? - - public init(extension_framework_enabled: Bool? = nil, extension_load_url_enabled: Bool? = nil, marketplace_auto_install_enabled: Bool? = nil, marketplace_enabled: Bool? = 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) { - 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 - self.marketplace_enabled = marketplace_enabled - self.marketplace_terms_accepted = marketplace_terms_accepted - self.privatelabel_configuration = privatelabel_configuration - self.custom_welcome_email = custom_welcome_email - self.onboarding_enabled = onboarding_enabled - self._timezone = timezone.map(AnyString.init) - self.allow_user_timezones = allow_user_timezones - self.data_connector_default_enabled = data_connector_default_enabled - self._host_url = host_url.map(AnyString.init) - self.override_warnings = override_warnings - if let v = email_domain_allowlist { _email_domain_allowlist = v.map { AnyString.init($0) } } else { _email_domain_allowlist = nil } - self.embed_cookieless_v2 = embed_cookieless_v2 - self.embed_enabled = embed_enabled - } - -} + public var is_shared_root: Bool? -public struct SmtpNodeStatus: SDKModel { + /** + * Space is the root user space (read-only) + */ + public var is_users_root: Bool? - private enum CodingKeys : String, CodingKey { - case is_valid - case _message = "message" - case _hostname = "hostname" - } /** - * SMTP status of node (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var is_valid: Bool? + public var can: StringDictionary? - private var _message: AnyString? /** - * Error message for node (read-only) + * Dashboards (read-only) */ - public var message: String? { - get { _message?.value } - set { _message = newValue.map(AnyString.init) } - } + public var dashboards: [DashboardBase]? - private var _hostname: AnyString? /** - * Host name of node (read-only) + * Looks (read-only) */ - public var hostname: String? { - get { _hostname?.value } - set { _hostname = newValue.map(AnyString.init) } + public var looks: [LookWithDashboards]? + + public init(name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil, dashboards: [DashboardBase]? = nil, looks: [LookWithDashboards]? = nil) { + self._name = AnyString.init(name) + self._parent_id = parent_id.map(AnyString.init) + self._id = id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self.created_at = created_at + self._creator_id = creator_id.map(AnyInt.init) + self._child_count = child_count.map(AnyInt.init) + self._external_id = external_id.map(AnyString.init) + self.is_embed = is_embed + self.is_embed_shared_root = is_embed_shared_root + self.is_embed_users_root = is_embed_users_root + self.is_personal = is_personal + self.is_personal_descendant = is_personal_descendant + self.is_shared_root = is_shared_root + self.is_users_root = is_users_root + self.can = can + self.dashboards = dashboards + self.looks = looks } - public init(is_valid: Bool? = nil, message: String? = nil, hostname: String? = nil) { - self.is_valid = is_valid - self._message = message.map(AnyString.init) - self._hostname = hostname.map(AnyString.init) + public init(_ name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil, dashboards: [DashboardBase]? = nil, looks: [LookWithDashboards]? = nil) { + self.init(name: name, parent_id: parent_id, id: id, content_metadata_id: content_metadata_id, created_at: created_at, creator_id: creator_id, child_count: child_count, external_id: external_id, is_embed: is_embed, is_embed_shared_root: is_embed_shared_root, is_embed_users_root: is_embed_users_root, is_personal: is_personal, is_personal_descendant: is_personal_descendant, is_shared_root: is_shared_root, is_users_root: is_users_root, can: can, dashboards: dashboards, looks: looks) } } -public struct SmtpSettings: SDKModel { +public struct SpaceBase: SDKModel { private enum CodingKeys : String, CodingKey { - case _address = "address" - case _from = "from" - case _user_name = "user_name" - case _password = "password" - case _port = "port" - case enable_starttls_auto - case ssl_version - case default_smtp + case _name = "name" + case _parent_id = "parent_id" + case _id = "id" + case _content_metadata_id = "content_metadata_id" + case created_at + case _creator_id = "creator_id" + case _child_count = "child_count" + case _external_id = "external_id" + case is_embed + case is_embed_shared_root + case is_embed_users_root + case is_personal + case is_personal_descendant + case is_shared_root + case is_users_root + case can } - private var _address: AnyString? + private var _name: AnyString /** - * SMTP Server url + * Unique Name */ - public var address: String? { - get { _address?.value } - set { _address = newValue.map(AnyString.init) } + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } } - private var _from: AnyString? + private var _parent_id: AnyString? /** - * From e-mail address + * Id of Parent. If the parent id is null, this is a root-level entry */ - public var from: String? { - get { _from?.value } - set { _from = newValue.map(AnyString.init) } + public var parent_id: String? { + get { _parent_id?.value } + set { _parent_id = newValue.map(AnyString.init) } } - private var _user_name: AnyString? + private var _id: AnyString? /** - * User name + * Unique Id (read-only) */ - public var user_name: String? { - get { _user_name?.value } - set { _user_name = newValue.map(AnyString.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _password: AnyString? + private var _content_metadata_id: AnyInt? /** - * Password + * Id of content metadata (read-only) */ - public var password: String? { - get { _password?.value } - set { _password = newValue.map(AnyString.init) } + public var content_metadata_id: Int64? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyInt.init) } } - private var _port: AnyInt? /** - * SMTP Server's port + * Time the space was created (read-only) */ - public var port: Int64? { - get { _port?.value } - set { _port = newValue.map(AnyInt.init) } - } + public var created_at: Date? + private var _creator_id: AnyInt? /** - * Is TLS encryption enabled? + * User Id of Creator (read-only) */ - public var enable_starttls_auto: Bool? + public var creator_id: Int64? { + get { _creator_id?.value } + set { _creator_id = newValue.map(AnyInt.init) } + } + private var _child_count: AnyInt? /** - * TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2". + * Children Count (read-only) */ - public var ssl_version: SslVersion? + public var child_count: Int64? { + get { _child_count?.value } + set { _child_count = newValue.map(AnyInt.init) } + } + private var _external_id: AnyString? /** - * Whether to enable built-in Looker SMTP + * Embedder's Id if this space was autogenerated as an embedding shared space via 'external_group_id' in an SSO embed login (read-only) */ - public var default_smtp: Bool? - - public init(address: String? = nil, from: String? = nil, user_name: String? = nil, password: String? = nil, port: Int64? = nil, enable_starttls_auto: Bool? = nil, ssl_version: SslVersion? = nil, default_smtp: Bool? = nil) { - self._address = address.map(AnyString.init) - self._from = from.map(AnyString.init) - self._user_name = user_name.map(AnyString.init) - self._password = password.map(AnyString.init) - self._port = port.map(AnyInt.init) - self.enable_starttls_auto = enable_starttls_auto - self.ssl_version = ssl_version - self.default_smtp = default_smtp + public var external_id: String? { + get { _external_id?.value } + set { _external_id = newValue.map(AnyString.init) } } -} - -public struct SmtpStatus: SDKModel { - - private enum CodingKeys : String, CodingKey { - case is_valid - case _node_count = "node_count" - case node_status - } /** - * Overall SMTP status of cluster (read-only) + * Space is an embed space (read-only) */ - public var is_valid: Bool? + public var is_embed: Bool? - private var _node_count: AnyInt? /** - * Total number of nodes in cluster (read-only) + * Space is the root embed shared space (read-only) */ - public var node_count: Int64? { - get { _node_count?.value } - set { _node_count = newValue.map(AnyInt.init) } - } + public var is_embed_shared_root: Bool? /** - * array of each node's status containing is_valid, message, hostname (read-only) + * Space is the root embed users space (read-only) */ - public var node_status: [SmtpNodeStatus]? - - public init(is_valid: Bool? = nil, node_count: Int64? = nil, node_status: [SmtpNodeStatus]? = nil) { - self.is_valid = is_valid - self._node_count = node_count.map(AnyInt.init) - self.node_status = node_status - } - -} + public var is_embed_users_root: Bool? -public struct Snippet: SDKModel { + /** + * Space is a user's personal space (read-only) + */ + public var is_personal: Bool? - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _label = "label" - case _sql = "sql" - } - private var _name: AnyString? /** - * Name of the snippet (read-only) + * Space is descendant of a user's personal space (read-only) */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } + public var is_personal_descendant: Bool? - private var _label: AnyString? /** - * Label of the snippet (read-only) + * Space is the root shared space (read-only) */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } - } + public var is_shared_root: Bool? - private var _sql: AnyString? /** - * SQL text of the snippet (read-only) + * Space is the root user space (read-only) */ - public var sql: String? { - get { _sql?.value } - set { _sql = newValue.map(AnyString.init) } + public var is_users_root: Bool? + + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + public init(name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil) { + self._name = AnyString.init(name) + self._parent_id = parent_id.map(AnyString.init) + self._id = id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self.created_at = created_at + self._creator_id = creator_id.map(AnyInt.init) + self._child_count = child_count.map(AnyInt.init) + self._external_id = external_id.map(AnyString.init) + self.is_embed = is_embed + self.is_embed_shared_root = is_embed_shared_root + self.is_embed_users_root = is_embed_users_root + self.is_personal = is_personal + self.is_personal_descendant = is_personal_descendant + self.is_shared_root = is_shared_root + self.is_users_root = is_users_root + self.can = can } - public init(name: String? = nil, label: String? = nil, sql: String? = nil) { - self._name = name.map(AnyString.init) - self._label = label.map(AnyString.init) - self._sql = sql.map(AnyString.init) + public init(_ name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil) { + self.init(name: name, parent_id: parent_id, id: id, content_metadata_id: content_metadata_id, created_at: created_at, creator_id: creator_id, child_count: child_count, external_id: external_id, is_embed: is_embed, is_embed_shared_root: is_embed_shared_root, is_embed_users_root: is_embed_users_root, is_personal: is_personal, is_personal_descendant: is_personal_descendant, is_shared_root: is_shared_root, is_users_root: is_users_root, can: can) } } @@ -20150,16 +16503,16 @@ public struct SqlQuery: SDKModel { */ public var vis_config: StringDictionary? - private var _result_maker_id: AnyString? + private var _result_maker_id: AnyInt? /** * ID of the ResultMakerLookup entry. */ - public var result_maker_id: String? { + public var result_maker_id: Int64? { get { _result_maker_id?.value } - set { _result_maker_id = newValue.map(AnyString.init) } + set { _result_maker_id = newValue.map(AnyInt.init) } } - public init(can: StringDictionary? = nil, slug: String? = nil, last_runtime: Float? = nil, run_count: Int64? = nil, browser_limit: Int64? = nil, sql: String? = nil, last_run_at: String? = nil, connection: DBConnectionBase? = nil, model_name: String? = nil, creator: UserPublic? = nil, explore_url: String? = nil, plaintext: Bool? = nil, vis_config: StringDictionary? = nil, result_maker_id: String? = nil) { + public init(can: StringDictionary? = nil, slug: String? = nil, last_runtime: Float? = nil, run_count: Int64? = nil, browser_limit: Int64? = nil, sql: String? = nil, last_run_at: String? = nil, connection: DBConnectionBase? = nil, model_name: String? = nil, creator: UserPublic? = nil, explore_url: String? = nil, plaintext: Bool? = nil, vis_config: StringDictionary? = nil, result_maker_id: Int64? = nil) { self.can = can self._slug = slug.map(AnyString.init) self.last_runtime = last_runtime @@ -20173,7 +16526,7 @@ public struct SqlQuery: SDKModel { self._explore_url = explore_url.map(AnyString.init) self.plaintext = plaintext self.vis_config = vis_config - self._result_maker_id = result_maker_id.map(AnyString.init) + self._result_maker_id = result_maker_id.map(AnyInt.init) } } @@ -20238,264 +16591,6 @@ public struct SqlQueryCreate: SDKModel { } -public struct SshPublicKey: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _public_key = "public_key" - } - private var _public_key: AnyString? - /** - * The SSH public key created for this instance (read-only) - */ - public var public_key: String? { - get { _public_key?.value } - set { _public_key = newValue.map(AnyString.init) } - } - - public init(public_key: String? = nil) { - self._public_key = public_key.map(AnyString.init) - } - -} - -public struct SshServer: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _ssh_server_id = "ssh_server_id" - case _ssh_server_name = "ssh_server_name" - case _ssh_server_host = "ssh_server_host" - case _ssh_server_port = "ssh_server_port" - case _ssh_server_user = "ssh_server_user" - case _finger_print = "finger_print" - case _sha_finger_print = "sha_finger_print" - case _public_key = "public_key" - case _status = "status" - } - private var _ssh_server_id: AnyString? - /** - * A unique id used to identify this SSH Server (read-only) - */ - public var ssh_server_id: String? { - get { _ssh_server_id?.value } - set { _ssh_server_id = newValue.map(AnyString.init) } - } - - private var _ssh_server_name: AnyString? - /** - * The name to identify this SSH Server - */ - public var ssh_server_name: String? { - get { _ssh_server_name?.value } - set { _ssh_server_name = newValue.map(AnyString.init) } - } - - private var _ssh_server_host: AnyString? - /** - * The hostname or ip address of the SSH Server - */ - public var ssh_server_host: String? { - get { _ssh_server_host?.value } - set { _ssh_server_host = newValue.map(AnyString.init) } - } - - private var _ssh_server_port: AnyInt? - /** - * The port to connect to on the SSH Server - */ - public var ssh_server_port: Int64? { - get { _ssh_server_port?.value } - set { _ssh_server_port = newValue.map(AnyInt.init) } - } - - private var _ssh_server_user: AnyString? - /** - * The username used to connect to the SSH Server - */ - public var ssh_server_user: String? { - get { _ssh_server_user?.value } - set { _ssh_server_user = newValue.map(AnyString.init) } - } - - private var _finger_print: AnyString? - /** - * The md5 fingerprint used to identify the SSH Server (read-only) - */ - public var finger_print: String? { - get { _finger_print?.value } - set { _finger_print = newValue.map(AnyString.init) } - } - - private var _sha_finger_print: AnyString? - /** - * The SHA fingerprint used to identify the SSH Server (read-only) - */ - public var sha_finger_print: String? { - get { _sha_finger_print?.value } - set { _sha_finger_print = newValue.map(AnyString.init) } - } - - private var _public_key: AnyString? - /** - * The SSH public key created for this instance (read-only) - */ - public var public_key: String? { - get { _public_key?.value } - set { _public_key = newValue.map(AnyString.init) } - } - - private var _status: AnyString? - /** - * The current connection status to this SSH Server (read-only) - */ - public var status: String? { - get { _status?.value } - set { _status = newValue.map(AnyString.init) } - } - - public init(ssh_server_id: String? = nil, ssh_server_name: String? = nil, ssh_server_host: String? = nil, ssh_server_port: Int64? = nil, ssh_server_user: String? = nil, finger_print: String? = nil, sha_finger_print: String? = nil, public_key: String? = nil, status: String? = nil) { - self._ssh_server_id = ssh_server_id.map(AnyString.init) - self._ssh_server_name = ssh_server_name.map(AnyString.init) - self._ssh_server_host = ssh_server_host.map(AnyString.init) - self._ssh_server_port = ssh_server_port.map(AnyInt.init) - self._ssh_server_user = ssh_server_user.map(AnyString.init) - self._finger_print = finger_print.map(AnyString.init) - self._sha_finger_print = sha_finger_print.map(AnyString.init) - self._public_key = public_key.map(AnyString.init) - self._status = status.map(AnyString.init) - } - -} - -public struct SshTunnel: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _tunnel_id = "tunnel_id" - case _ssh_server_id = "ssh_server_id" - case _ssh_server_name = "ssh_server_name" - case _ssh_server_host = "ssh_server_host" - case _ssh_server_port = "ssh_server_port" - case _ssh_server_user = "ssh_server_user" - case _last_attempt = "last_attempt" - case _local_host_port = "local_host_port" - case _database_host = "database_host" - case _database_port = "database_port" - case _status = "status" - } - private var _tunnel_id: AnyString? - /** - * Unique ID for the tunnel (read-only) - */ - public var tunnel_id: String? { - get { _tunnel_id?.value } - set { _tunnel_id = newValue.map(AnyString.init) } - } - - private var _ssh_server_id: AnyString? - /** - * SSH Server ID - */ - public var ssh_server_id: String? { - get { _ssh_server_id?.value } - set { _ssh_server_id = newValue.map(AnyString.init) } - } - - private var _ssh_server_name: AnyString? - /** - * SSH Server name (read-only) - */ - public var ssh_server_name: String? { - get { _ssh_server_name?.value } - set { _ssh_server_name = newValue.map(AnyString.init) } - } - - private var _ssh_server_host: AnyString? - /** - * SSH Server Hostname or IP Address (read-only) - */ - public var ssh_server_host: String? { - get { _ssh_server_host?.value } - set { _ssh_server_host = newValue.map(AnyString.init) } - } - - private var _ssh_server_port: AnyInt? - /** - * SSH Server port (read-only) - */ - public var ssh_server_port: Int64? { - get { _ssh_server_port?.value } - set { _ssh_server_port = newValue.map(AnyInt.init) } - } - - private var _ssh_server_user: AnyString? - /** - * Username used to connect to the SSH Server (read-only) - */ - public var ssh_server_user: String? { - get { _ssh_server_user?.value } - set { _ssh_server_user = newValue.map(AnyString.init) } - } - - private var _last_attempt: AnyString? - /** - * Time of last connect attempt (read-only) - */ - public var last_attempt: String? { - get { _last_attempt?.value } - set { _last_attempt = newValue.map(AnyString.init) } - } - - private var _local_host_port: AnyInt? - /** - * Localhost Port used by the Looker instance to connect to the remote DB - */ - public var local_host_port: Int64? { - get { _local_host_port?.value } - set { _local_host_port = newValue.map(AnyInt.init) } - } - - private var _database_host: AnyString? - /** - * Hostname or IP Address of the Database Server - */ - public var database_host: String? { - get { _database_host?.value } - set { _database_host = newValue.map(AnyString.init) } - } - - private var _database_port: AnyInt? - /** - * Port that the Database Server is listening on - */ - public var database_port: Int64? { - get { _database_port?.value } - set { _database_port = newValue.map(AnyInt.init) } - } - - private var _status: AnyString? - /** - * Current connection status for this Tunnel (read-only) - */ - public var status: String? { - get { _status?.value } - set { _status = newValue.map(AnyString.init) } - } - - public init(tunnel_id: String? = nil, ssh_server_id: String? = nil, ssh_server_name: String? = nil, ssh_server_host: String? = nil, ssh_server_port: Int64? = nil, ssh_server_user: String? = nil, last_attempt: String? = nil, local_host_port: Int64? = nil, database_host: String? = nil, database_port: Int64? = nil, status: String? = nil) { - self._tunnel_id = tunnel_id.map(AnyString.init) - self._ssh_server_id = ssh_server_id.map(AnyString.init) - self._ssh_server_name = ssh_server_name.map(AnyString.init) - self._ssh_server_host = ssh_server_host.map(AnyString.init) - self._ssh_server_port = ssh_server_port.map(AnyInt.init) - self._ssh_server_user = ssh_server_user.map(AnyString.init) - self._last_attempt = last_attempt.map(AnyString.init) - self._local_host_port = local_host_port.map(AnyInt.init) - self._database_host = database_host.map(AnyString.init) - self._database_port = database_port.map(AnyInt.init) - self._status = status.map(AnyString.init) - } - -} - /** * TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2". (Enum defined in SmtpSettings) */ @@ -20505,139 +16600,6 @@ public enum SslVersion: String, Codable { case TLSv1_2 = "TLSv1_2" } -public struct SupportAccessAddEntries: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _emails = "emails" - case _reason = "reason" - } - private var _emails: [AnyString]? - /** - * An array of emails to add to the Allowlist - */ - public var emails: [String]? { - get { if let v = _emails { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _emails = v.map { AnyString.init($0) } } else { _emails = nil } } - } - - private var _reason: AnyString? - /** - * Reason for adding emails to the Allowlist - */ - public var reason: String? { - get { _reason?.value } - set { _reason = newValue.map(AnyString.init) } - } - - public init(emails: [String]? = nil, reason: String? = nil) { - if let v = emails { _emails = v.map { AnyString.init($0) } } else { _emails = nil } - self._reason = reason.map(AnyString.init) - } - -} - -public struct SupportAccessAllowlistEntry: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _id = "id" - case _email = "email" - case _full_name = "full_name" - case _reason = "reason" - case created_date - } - private var _id: AnyString? - /** - * Unique ID (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - private var _email: AnyString? - /** - * Email address - */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } - } - - private var _full_name: AnyString? - /** - * Full name of allowlisted user (read-only) - */ - public var full_name: String? { - get { _full_name?.value } - set { _full_name = newValue.map(AnyString.init) } - } - - private var _reason: AnyString? - /** - * Reason the Email is included in the Allowlist - */ - public var reason: String? { - get { _reason?.value } - set { _reason = newValue.map(AnyString.init) } - } - - /** - * Date the Email was added to the Allowlist (read-only) - */ - public var created_date: Date? - - public init(id: String? = nil, email: String? = nil, full_name: String? = nil, reason: String? = nil, created_date: Date? = nil) { - self._id = id.map(AnyString.init) - self._email = email.map(AnyString.init) - self._full_name = full_name.map(AnyString.init) - self._reason = reason.map(AnyString.init) - self.created_date = created_date - } - -} - -public struct SupportAccessEnable: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _duration_in_seconds = "duration_in_seconds" - } - private var _duration_in_seconds: AnyInt - /** - * Duration Support Access will remain enabled - */ - public var duration_in_seconds: Int64 { - get { _duration_in_seconds.value } - set { _duration_in_seconds = AnyInt.init(newValue) } - } - - public init(duration_in_seconds: Int64) { - self._duration_in_seconds = AnyInt.init(duration_in_seconds) - } - - public init(_ duration_in_seconds: Int64) { - self.init(duration_in_seconds: duration_in_seconds) - } - -} - -public struct SupportAccessStatus: SDKModel { - /** - * Whether or not Support Access is open (read-only) - */ - public var `open`: Bool? - - /** - * Time that Support Access will expire (read-only) - */ - public var open_until: Date? - - public init(`open`: Bool? = nil, open_until: Date? = nil) { - self.`open` = `open` - self.open_until = open_until - } - -} - /** * A list of action types the integration supports. Valid values are: "cell", "query", "dashboard", "none". (Enum defined in Integration) */ @@ -20716,13 +16678,13 @@ public struct Theme: SDKModel { */ public var end_at: Date? - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } private var _name: AnyString? @@ -20736,11 +16698,11 @@ public struct Theme: SDKModel { public var settings: ThemeSettings? - public init(can: StringDictionary? = nil, begin_at: Date? = nil, end_at: Date? = nil, id: String? = nil, name: String? = nil, settings: ThemeSettings? = nil) { + public init(can: StringDictionary? = nil, begin_at: Date? = nil, end_at: Date? = nil, id: Int64? = nil, name: String? = nil, settings: ThemeSettings? = nil) { self.can = can self.begin_at = begin_at self.end_at = end_at - self._id = id.map(AnyString.init) + self._id = id.map(AnyInt.init) self._name = name.map(AnyString.init) self.settings = settings } @@ -21209,64 +17171,38 @@ public struct Timezone: SDKModel { } -public struct UpdateArtifact: SDKModel { +public struct UpdateFolder: SDKModel { private enum CodingKeys : String, CodingKey { - case _key = "key" - case _value = "value" - case _content_type = "content_type" - case _version = "version" - } - private var _key: AnyString - /** - * Key of value to store. Namespace + Key must be unique. - */ - public var key: String { - get { _key.value } - set { _key = AnyString.init(newValue) } - } - - private var _value: AnyString - /** - * Value to store. - */ - public var value: String { - get { _value.value } - set { _value = AnyString.init(newValue) } - } - - private var _content_type: AnyString? - /** - * 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. - */ - public var content_type: String? { - get { _content_type?.value } - set { _content_type = newValue.map(AnyString.init) } + case _name = "name" + case _parent_id = "parent_id" } - - private var _version: AnyInt? + private var _name: AnyString? /** - * Version number of the stored value. The version must be provided for any updates to an existing artifact. (read-only) + * Unique Name */ - public var version: Int64? { - get { _version?.value } - set { _version = newValue.map(AnyInt.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - public init(key: String, value: String, content_type: String? = nil, version: Int64? = nil) { - self._key = AnyString.init(key) - self._value = AnyString.init(value) - self._content_type = content_type.map(AnyString.init) - self._version = version.map(AnyInt.init) + private var _parent_id: AnyString? + /** + * Id of Parent. If the parent id is null, this is a root-level entry + */ + public var parent_id: String? { + get { _parent_id?.value } + set { _parent_id = newValue.map(AnyString.init) } } - public init(_ key: String, _ value: String, content_type: String? = nil, version: Int64? = nil) { - self.init(key: key, value: value, content_type: content_type, version: version) + public init(name: String? = nil, parent_id: String? = nil) { + self._name = name.map(AnyString.init) + self._parent_id = parent_id.map(AnyString.init) } } -public struct UpdateFolder: SDKModel { +public struct UpdateSpace: SDKModel { private enum CodingKeys : String, CodingKey { case _name = "name" @@ -21301,8 +17237,8 @@ public struct User: SDKModel { private enum CodingKeys : String, CodingKey { case can - case _avatar_url = "avatar_url" - case _avatar_url_without_sizing = "avatar_url_without_sizing" + case avatar_url + case avatar_url_without_sizing case credentials_api3 case credentials_email case credentials_embed @@ -21317,6 +17253,7 @@ public struct User: SDKModel { case _embed_group_space_id = "embed_group_space_id" case _first_name = "first_name" case _group_ids = "group_ids" + case _home_space_id = "home_space_id" case _home_folder_id = "home_folder_id" case _id = "id" case is_disabled @@ -21324,6 +17261,7 @@ public struct User: SDKModel { case _locale = "locale" case _looker_versions = "looker_versions" case models_dir_validated + case _personal_space_id = "personal_space_id" case _personal_folder_id = "personal_folder_id" case presumed_looker_employee case _role_ids = "role_ids" @@ -21334,32 +17272,22 @@ public struct User: SDKModel { case allow_direct_roles case allow_normal_group_membership case allow_roles_from_normal_groups - case _embed_group_folder_id = "embed_group_folder_id" - case is_iam_admin - case _url = "url" + case url } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _avatar_url: AnyString? /** * URL for the avatar image (may be generic) (read-only) */ - public var avatar_url: String? { - get { _avatar_url?.value } - set { _avatar_url = newValue.map(AnyString.init) } - } + public var avatar_url: URI? - private var _avatar_url_without_sizing: AnyString? /** * URL for the avatar image (may be generic), does not specify size (read-only) */ - public var avatar_url_without_sizing: String? { - get { _avatar_url_without_sizing?.value } - set { _avatar_url_without_sizing = newValue.map(AnyString.init) } - } + public var avatar_url_without_sizing: URI? /** * API credentials (read-only) @@ -21403,13 +17331,13 @@ public struct User: SDKModel { set { _email = newValue.map(AnyString.init) } } - private var _embed_group_space_id: AnyString? + private var _embed_group_space_id: AnyInt? /** - * (DEPRECATED) (Embed only) ID of user's group space based on the external_group_id optionally specified during embed user login (read-only) + * (Embed only) ID of user's group space based on the external_group_id optionally specified during embed user login (read-only) */ - public var embed_group_space_id: String? { + public var embed_group_space_id: Int64? { get { _embed_group_space_id?.value } - set { _embed_group_space_id = newValue.map(AnyString.init) } + set { _embed_group_space_id = newValue.map(AnyInt.init) } } private var _first_name: AnyString? @@ -21421,13 +17349,22 @@ public struct User: SDKModel { set { _first_name = newValue.map(AnyString.init) } } - private var _group_ids: [AnyString]? + private var _group_ids: [AnyInt]? /** * Array of ids of the groups for this user (read-only) */ - public var group_ids: [String]? { + public var group_ids: [Int64]? { get { if let v = _group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _group_ids = v.map { AnyString.init($0) } } else { _group_ids = nil } } + set { if let v = newValue { _group_ids = v.map { AnyInt.init($0) } } else { _group_ids = nil } } + } + + private var _home_space_id: AnyString? + /** + * ID string for user's home space + */ + public var home_space_id: String? { + get { _home_space_id?.value } + set { _home_space_id = newValue.map(AnyString.init) } } private var _home_folder_id: AnyString? @@ -21439,13 +17376,13 @@ public struct User: SDKModel { set { _home_folder_id = newValue.map(AnyString.init) } } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } /** @@ -21485,13 +17422,22 @@ public struct User: SDKModel { */ public var models_dir_validated: Bool? - private var _personal_folder_id: AnyString? + private var _personal_space_id: AnyInt? + /** + * ID of user's personal space (read-only) + */ + public var personal_space_id: Int64? { + get { _personal_space_id?.value } + set { _personal_space_id = newValue.map(AnyInt.init) } + } + + private var _personal_folder_id: AnyInt? /** * ID of user's personal folder (read-only) */ - public var personal_folder_id: String? { + public var personal_folder_id: Int64? { get { _personal_folder_id?.value } - set { _personal_folder_id = newValue.map(AnyString.init) } + set { _personal_folder_id = newValue.map(AnyInt.init) } } /** @@ -21499,13 +17445,13 @@ public struct User: SDKModel { */ public var presumed_looker_employee: Bool? - private var _role_ids: [AnyString]? + private var _role_ids: [AnyInt]? /** * Array of ids of the roles for this user (read-only) */ - public var role_ids: [String]? { + public var role_ids: [Int64]? { get { if let v = _role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } } + set { if let v = newValue { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } } } /** @@ -21543,33 +17489,15 @@ public struct User: SDKModel { */ public var allow_roles_from_normal_groups: Bool? - private var _embed_group_folder_id: AnyString? - /** - * (Embed only) ID of user's group folder based on the external_group_id optionally specified during embed user login (read-only) - */ - public var embed_group_folder_id: String? { - get { _embed_group_folder_id?.value } - set { _embed_group_folder_id = newValue.map(AnyString.init) } - } - - /** - * User is an IAM Admin - only available in Looker (Google Cloud core) (read-only) - */ - public var is_iam_admin: Bool? - - private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(can: StringDictionary? = nil, avatar_url: String? = nil, avatar_url_without_sizing: String? = nil, credentials_api3: [CredentialsApi3]? = nil, credentials_email: CredentialsEmail? = nil, credentials_embed: [CredentialsEmbed]? = nil, credentials_google: CredentialsGoogle? = nil, credentials_ldap: CredentialsLDAP? = nil, credentials_looker_openid: CredentialsLookerOpenid? = nil, credentials_oidc: CredentialsOIDC? = nil, credentials_saml: CredentialsSaml? = nil, credentials_totp: CredentialsTotp? = nil, display_name: String? = nil, email: String? = nil, embed_group_space_id: String? = nil, first_name: String? = nil, group_ids: [String]? = nil, home_folder_id: String? = nil, id: String? = nil, is_disabled: Bool? = nil, last_name: String? = nil, locale: String? = nil, looker_versions: [String]? = nil, models_dir_validated: Bool? = nil, personal_folder_id: String? = nil, presumed_looker_employee: Bool? = nil, role_ids: [String]? = nil, sessions: [Session]? = nil, ui_state: StringDictionary? = nil, verified_looker_employee: Bool? = nil, roles_externally_managed: Bool? = nil, allow_direct_roles: Bool? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, embed_group_folder_id: String? = nil, is_iam_admin: Bool? = nil, url: String? = nil) { + public init(can: StringDictionary? = nil, avatar_url: URI? = nil, avatar_url_without_sizing: URI? = nil, credentials_api3: [CredentialsApi3]? = nil, credentials_email: CredentialsEmail? = nil, credentials_embed: [CredentialsEmbed]? = nil, credentials_google: CredentialsGoogle? = nil, credentials_ldap: CredentialsLDAP? = nil, credentials_looker_openid: CredentialsLookerOpenid? = nil, credentials_oidc: CredentialsOIDC? = nil, credentials_saml: CredentialsSaml? = nil, credentials_totp: CredentialsTotp? = nil, display_name: String? = nil, email: String? = nil, embed_group_space_id: Int64? = nil, first_name: String? = nil, group_ids: [Int64]? = nil, home_space_id: String? = nil, home_folder_id: String? = nil, id: Int64? = nil, is_disabled: Bool? = nil, last_name: String? = nil, locale: String? = nil, looker_versions: [String]? = nil, models_dir_validated: Bool? = nil, personal_space_id: Int64? = nil, personal_folder_id: Int64? = nil, presumed_looker_employee: Bool? = nil, role_ids: [Int64]? = nil, sessions: [Session]? = nil, ui_state: StringDictionary? = nil, verified_looker_employee: Bool? = nil, roles_externally_managed: Bool? = nil, allow_direct_roles: Bool? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, url: URI? = nil) { self.can = can - self._avatar_url = avatar_url.map(AnyString.init) - self._avatar_url_without_sizing = avatar_url_without_sizing.map(AnyString.init) + self.avatar_url = avatar_url + self.avatar_url_without_sizing = avatar_url_without_sizing self.credentials_api3 = credentials_api3 self.credentials_email = credentials_email self.credentials_embed = credentials_embed @@ -21581,19 +17509,21 @@ public struct User: SDKModel { self.credentials_totp = credentials_totp self._display_name = display_name.map(AnyString.init) self._email = email.map(AnyString.init) - self._embed_group_space_id = embed_group_space_id.map(AnyString.init) + self._embed_group_space_id = embed_group_space_id.map(AnyInt.init) self._first_name = first_name.map(AnyString.init) - if let v = group_ids { _group_ids = v.map { AnyString.init($0) } } else { _group_ids = nil } + if let v = group_ids { _group_ids = v.map { AnyInt.init($0) } } else { _group_ids = nil } + self._home_space_id = home_space_id.map(AnyString.init) self._home_folder_id = home_folder_id.map(AnyString.init) - self._id = id.map(AnyString.init) + self._id = id.map(AnyInt.init) self.is_disabled = is_disabled self._last_name = last_name.map(AnyString.init) self._locale = locale.map(AnyString.init) if let v = looker_versions { _looker_versions = v.map { AnyString.init($0) } } else { _looker_versions = nil } self.models_dir_validated = models_dir_validated - self._personal_folder_id = personal_folder_id.map(AnyString.init) + self._personal_space_id = personal_space_id.map(AnyInt.init) + self._personal_folder_id = personal_folder_id.map(AnyInt.init) self.presumed_looker_employee = presumed_looker_employee - if let v = role_ids { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } + if let v = role_ids { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } self.sessions = sessions self.ui_state = ui_state self.verified_looker_employee = verified_looker_employee @@ -21601,9 +17531,7 @@ public struct User: SDKModel { self.allow_direct_roles = allow_direct_roles self.allow_normal_group_membership = allow_normal_group_membership self.allow_roles_from_normal_groups = allow_roles_from_normal_groups - self._embed_group_folder_id = embed_group_folder_id.map(AnyString.init) - self.is_iam_admin = is_iam_admin - self._url = url.map(AnyString.init) + self.url = url } } @@ -21629,40 +17557,40 @@ public struct UserAttribute: SDKModel { */ public var can: StringDictionary? - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } - private var _name: AnyString + private var _name: AnyString? /** * Name of user attribute */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - private var _label: AnyString + private var _label: AnyString? /** * Human-friendly label for user attribute */ - public var label: String { - get { _label.value } - set { _label = AnyString.init(newValue) } + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } } - private var _type: AnyString + private var _type: AnyString? /** * Type of user attribute ("string", "number", "datetime", "yesno", "zipcode") */ - public var type: String { - get { _type.value } - set { _type = AnyString.init(newValue) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } private var _default_value: AnyString? @@ -21708,12 +17636,12 @@ public struct UserAttribute: SDKModel { set { _hidden_value_domain_whitelist = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, id: String? = nil, name: String, label: String, type: String, default_value: String? = nil, is_system: Bool? = nil, is_permanent: Bool? = nil, value_is_hidden: Bool? = nil, user_can_view: Bool? = nil, user_can_edit: Bool? = nil, hidden_value_domain_whitelist: String? = nil) { + public init(can: StringDictionary? = nil, id: Int64? = nil, name: String? = nil, label: String? = nil, type: String? = nil, default_value: String? = nil, is_system: Bool? = nil, is_permanent: Bool? = nil, value_is_hidden: Bool? = nil, user_can_view: Bool? = nil, user_can_edit: Bool? = nil, hidden_value_domain_whitelist: String? = nil) { self.can = can - self._id = id.map(AnyString.init) - self._name = AnyString.init(name) - self._label = AnyString.init(label) - self._type = AnyString.init(type) + self._id = id.map(AnyInt.init) + self._name = name.map(AnyString.init) + self._label = label.map(AnyString.init) + self._type = type.map(AnyString.init) self._default_value = default_value.map(AnyString.init) self.is_system = is_system self.is_permanent = is_permanent @@ -21723,10 +17651,6 @@ public struct UserAttribute: SDKModel { self._hidden_value_domain_whitelist = hidden_value_domain_whitelist.map(AnyString.init) } - public init(can: StringDictionary? = nil, id: String? = nil, _ name: String, _ label: String, _ type: String, default_value: String? = nil, is_system: Bool? = nil, is_permanent: Bool? = nil, value_is_hidden: Bool? = nil, user_can_view: Bool? = nil, user_can_edit: Bool? = nil, hidden_value_domain_whitelist: String? = nil) { - self.init(can: can, id: id, name: name, label: label, type: type, default_value: default_value, is_system: is_system, is_permanent: is_permanent, value_is_hidden: value_is_hidden, user_can_view: user_can_view, user_can_edit: user_can_edit, hidden_value_domain_whitelist: hidden_value_domain_whitelist) - } - } /** @@ -21763,31 +17687,31 @@ public struct UserAttributeGroupValue: SDKModel { */ public var can: StringDictionary? - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id of this group-attribute relation (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } - private var _group_id: AnyString? + private var _group_id: AnyInt? /** * Id of group (read-only) */ - public var group_id: String? { + public var group_id: Int64? { get { _group_id?.value } - set { _group_id = newValue.map(AnyString.init) } + set { _group_id = newValue.map(AnyInt.init) } } - private var _user_attribute_id: AnyString? + private var _user_attribute_id: AnyInt? /** * Id of user attribute (read-only) */ - public var user_attribute_id: String? { + public var user_attribute_id: Int64? { get { _user_attribute_id?.value } - set { _user_attribute_id = newValue.map(AnyString.init) } + set { _user_attribute_id = newValue.map(AnyInt.init) } } /** @@ -21813,11 +17737,11 @@ public struct UserAttributeGroupValue: SDKModel { set { _value = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, id: String? = nil, group_id: String? = nil, user_attribute_id: String? = nil, value_is_hidden: Bool? = nil, rank: Int64? = nil, value: String? = nil) { + public init(can: StringDictionary? = nil, id: Int64? = nil, group_id: Int64? = nil, user_attribute_id: Int64? = nil, value_is_hidden: Bool? = nil, rank: Int64? = nil, value: String? = nil) { self.can = can - self._id = id.map(AnyString.init) - self._group_id = group_id.map(AnyString.init) - self._user_attribute_id = user_attribute_id.map(AnyString.init) + self._id = id.map(AnyInt.init) + self._group_id = group_id.map(AnyInt.init) + self._user_attribute_id = user_attribute_id.map(AnyInt.init) self.value_is_hidden = value_is_hidden self._rank = rank.map(AnyInt.init) self._value = value.map(AnyString.init) @@ -21881,13 +17805,13 @@ public struct UserAttributeWithValue: SDKModel { set { _value = newValue.map(AnyString.init) } } - private var _user_id: AnyString? + private var _user_id: AnyInt? /** * Id of User (read-only) */ - public var user_id: String? { + public var user_id: Int64? { get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + set { _user_id = newValue.map(AnyInt.init) } } /** @@ -21900,13 +17824,13 @@ public struct UserAttributeWithValue: SDKModel { */ public var value_is_hidden: Bool? - private var _user_attribute_id: AnyString? + private var _user_attribute_id: AnyInt? /** * Id of User Attribute (read-only) */ - public var user_attribute_id: String? { + public var user_attribute_id: Int64? { get { _user_attribute_id?.value } - set { _user_attribute_id = newValue.map(AnyString.init) } + set { _user_attribute_id = newValue.map(AnyInt.init) } } private var _source: AnyString? @@ -21927,42 +17851,38 @@ public struct UserAttributeWithValue: SDKModel { set { _hidden_value_domain_whitelist = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, name: String? = nil, label: String? = nil, rank: Int64? = nil, value: String? = nil, user_id: String? = nil, user_can_edit: Bool? = nil, value_is_hidden: Bool? = nil, user_attribute_id: String? = nil, source: String? = nil, hidden_value_domain_whitelist: String? = nil) { + public init(can: StringDictionary? = nil, name: String? = nil, label: String? = nil, rank: Int64? = nil, value: String? = nil, user_id: Int64? = nil, user_can_edit: Bool? = nil, value_is_hidden: Bool? = nil, user_attribute_id: Int64? = nil, source: String? = nil, hidden_value_domain_whitelist: String? = nil) { self.can = can self._name = name.map(AnyString.init) self._label = label.map(AnyString.init) self._rank = rank.map(AnyInt.init) self._value = value.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) + self._user_id = user_id.map(AnyInt.init) self.user_can_edit = user_can_edit self.value_is_hidden = value_is_hidden - self._user_attribute_id = user_attribute_id.map(AnyString.init) + self._user_attribute_id = user_attribute_id.map(AnyInt.init) self._source = source.map(AnyString.init) self._hidden_value_domain_whitelist = hidden_value_domain_whitelist.map(AnyString.init) } } -public struct UserEmailOnly: SDKModel { +public struct UserIdOnly: SDKModel { private enum CodingKeys : String, CodingKey { - case _email = "email" + case _id = "id" } - private var _email: AnyString + private var _id: AnyInt? /** - * Email Address + * Unique Id (read-only) */ - public var email: String { - get { _email.value } - set { _email = AnyString.init(newValue) } - } - - public init(email: String) { - self._email = AnyString.init(email) + public var id: Int64? { + get { _id?.value } + set { _id = newValue.map(AnyInt.init) } } - public init(_ email: String) { - self.init(email: email) + public init(id: Int64? = nil) { + self._id = id.map(AnyInt.init) } } @@ -22013,13 +17933,13 @@ public struct UserLoginLockout: SDKModel { set { _ip = newValue.map(AnyString.init) } } - private var _user_id: AnyString? + private var _user_id: AnyInt? /** * User ID (read-only) */ - public var user_id: String? { + public var user_id: Int64? { get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + set { _user_id = newValue.map(AnyInt.init) } } private var _remote_id: AnyString? @@ -22063,12 +17983,12 @@ public struct UserLoginLockout: SDKModel { */ public var lockout_at: Date? - public init(can: StringDictionary? = nil, key: String? = nil, auth_type: String? = nil, ip: String? = nil, user_id: String? = nil, remote_id: String? = nil, full_name: String? = nil, email: String? = nil, fail_count: Int64? = nil, lockout_at: Date? = nil) { + public init(can: StringDictionary? = nil, key: String? = nil, auth_type: String? = nil, ip: String? = nil, user_id: Int64? = nil, remote_id: String? = nil, full_name: String? = nil, email: String? = nil, fail_count: Int64? = nil, lockout_at: Date? = nil) { self.can = can self._key = key.map(AnyString.init) self._auth_type = auth_type.map(AnyString.init) self._ip = ip.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) + self._user_id = user_id.map(AnyInt.init) self._remote_id = remote_id.map(AnyString.init) self._full_name = full_name.map(AnyString.init) self._email = email.map(AnyString.init) @@ -22086,21 +18006,21 @@ public struct UserPublic: SDKModel { case _first_name = "first_name" case _last_name = "last_name" case _display_name = "display_name" - case _avatar_url = "avatar_url" - case _url = "url" + case avatar_url + case url } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } private var _first_name: AnyString? @@ -22130,32 +18050,24 @@ public struct UserPublic: SDKModel { set { _display_name = newValue.map(AnyString.init) } } - private var _avatar_url: AnyString? /** * URL for the avatar image (may be generic) (read-only) */ - public var avatar_url: String? { - get { _avatar_url?.value } - set { _avatar_url = newValue.map(AnyString.init) } - } + public var avatar_url: URI? - private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: String? { - get { _url?.value } - set { _url = newValue.map(AnyString.init) } - } + public var url: URI? - public init(can: StringDictionary? = nil, id: String? = nil, first_name: String? = nil, last_name: String? = nil, display_name: String? = nil, avatar_url: String? = nil, url: String? = nil) { + public init(can: StringDictionary? = nil, id: Int64? = nil, first_name: String? = nil, last_name: String? = nil, display_name: String? = nil, avatar_url: URI? = nil, url: URI? = nil) { self.can = can - self._id = id.map(AnyString.init) + self._id = id.map(AnyInt.init) self._first_name = first_name.map(AnyString.init) self._last_name = last_name.map(AnyString.init) self._display_name = display_name.map(AnyString.init) - self._avatar_url = avatar_url.map(AnyString.init) - self._url = url.map(AnyString.init) + self.avatar_url = avatar_url + self.url = url } } @@ -22165,7 +18077,7 @@ public struct ValidationError: SDKModel { private enum CodingKeys : String, CodingKey { case _message = "message" case errors - case _documentation_url = "documentation_url" + case documentation_url } private var _message: AnyString /** @@ -22181,22 +18093,18 @@ public struct ValidationError: SDKModel { */ public var errors: [ValidationErrorDetail]? - private var _documentation_url: AnyString /** * Documentation link (read-only) */ - public var documentation_url: String { - get { _documentation_url.value } - set { _documentation_url = AnyString.init(newValue) } - } + public var documentation_url: URI - public init(message: String, errors: [ValidationErrorDetail]? = nil, documentation_url: String) { + public init(message: String, errors: [ValidationErrorDetail]? = nil, documentation_url: URI) { self._message = AnyString.init(message) self.errors = errors - self._documentation_url = AnyString.init(documentation_url) + self.documentation_url = documentation_url } - public init(_ message: String, errors: [ValidationErrorDetail]? = nil, _ documentation_url: String) { + public init(_ message: String, errors: [ValidationErrorDetail]? = nil, _ documentation_url: URI) { self.init(message: message, errors: errors, documentation_url: documentation_url) } @@ -22208,7 +18116,7 @@ public struct ValidationErrorDetail: SDKModel { case _field = "field" case _code = "code" case _message = "message" - case _documentation_url = "documentation_url" + case documentation_url } private var _field: AnyString? /** @@ -22237,23 +18145,19 @@ public struct ValidationErrorDetail: SDKModel { set { _message = newValue.map(AnyString.init) } } - private var _documentation_url: AnyString /** * Documentation link (read-only) */ - public var documentation_url: String { - get { _documentation_url.value } - set { _documentation_url = AnyString.init(newValue) } - } + public var documentation_url: URI - public init(field: String? = nil, code: String? = nil, message: String? = nil, documentation_url: String) { + public init(field: String? = nil, code: String? = nil, message: String? = nil, documentation_url: URI) { self._field = field.map(AnyString.init) self._code = code.map(AnyString.init) self._message = message.map(AnyString.init) - self._documentation_url = AnyString.init(documentation_url) + self.documentation_url = documentation_url } - public init(field: String? = nil, code: String? = nil, message: String? = nil, _ documentation_url: String) { + public init(field: String? = nil, code: String? = nil, message: String? = nil, _ documentation_url: URI) { self.init(field: field, code: code, message: message, documentation_url: documentation_url) } @@ -22334,13 +18238,13 @@ public struct WhitelabelConfiguration: SDKModel { case alerts_links case folders_mentions } - private var _id: AnyString? + private var _id: AnyInt? /** * Unique Id (read-only) */ - public var id: String? { + public var id: Int64? { get { _id?.value } - set { _id = newValue.map(AnyString.init) } + set { _id = newValue.map(AnyInt.init) } } private var _logo_file: AnyString? @@ -22438,8 +18342,8 @@ public struct WhitelabelConfiguration: SDKModel { */ public var folders_mentions: Bool? - public init(id: String? = nil, logo_file: String? = nil, logo_url: String? = nil, favicon_file: String? = nil, favicon_url: String? = nil, default_title: String? = nil, show_help_menu: Bool? = nil, show_docs: Bool? = nil, show_email_sub_options: Bool? = nil, allow_looker_mentions: Bool? = nil, allow_looker_links: Bool? = nil, custom_welcome_email_advanced: Bool? = nil, setup_mentions: Bool? = nil, alerts_logo: Bool? = nil, alerts_links: Bool? = nil, folders_mentions: Bool? = nil) { - self._id = id.map(AnyString.init) + public init(id: Int64? = nil, logo_file: String? = nil, logo_url: String? = nil, favicon_file: String? = nil, favicon_url: String? = nil, default_title: String? = nil, show_help_menu: Bool? = nil, show_docs: Bool? = nil, show_email_sub_options: Bool? = nil, allow_looker_mentions: Bool? = nil, allow_looker_links: Bool? = nil, custom_welcome_email_advanced: Bool? = nil, setup_mentions: Bool? = nil, alerts_logo: Bool? = nil, alerts_links: Bool? = nil, folders_mentions: Bool? = nil) { + self._id = id.map(AnyInt.init) self._logo_file = logo_file.map(AnyString.init) self._logo_url = logo_url.map(AnyString.init) self._favicon_file = favicon_file.map(AnyString.init) @@ -22464,244 +18368,31 @@ public struct Workspace: SDKModel { private enum CodingKeys : String, CodingKey { case can case _id = "id" - case projects - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _id: AnyString? - /** - * The unique id of this user workspace. Predefined workspace ids include "production" and "dev" (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - /** - * The local state of each project in the workspace (read-only) - */ - public var projects: [Project]? - - public init(can: StringDictionary? = nil, id: String? = nil, projects: [Project]? = nil) { - self.can = can - self._id = id.map(AnyString.init) - self.projects = projects - } - -} - -/** - * Dynamic writeable type for Alert removes: - * followed, followable, id, investigative_content_title, owner_display_name - */ -public struct WriteAlert: SDKModel { - - private enum CodingKeys : String, CodingKey { - case applied_dashboard_filters - case comparison_type - case _cron = "cron" - case _custom_url_base = "custom_url_base" - case _custom_url_params = "custom_url_params" - case _custom_url_label = "custom_url_label" - case show_custom_url - case _custom_title = "custom_title" - case _dashboard_element_id = "dashboard_element_id" - case _description = "description" - case destinations - case field - case is_disabled - case _disabled_reason = "disabled_reason" - case is_public - case investigative_content_type - case _investigative_content_id = "investigative_content_id" - case _lookml_dashboard_id = "lookml_dashboard_id" - case _lookml_link_id = "lookml_link_id" - case _owner_id = "owner_id" - case threshold - case time_series_condition_state - } - /** - * Filters coming from the dashboard that are applied. Example `[{ "filter_title": "Name", "field_name": "distribution_centers.name", "filter_value": "Los Angeles CA" }]` - */ - public var applied_dashboard_filters: [AlertAppliedDashboardFilter]? - - /** - * 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://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". - */ - public var comparison_type: ComparisonType - - private var _cron: AnyString - /** - * Vixie-Style crontab specification when to run. At minumum, it has to be longer than 15 minute intervals - */ - public var cron: String { - get { _cron.value } - set { _cron = AnyString.init(newValue) } - } - - private var _custom_url_base: AnyString? - /** - * Domain for the custom url selected by the alert creator from the admin defined domain allowlist - */ - public var custom_url_base: String? { - get { _custom_url_base?.value } - set { _custom_url_base = newValue.map(AnyString.init) } - } - - private var _custom_url_params: AnyString? - /** - * Parameters and path for the custom url defined by the alert creator - */ - public var custom_url_params: String? { - get { _custom_url_params?.value } - set { _custom_url_params = newValue.map(AnyString.init) } - } - - private var _custom_url_label: AnyString? - /** - * Label for the custom url defined by the alert creator - */ - public var custom_url_label: String? { - get { _custom_url_label?.value } - set { _custom_url_label = newValue.map(AnyString.init) } - } - - /** - * Boolean to determine if the custom url should be used - */ - public var show_custom_url: Bool? - - private var _custom_title: AnyString? - /** - * An optional, user-defined title for the alert - */ - public var custom_title: String? { - get { _custom_title?.value } - set { _custom_title = newValue.map(AnyString.init) } - } - - private var _dashboard_element_id: AnyString? - /** - * ID of the dashboard element associated with the alert. Refer to [dashboard_element()](#!/Dashboard/DashboardElement) - */ - public var dashboard_element_id: String? { - get { _dashboard_element_id?.value } - set { _dashboard_element_id = newValue.map(AnyString.init) } - } - - private var _description: AnyString? - /** - * An optional description for the alert. This supplements the title - */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } - } - - /** - * Array of destinations to send alerts to. Must be the same type of destination. Example `[{ "destination_type": "EMAIL", "email_address": "test@test.com" }]` - */ - public var destinations: [AlertDestination] - - public var field: AlertField - - /** - * Whether or not the alert is disabled - */ - public var is_disabled: Bool? - - private var _disabled_reason: AnyString? - /** - * Reason for disabling alert - */ - public var disabled_reason: String? { - get { _disabled_reason?.value } - set { _disabled_reason = newValue.map(AnyString.init) } - } - - /** - * Whether or not the alert is public - */ - public var is_public: Bool? - - /** - * The type of the investigative content Valid values are: "dashboard". - */ - public var investigative_content_type: InvestigativeContentType? - - private var _investigative_content_id: AnyString? - /** - * The ID of the investigative content. For dashboards, this will be the dashboard ID - */ - public var investigative_content_id: String? { - get { _investigative_content_id?.value } - set { _investigative_content_id = newValue.map(AnyString.init) } - } - - private var _lookml_dashboard_id: AnyString? - /** - * ID of the LookML dashboard associated with the alert - */ - public var lookml_dashboard_id: String? { - get { _lookml_dashboard_id?.value } - set { _lookml_dashboard_id = newValue.map(AnyString.init) } + case projects } - - private var _lookml_link_id: AnyString? /** - * ID of the LookML dashboard element associated with the alert + * Operations the current user is able to perform on this object (read-only) */ - public var lookml_link_id: String? { - get { _lookml_link_id?.value } - set { _lookml_link_id = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _owner_id: AnyString + private var _id: AnyString? /** - * User id of alert owner + * The unique id of this user workspace. Predefined workspace ids include "production" and "dev" (read-only) */ - public var owner_id: String { - get { _owner_id.value } - set { _owner_id = AnyString.init(newValue) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } /** - * Value of the alert threshold + * The local state of each project in the workspace (read-only) */ - public var threshold: Double - - public var time_series_condition_state: AlertConditionState? - - public init(applied_dashboard_filters: [AlertAppliedDashboardFilter]? = nil, comparison_type: ComparisonType, cron: String, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, custom_title: String? = nil, dashboard_element_id: String? = nil, description: String? = nil, destinations: [AlertDestination], field: AlertField, is_disabled: Bool? = nil, disabled_reason: String? = nil, is_public: Bool? = nil, investigative_content_type: InvestigativeContentType? = nil, investigative_content_id: String? = nil, lookml_dashboard_id: String? = nil, lookml_link_id: String? = nil, owner_id: String, threshold: Double, time_series_condition_state: AlertConditionState? = nil) { - self.applied_dashboard_filters = applied_dashboard_filters - self.comparison_type = comparison_type - self._cron = AnyString.init(cron) - 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) - self.show_custom_url = show_custom_url - self._custom_title = custom_title.map(AnyString.init) - self._dashboard_element_id = dashboard_element_id.map(AnyString.init) - self._description = description.map(AnyString.init) - self.destinations = destinations - self.field = field - self.is_disabled = is_disabled - self._disabled_reason = disabled_reason.map(AnyString.init) - self.is_public = is_public - self.investigative_content_type = investigative_content_type - self._investigative_content_id = investigative_content_id.map(AnyString.init) - self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) - self._lookml_link_id = lookml_link_id.map(AnyString.init) - self._owner_id = AnyString.init(owner_id) - self.threshold = threshold - self.time_series_condition_state = time_series_condition_state - } + public var projects: [Project]? - public init(applied_dashboard_filters: [AlertAppliedDashboardFilter]? = nil, _ comparison_type: ComparisonType, _ cron: String, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, custom_title: String? = nil, dashboard_element_id: String? = nil, description: String? = nil, _ destinations: [AlertDestination], _ field: AlertField, is_disabled: Bool? = nil, disabled_reason: String? = nil, is_public: Bool? = nil, investigative_content_type: InvestigativeContentType? = nil, investigative_content_id: String? = nil, lookml_dashboard_id: String? = nil, lookml_link_id: String? = nil, _ owner_id: String, _ threshold: Double, time_series_condition_state: AlertConditionState? = nil) { - self.init(applied_dashboard_filters: applied_dashboard_filters, comparison_type: comparison_type, cron: cron, custom_url_base: custom_url_base, custom_url_params: custom_url_params, custom_url_label: custom_url_label, show_custom_url: show_custom_url, custom_title: custom_title, dashboard_element_id: dashboard_element_id, description: description, destinations: destinations, field: field, is_disabled: is_disabled, disabled_reason: disabled_reason, is_public: is_public, investigative_content_type: investigative_content_type, investigative_content_id: investigative_content_id, lookml_dashboard_id: lookml_dashboard_id, lookml_link_id: lookml_link_id, owner_id: owner_id, threshold: threshold, time_series_condition_state: time_series_condition_state) + public init(can: StringDictionary? = nil, id: String? = nil, projects: [Project]? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self.projects = projects } } @@ -22781,276 +18472,19 @@ public struct WriteBackupConfiguration: SDKModel { private var _custom_s3_secret: AnyString? /** - * (Write-Only) AWS S3 secret used for custom-s3 backups - */ - public var custom_s3_secret: String? { - get { _custom_s3_secret?.value } - set { _custom_s3_secret = newValue.map(AnyString.init) } - } - - public init(type: String? = nil, custom_s3_bucket: String? = nil, custom_s3_bucket_region: String? = nil, custom_s3_key: String? = nil, custom_s3_secret: String? = nil) { - self._type = type.map(AnyString.init) - self._custom_s3_bucket = custom_s3_bucket.map(AnyString.init) - self._custom_s3_bucket_region = custom_s3_bucket_region.map(AnyString.init) - self._custom_s3_key = custom_s3_key.map(AnyString.init) - self._custom_s3_secret = custom_s3_secret.map(AnyString.init) - } - -} - -/** - * Dynamic writeable type for Board removes: - * can, content_metadata_id, created_at, board_sections, id, updated_at, user_id, primary_homepage - */ -public struct WriteBoard: SDKModel { - - private enum CodingKeys : String, CodingKey { - case deleted_at - case _description = "description" - case _section_order = "section_order" - case _title = "title" - } - /** - * Date of board deletion - */ - public var deleted_at: Date? - - private var _description: AnyString? - /** - * Description of the board - */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } - } - - private var _section_order: [AnyString]? - /** - * ids of the board sections in the order they should be displayed - */ - public var section_order: [String]? { - get { if let v = _section_order { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _section_order = v.map { AnyString.init($0) } } else { _section_order = nil } } - } - - private var _title: AnyString? - /** - * Title of the board - */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } - } - - public init(deleted_at: Date? = nil, description: String? = nil, section_order: [String]? = nil, title: String? = nil) { - self.deleted_at = deleted_at - self._description = description.map(AnyString.init) - if let v = section_order { _section_order = v.map { AnyString.init($0) } } else { _section_order = nil } - self._title = title.map(AnyString.init) - } - -} - -/** - * 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 - */ -public struct WriteBoardItem: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _custom_description = "custom_description" - case _custom_title = "custom_title" - case _custom_url = "custom_url" - case _dashboard_id = "dashboard_id" - case _board_section_id = "board_section_id" - case _look_id = "look_id" - case _lookml_dashboard_id = "lookml_dashboard_id" - case _order = "order" - case use_custom_description - case use_custom_title - case use_custom_url - case _custom_image_data_base64 = "custom_image_data_base64" - case use_custom_image - } - private var _custom_description: AnyString? - /** - * Custom description entered by the user, if present - */ - public var custom_description: String? { - get { _custom_description?.value } - set { _custom_description = newValue.map(AnyString.init) } - } - - private var _custom_title: AnyString? - /** - * Custom title entered by the user, if present - */ - public var custom_title: String? { - get { _custom_title?.value } - set { _custom_title = newValue.map(AnyString.init) } - } - - private var _custom_url: AnyString? - /** - * Custom url entered by the user, if present - */ - public var custom_url: String? { - get { _custom_url?.value } - set { _custom_url = newValue.map(AnyString.init) } - } - - private var _dashboard_id: AnyString? - /** - * Dashboard to base this item on - */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } - } - - private var _board_section_id: AnyString? - /** - * Associated Board Section - */ - public var board_section_id: String? { - get { _board_section_id?.value } - set { _board_section_id = newValue.map(AnyString.init) } - } - - private var _look_id: AnyString? - /** - * Look to base this item on - */ - public var look_id: String? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } - } - - private var _lookml_dashboard_id: AnyString? - /** - * LookML Dashboard to base this item on - */ - public var lookml_dashboard_id: String? { - get { _lookml_dashboard_id?.value } - set { _lookml_dashboard_id = newValue.map(AnyString.init) } - } - - private var _order: AnyInt? - /** - * An arbitrary integer representing the sort order within the section - */ - public var order: Int64? { - get { _order?.value } - set { _order = newValue.map(AnyInt.init) } - } - - /** - * Whether the custom description should be used instead of the content description, if the item is associated with content - */ - public var use_custom_description: Bool? - - /** - * Whether the custom title should be used instead of the content title, if the item is associated with content - */ - public var use_custom_title: Bool? - - /** - * Whether the custom url should be used instead of the content url, if the item is associated with content - */ - public var use_custom_url: Bool? - - private var _custom_image_data_base64: AnyString? - /** - * (Write-Only) base64 encoded image data - */ - public var custom_image_data_base64: String? { - get { _custom_image_data_base64?.value } - set { _custom_image_data_base64 = newValue.map(AnyString.init) } - } - - /** - * Whether the custom image should be used instead of the content image, if the item is associated with content - */ - public var use_custom_image: Bool? - - public init(custom_description: String? = nil, custom_title: String? = nil, custom_url: String? = nil, dashboard_id: String? = nil, board_section_id: String? = nil, look_id: String? = nil, lookml_dashboard_id: String? = nil, order: Int64? = nil, use_custom_description: Bool? = nil, use_custom_title: Bool? = nil, use_custom_url: Bool? = nil, custom_image_data_base64: String? = nil, use_custom_image: Bool? = nil) { - self._custom_description = custom_description.map(AnyString.init) - self._custom_title = custom_title.map(AnyString.init) - self._custom_url = custom_url.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._board_section_id = board_section_id.map(AnyString.init) - self._look_id = look_id.map(AnyString.init) - self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) - self._order = order.map(AnyInt.init) - self.use_custom_description = use_custom_description - self.use_custom_title = use_custom_title - self.use_custom_url = use_custom_url - self._custom_image_data_base64 = custom_image_data_base64.map(AnyString.init) - self.use_custom_image = use_custom_image - } - -} - -/** - * Dynamic writeable type for BoardSection removes: - * can, created_at, board_items, id, visible_item_order, updated_at - */ -public struct WriteBoardSection: SDKModel { - - private enum CodingKeys : String, CodingKey { - case deleted_at - case _description = "description" - case _board_id = "board_id" - case _item_order = "item_order" - case _title = "title" - } - /** - * Time at which this section was deleted. - */ - public var deleted_at: Date? - - private var _description: AnyString? - /** - * Description of the content found in this section. - */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } - } - - private var _board_id: AnyString? - /** - * Id reference to parent board - */ - public var board_id: String? { - get { _board_id?.value } - set { _board_id = newValue.map(AnyString.init) } - } - - private var _item_order: [AnyString]? - /** - * ids of the board items in the order they should be displayed - */ - public var item_order: [String]? { - get { if let v = _item_order { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _item_order = v.map { AnyString.init($0) } } else { _item_order = nil } } - } - - private var _title: AnyString? - /** - * Name of row + * (Write-Only) AWS S3 secret used for custom-s3 backups */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var custom_s3_secret: String? { + get { _custom_s3_secret?.value } + set { _custom_s3_secret = newValue.map(AnyString.init) } } - public init(deleted_at: Date? = nil, description: String? = nil, board_id: String? = nil, item_order: [String]? = nil, title: String? = nil) { - self.deleted_at = deleted_at - self._description = description.map(AnyString.init) - self._board_id = board_id.map(AnyString.init) - if let v = item_order { _item_order = v.map { AnyString.init($0) } } else { _item_order = nil } - self._title = title.map(AnyString.init) + public init(type: String? = nil, custom_s3_bucket: String? = nil, custom_s3_bucket_region: String? = nil, custom_s3_key: String? = nil, custom_s3_secret: String? = nil) { + self._type = type.map(AnyString.init) + self._custom_s3_bucket = custom_s3_bucket.map(AnyString.init) + self._custom_s3_bucket_region = custom_s3_bucket_region.map(AnyString.init) + self._custom_s3_key = custom_s3_key.map(AnyString.init) + self._custom_s3_secret = custom_s3_secret.map(AnyString.init) } } @@ -23102,50 +18536,42 @@ public struct WriteColorCollection: SDKModel { /** * Dynamic writeable type for ContentFavorite removes: - * id, look_id, dashboard_id, board_id + * id, look_id, dashboard_id, look */ public struct WriteContentFavorite: SDKModel { private enum CodingKeys : String, CodingKey { case _user_id = "user_id" case _content_metadata_id = "content_metadata_id" - case look case dashboard } - private var _user_id: AnyString? + private var _user_id: AnyInt? /** * User Id which owns this ContentFavorite */ - public var user_id: String? { + public var user_id: Int64? { get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + set { _user_id = newValue.map(AnyInt.init) } } - private var _content_metadata_id: AnyString? + private var _content_metadata_id: AnyInt? /** * Content Metadata Id associated with this ContentFavorite */ - public var content_metadata_id: String? { + public var content_metadata_id: Int64? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } + set { _content_metadata_id = newValue.map(AnyInt.init) } } - /** - * Dynamic writeable type for LookBasic removes: - * can, content_metadata_id, id, title - */ - public var look: WriteLookBasic? - /** * 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 */ public var dashboard: WriteDashboardBase? - public init(user_id: String? = nil, content_metadata_id: String? = nil, look: WriteLookBasic? = nil, dashboard: WriteDashboardBase? = nil) { - self._user_id = user_id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyString.init) - self.look = look + public init(user_id: Int64? = nil, content_metadata_id: Int64? = nil, dashboard: WriteDashboardBase? = nil) { + self._user_id = user_id.map(AnyInt.init) + self._content_metadata_id = content_metadata_id.map(AnyInt.init) self.dashboard = dashboard } @@ -23153,7 +18579,7 @@ public struct WriteContentFavorite: SDKModel { /** * Dynamic writeable type for ContentMeta removes: - * can, id, name, parent_id, dashboard_id, look_id, folder_id, content_type, inheriting_id, slug + * can, id, name, parent_id, dashboard_id, look_id, folder_id, content_type, inheriting_id, slug, space_id */ public struct WriteContentMeta: SDKModel { /** @@ -23329,13 +18755,13 @@ public struct WriteCreateQueryTask: SDKModel { case _look_id = "look_id" case _dashboard_id = "dashboard_id" } - private var _query_id: AnyString + private var _query_id: AnyInt /** * Id of query to run */ - public var query_id: String { + public var query_id: Int64 { get { _query_id.value } - set { _query_id = AnyString.init(newValue) } + set { _query_id = AnyInt.init(newValue) } } /** @@ -23357,13 +18783,13 @@ public struct WriteCreateQueryTask: SDKModel { */ public var deferred: Bool? - private var _look_id: AnyString? + private var _look_id: AnyInt? /** * Id of look associated with query. */ - public var look_id: String? { + public var look_id: Int64? { get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } + set { _look_id = newValue.map(AnyInt.init) } } private var _dashboard_id: AnyString? @@ -23375,16 +18801,16 @@ public struct WriteCreateQueryTask: SDKModel { set { _dashboard_id = newValue.map(AnyString.init) } } - public init(query_id: String, result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: String? = nil, dashboard_id: String? = nil) { - self._query_id = AnyString.init(query_id) + public init(query_id: Int64, result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: Int64? = nil, dashboard_id: String? = nil) { + self._query_id = AnyInt.init(query_id) self.result_format = result_format self._source = source.map(AnyString.init) self.deferred = deferred - self._look_id = look_id.map(AnyString.init) + self._look_id = look_id.map(AnyInt.init) self._dashboard_id = dashboard_id.map(AnyString.init) } - public init(_ query_id: String, _ result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: String? = nil, dashboard_id: String? = nil) { + public init(_ query_id: Int64, _ result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: Int64? = nil, dashboard_id: String? = nil) { self.init(query_id: query_id, result_format: result_format, source: source, deferred: deferred, look_id: look_id, dashboard_id: dashboard_id) } @@ -23421,9 +18847,62 @@ public struct WriteCredentialsEmail: SDKModel { } +/** + * Dynamic writeable type for CustomWelcomeEmail removes: + * can + */ +public struct WriteCustomWelcomeEmail: SDKModel { + + private enum CodingKeys : String, CodingKey { + case enabled + case _content = "content" + case _subject = "subject" + case _header = "header" + } + /** + * If true, custom email content will replace the default body of welcome emails + */ + public var enabled: Bool? + + private var _content: AnyString? + /** + * The HTML to use as custom content for welcome emails. Script elements and other potentially dangerous markup will be removed. + */ + public var content: String? { + get { _content?.value } + set { _content = newValue.map(AnyString.init) } + } + + private var _subject: AnyString? + /** + * The text to appear in the email subject line. Only available with a whitelabel license and whitelabel_configuration.advanced_custom_welcome_email enabled. + */ + public var subject: String? { + get { _subject?.value } + set { _subject = newValue.map(AnyString.init) } + } + + private var _header: AnyString? + /** + * 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. + */ + public var header: String? { + get { _header?.value } + set { _header = newValue.map(AnyString.init) } + } + + public init(enabled: Bool? = nil, content: String? = nil, subject: String? = nil, header: String? = nil) { + self.enabled = enabled + self._content = content.map(AnyString.init) + self._subject = subject.map(AnyString.init) + self._header = header.map(AnyString.init) + } + +} + /** * Dynamic writeable type for Dashboard removes: - * can, content_favorite_id, content_metadata_id, id, model, readonly, refresh_interval_to_i, user_id, 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, url + * can, content_favorite_id, content_metadata_id, id, model, readonly, refresh_interval_to_i, user_id, 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 */ public struct WriteDashboard: SDKModel { @@ -23436,6 +18915,7 @@ public struct WriteDashboard: SDKModel { case _title = "title" case _slug = "slug" case _preferred_viewer = "preferred_viewer" + case space case alert_sync_with_dashboard_filter_enabled case _background_color = "background_color" case crossfilter_enabled @@ -23447,6 +18927,7 @@ public struct WriteDashboard: SDKModel { case _lookml_link_id = "lookml_link_id" case show_filters_bar case show_title + case _space_id = "space_id" case _folder_id = "folder_id" case _text_tile_text_color = "text_tile_text_color" case _tile_background_color = "tile_background_color" @@ -23519,6 +19000,12 @@ public struct WriteDashboard: SDKModel { set { _preferred_viewer = newValue.map(AnyString.init) } } + /** + * Dynamic writeable type for SpaceBase 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 + */ + public var space: WriteSpaceBase? + /** * Enables alerts to keep in sync with dashboard filter changes */ @@ -23586,6 +19073,15 @@ public struct WriteDashboard: SDKModel { */ public var show_title: Bool? + private var _space_id: AnyString? + /** + * Id of Space + */ + public var space_id: String? { + get { _space_id?.value } + set { _space_id = newValue.map(AnyString.init) } + } + private var _folder_id: AnyString? /** * Id of folder @@ -23633,7 +19129,7 @@ public struct WriteDashboard: SDKModel { public var appearance: DashboardAppearance? - public init(description: String? = nil, hidden: Bool? = nil, query_timezone: String? = nil, refresh_interval: String? = nil, folder: WriteFolderBase? = nil, title: String? = nil, slug: String? = nil, preferred_viewer: String? = nil, alert_sync_with_dashboard_filter_enabled: Bool? = nil, background_color: String? = nil, crossfilter_enabled: Bool? = nil, deleted: Bool? = nil, enable_viz_full_screen: Bool? = nil, filters_bar_collapsed: Bool? = nil, filters_location_top: Bool? = nil, load_configuration: String? = nil, lookml_link_id: String? = nil, show_filters_bar: Bool? = nil, show_title: Bool? = nil, folder_id: String? = nil, text_tile_text_color: String? = nil, tile_background_color: String? = nil, tile_text_color: String? = nil, title_color: String? = nil, appearance: DashboardAppearance? = nil) { + public init(description: String? = nil, hidden: Bool? = nil, query_timezone: String? = nil, refresh_interval: String? = nil, folder: WriteFolderBase? = nil, title: String? = nil, slug: String? = nil, preferred_viewer: String? = nil, space: WriteSpaceBase? = nil, alert_sync_with_dashboard_filter_enabled: Bool? = nil, background_color: String? = nil, crossfilter_enabled: Bool? = nil, deleted: Bool? = nil, enable_viz_full_screen: Bool? = nil, filters_bar_collapsed: Bool? = nil, filters_location_top: Bool? = nil, load_configuration: String? = nil, lookml_link_id: String? = nil, show_filters_bar: Bool? = nil, show_title: Bool? = nil, space_id: String? = nil, folder_id: String? = nil, text_tile_text_color: String? = nil, tile_background_color: String? = nil, tile_text_color: String? = nil, title_color: String? = nil, appearance: DashboardAppearance? = nil) { self._description = description.map(AnyString.init) self.hidden = hidden self._query_timezone = query_timezone.map(AnyString.init) @@ -23642,6 +19138,7 @@ public struct WriteDashboard: SDKModel { self._title = title.map(AnyString.init) self._slug = slug.map(AnyString.init) self._preferred_viewer = preferred_viewer.map(AnyString.init) + self.space = space self.alert_sync_with_dashboard_filter_enabled = alert_sync_with_dashboard_filter_enabled self._background_color = background_color.map(AnyString.init) self.crossfilter_enabled = crossfilter_enabled @@ -23653,6 +19150,7 @@ public struct WriteDashboard: SDKModel { self._lookml_link_id = lookml_link_id.map(AnyString.init) self.show_filters_bar = show_filters_bar self.show_title = show_title + self._space_id = space_id.map(AnyString.init) self._folder_id = folder_id.map(AnyString.init) self._text_tile_text_color = text_tile_text_color.map(AnyString.init) self._tile_background_color = tile_background_color.map(AnyString.init) @@ -23674,8 +19172,15 @@ public struct WriteDashboardBase: SDKModel { */ public var folder: WriteFolderBase? - public init(folder: WriteFolderBase? = nil) { + /** + * Dynamic writeable type for SpaceBase 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 + */ + public var space: WriteSpaceBase? + + public init(folder: WriteFolderBase? = nil, space: WriteSpaceBase? = nil) { self.folder = folder + self.space = space } } @@ -23706,7 +19211,6 @@ public struct WriteDashboardElement: SDKModel { case _title_text = "title_text" case _type = "type" case _rich_content_json = "rich_content_json" - case _extension_id = "extension_id" } private var _body_text: AnyString? /** @@ -23728,7 +19232,7 @@ public struct WriteDashboardElement: SDKModel { /** * 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, view_count, url + * 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, view_count, user, url */ public var look: WriteLookWithQuery? @@ -23783,13 +19287,13 @@ public struct WriteDashboardElement: SDKModel { */ public var query: WriteQuery? - private var _query_id: AnyString? + private var _query_id: AnyInt? /** * Id Of Query */ - public var query_id: String? { + public var query_id: Int64? { get { _query_id?.value } - set { _query_id = newValue.map(AnyString.init) } + set { _query_id = newValue.map(AnyInt.init) } } private var _refresh_interval: AnyString? @@ -23807,13 +19311,13 @@ public struct WriteDashboardElement: SDKModel { */ public var result_maker: WriteResultMakerWithIdVisConfigAndDynamicFields? - private var _result_maker_id: AnyString? + private var _result_maker_id: AnyInt? /** * ID of the ResultMakerLookup entry. */ - public var result_maker_id: String? { + public var result_maker_id: Int64? { get { _result_maker_id?.value } - set { _result_maker_id = newValue.map(AnyString.init) } + set { _result_maker_id = newValue.map(AnyInt.init) } } private var _subtitle_text: AnyString? @@ -23866,16 +19370,7 @@ public struct WriteDashboardElement: SDKModel { set { _rich_content_json = newValue.map(AnyString.init) } } - private var _extension_id: AnyString? - /** - * Extension ID - */ - public var extension_id: String? { - get { _extension_id?.value } - set { _extension_id = newValue.map(AnyString.init) } - } - - public init(body_text: String? = nil, dashboard_id: String? = nil, look: WriteLookWithQuery? = nil, look_id: String? = nil, merge_result_id: String? = nil, note_display: String? = nil, note_state: String? = nil, note_text: String? = nil, query: WriteQuery? = nil, query_id: String? = nil, refresh_interval: String? = nil, result_maker: WriteResultMakerWithIdVisConfigAndDynamicFields? = nil, result_maker_id: String? = nil, subtitle_text: String? = nil, title: String? = nil, title_hidden: Bool? = nil, title_text: String? = nil, type: String? = nil, rich_content_json: String? = nil, extension_id: String? = nil) { + public init(body_text: String? = nil, dashboard_id: String? = nil, look: WriteLookWithQuery? = nil, look_id: String? = nil, merge_result_id: String? = nil, note_display: String? = nil, note_state: String? = nil, note_text: String? = nil, query: WriteQuery? = nil, query_id: Int64? = nil, refresh_interval: String? = nil, result_maker: WriteResultMakerWithIdVisConfigAndDynamicFields? = nil, result_maker_id: Int64? = nil, subtitle_text: String? = nil, title: String? = nil, title_hidden: Bool? = nil, title_text: String? = nil, type: String? = nil, rich_content_json: String? = nil) { self._body_text = body_text.map(AnyString.init) self._dashboard_id = dashboard_id.map(AnyString.init) self.look = look @@ -23885,17 +19380,16 @@ public struct WriteDashboardElement: SDKModel { self._note_state = note_state.map(AnyString.init) self._note_text = note_text.map(AnyString.init) self.query = query - self._query_id = query_id.map(AnyString.init) + self._query_id = query_id.map(AnyInt.init) self._refresh_interval = refresh_interval.map(AnyString.init) self.result_maker = result_maker - self._result_maker_id = result_maker_id.map(AnyString.init) + self._result_maker_id = result_maker_id.map(AnyInt.init) self._subtitle_text = subtitle_text.map(AnyString.init) self._title = title.map(AnyString.init) self.title_hidden = title_hidden self._title_text = title_text.map(AnyString.init) self._type = type.map(AnyString.init) self._rich_content_json = rich_content_json.map(AnyString.init) - self._extension_id = extension_id.map(AnyString.init) } } @@ -24176,41 +19670,6 @@ public struct WriteDashboardLayoutComponent: SDKModel { } -/** - * Dynamic writeable type for DashboardLookml removes: - * dashboard_id - */ -public struct WriteDashboardLookml: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _folder_id = "folder_id" - case _lookml = "lookml" - } - private var _folder_id: AnyString? - /** - * (Write-Only) Id of the folder - */ - public var folder_id: String? { - get { _folder_id?.value } - set { _folder_id = newValue.map(AnyString.init) } - } - - private var _lookml: AnyString? - /** - * lookml of UDD - */ - public var lookml: String? { - get { _lookml?.value } - set { _lookml = newValue.map(AnyString.init) } - } - - public init(folder_id: String? = nil, lookml: String? = nil) { - self._folder_id = folder_id.map(AnyString.init) - self._lookml = lookml.map(AnyString.init) - } - -} - /** * Dynamic writeable type for Datagroup removes: * can, created_at, id, model_name, name, trigger_check_at, trigger_error, trigger_value @@ -24279,15 +19738,7 @@ public struct WriteDBConnection: SDKModel { case sql_writing_with_info_schema case _after_connect_statements = "after_connect_statements" case pdt_context_override - case _custom_local_port = "custom_local_port" - case _tunnel_id = "tunnel_id" case uses_tns - case _pdt_concurrency = "pdt_concurrency" - case disable_context_comment - case _oauth_application_id = "oauth_application_id" - case always_retry_failed_builds - case cost_estimate_enabled - case pdt_api_control_enabled } private var _name: AnyString? /** @@ -24500,68 +19951,12 @@ public struct WriteDBConnection: SDKModel { */ public var pdt_context_override: WriteDBConnectionOverride? - private var _custom_local_port: AnyInt? - /** - * 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. - */ - public var custom_local_port: Int64? { - get { _custom_local_port?.value } - set { _custom_local_port = newValue.map(AnyInt.init) } - } - - private var _tunnel_id: AnyString? - /** - * The Id of the ssh tunnel this connection uses - */ - public var tunnel_id: String? { - get { _tunnel_id?.value } - set { _tunnel_id = newValue.map(AnyString.init) } - } - /** * Enable Transparent Network Substrate (TNS) connections */ public var uses_tns: Bool? - private var _pdt_concurrency: AnyInt? - /** - * Maximum number of threads to use to build PDTs in parallel - */ - public var pdt_concurrency: Int64? { - get { _pdt_concurrency?.value } - set { _pdt_concurrency = newValue.map(AnyInt.init) } - } - - /** - * When disable_context_comment is true comment will not be added to SQL - */ - public var disable_context_comment: Bool? - - private var _oauth_application_id: AnyString? - /** - * An External OAuth Application to use for authenticating to the database - */ - public var oauth_application_id: String? { - get { _oauth_application_id?.value } - set { _oauth_application_id = newValue.map(AnyString.init) } - } - - /** - * When true, error PDTs will be retried every regenerator cycle - */ - public var always_retry_failed_builds: Bool? - - /** - * When true, query cost estimate will be displayed in explore. - */ - public var cost_estimate_enabled: Bool? - - /** - * PDT builds on this connection can be kicked off and cancelled via API. - */ - public var pdt_api_control_enabled: Bool? - - public init(name: String? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, db_timezone: String? = nil, query_timezone: String? = nil, schema: String? = nil, max_connections: Int64? = nil, max_billing_gigabytes: String? = nil, ssl: Bool? = nil, verify_ssl: Bool? = nil, tmp_db_name: String? = nil, jdbc_additional_params: String? = nil, pool_timeout: Int64? = nil, dialect_name: String? = nil, user_db_credentials: Bool? = nil, user_attribute_fields: [String]? = nil, maintenance_cron: String? = nil, sql_runner_precache_tables: Bool? = nil, sql_writing_with_info_schema: Bool? = nil, after_connect_statements: String? = nil, pdt_context_override: WriteDBConnectionOverride? = nil, custom_local_port: Int64? = nil, tunnel_id: String? = nil, uses_tns: Bool? = nil, pdt_concurrency: Int64? = nil, disable_context_comment: Bool? = nil, oauth_application_id: String? = nil, always_retry_failed_builds: Bool? = nil, cost_estimate_enabled: Bool? = nil, pdt_api_control_enabled: Bool? = nil) { + public init(name: String? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, db_timezone: String? = nil, query_timezone: String? = nil, schema: String? = nil, max_connections: Int64? = nil, max_billing_gigabytes: String? = nil, ssl: Bool? = nil, verify_ssl: Bool? = nil, tmp_db_name: String? = nil, jdbc_additional_params: String? = nil, pool_timeout: Int64? = nil, dialect_name: String? = nil, user_db_credentials: Bool? = nil, user_attribute_fields: [String]? = nil, maintenance_cron: String? = nil, sql_runner_precache_tables: Bool? = nil, sql_writing_with_info_schema: Bool? = nil, after_connect_statements: String? = nil, pdt_context_override: WriteDBConnectionOverride? = nil, uses_tns: Bool? = nil) { self._name = name.map(AnyString.init) self._host = host.map(AnyString.init) self._port = port.map(AnyString.init) @@ -24588,15 +19983,7 @@ public struct WriteDBConnection: SDKModel { self.sql_writing_with_info_schema = sql_writing_with_info_schema self._after_connect_statements = after_connect_statements.map(AnyString.init) self.pdt_context_override = pdt_context_override - self._custom_local_port = custom_local_port.map(AnyInt.init) - self._tunnel_id = tunnel_id.map(AnyString.init) self.uses_tns = uses_tns - self._pdt_concurrency = pdt_concurrency.map(AnyInt.init) - self.disable_context_comment = disable_context_comment - self._oauth_application_id = oauth_application_id.map(AnyString.init) - self.always_retry_failed_builds = always_retry_failed_builds - self.cost_estimate_enabled = cost_estimate_enabled - self.pdt_api_control_enabled = pdt_api_control_enabled } } @@ -24687,145 +20074,50 @@ public struct WriteDBConnectionOverride: SDKModel { /** * Database name */ - public var database: String? { - get { _database?.value } - set { _database = newValue.map(AnyString.init) } - } - - private var _schema: AnyString? - /** - * Schema name - */ - public var schema: String? { - get { _schema?.value } - set { _schema = newValue.map(AnyString.init) } - } - - private var _jdbc_additional_params: AnyString? - /** - * Additional params to add to JDBC connection string - */ - public var jdbc_additional_params: String? { - get { _jdbc_additional_params?.value } - set { _jdbc_additional_params = newValue.map(AnyString.init) } - } - - private var _after_connect_statements: AnyString? - /** - * SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature - */ - public var after_connect_statements: String? { - get { _after_connect_statements?.value } - set { _after_connect_statements = newValue.map(AnyString.init) } - } - - public init(context: String? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, schema: String? = nil, jdbc_additional_params: String? = nil, after_connect_statements: String? = nil) { - self._context = context.map(AnyString.init) - self._host = host.map(AnyString.init) - self._port = port.map(AnyString.init) - self._username = username.map(AnyString.init) - self._password = password.map(AnyString.init) - self._certificate = certificate.map(AnyString.init) - self._file_type = file_type.map(AnyString.init) - self._database = database.map(AnyString.init) - self._schema = schema.map(AnyString.init) - self._jdbc_additional_params = jdbc_additional_params.map(AnyString.init) - self._after_connect_statements = after_connect_statements.map(AnyString.init) - } - -} - -/** - * Dynamic writeable type for EmbedSecret removes: - * created_at, id, secret, user_id - */ -public struct WriteEmbedSecret: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _algorithm = "algorithm" - case enabled - case secret_type - } - private var _algorithm: AnyString? - /** - * Signing algorithm to use with this secret. Either `hmac/sha-256`(default) or `hmac/sha-1` - */ - public var algorithm: String? { - get { _algorithm?.value } - set { _algorithm = newValue.map(AnyString.init) } - } - - /** - * Is this secret currently enabled - */ - public var enabled: Bool? - - /** - * Field to distinguish between SSO secrets and JWT secrets Valid values are: "SSO", "JWT". - */ - public var secret_type: SecretType? - - public init(algorithm: String? = nil, enabled: Bool? = nil, secret_type: SecretType? = nil) { - self._algorithm = algorithm.map(AnyString.init) - self.enabled = enabled - self.secret_type = secret_type - } - -} - -/** - * Dynamic writeable type for ExternalOauthApplication removes: - * can, id, created_at - */ -public struct WriteExternalOauthApplication: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _client_id = "client_id" - case _client_secret = "client_secret" - case _dialect_name = "dialect_name" - } - private var _name: AnyString? - /** - * The name of this application. For Snowflake connections, this should be the name of the host database. - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var database: String? { + get { _database?.value } + set { _database = newValue.map(AnyString.init) } } - private var _client_id: AnyString? + private var _schema: AnyString? /** - * The OAuth Client ID for this application + * Schema name */ - public var client_id: String? { - get { _client_id?.value } - set { _client_id = newValue.map(AnyString.init) } + public var schema: String? { + get { _schema?.value } + set { _schema = newValue.map(AnyString.init) } } - private var _client_secret: AnyString? + private var _jdbc_additional_params: AnyString? /** - * (Write-Only) The OAuth Client Secret for this application + * Additional params to add to JDBC connection string */ - public var client_secret: String? { - get { _client_secret?.value } - set { _client_secret = newValue.map(AnyString.init) } + public var jdbc_additional_params: String? { + get { _jdbc_additional_params?.value } + set { _jdbc_additional_params = newValue.map(AnyString.init) } } - private var _dialect_name: AnyString? + private var _after_connect_statements: AnyString? /** - * The database dialect for this application. + * SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature */ - public var dialect_name: String? { - get { _dialect_name?.value } - set { _dialect_name = newValue.map(AnyString.init) } + public var after_connect_statements: String? { + get { _after_connect_statements?.value } + set { _after_connect_statements = newValue.map(AnyString.init) } } - public init(name: String? = nil, client_id: String? = nil, client_secret: String? = nil, dialect_name: String? = nil) { - self._name = name.map(AnyString.init) - self._client_id = client_id.map(AnyString.init) - self._client_secret = client_secret.map(AnyString.init) - self._dialect_name = dialect_name.map(AnyString.init) + public init(context: String? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, schema: String? = nil, jdbc_additional_params: String? = nil, after_connect_statements: String? = nil) { + self._context = context.map(AnyString.init) + self._host = host.map(AnyString.init) + self._port = port.map(AnyString.init) + self._username = username.map(AnyString.init) + self._password = password.map(AnyString.init) + self._certificate = certificate.map(AnyString.init) + self._file_type = file_type.map(AnyString.init) + self._database = database.map(AnyString.init) + self._schema = schema.map(AnyString.init) + self._jdbc_additional_params = jdbc_additional_params.map(AnyString.init) + self._after_connect_statements = after_connect_statements.map(AnyString.init) } } @@ -24928,9 +20220,266 @@ public struct WriteGroup: SDKModel { set { _name = newValue.map(AnyString.init) } } - public init(can_add_to_content_metadata: Bool? = nil, name: String? = nil) { - self.can_add_to_content_metadata = can_add_to_content_metadata - self._name = name.map(AnyString.init) + public init(can_add_to_content_metadata: Bool? = nil, name: String? = nil) { + self.can_add_to_content_metadata = can_add_to_content_metadata + self._name = name.map(AnyString.init) + } + +} + +/** + * Dynamic writeable type for Homepage removes: + * can, content_metadata_id, created_at, homepage_sections, id, updated_at, user_id, primary_homepage + */ +public struct WriteHomepage: SDKModel { + + private enum CodingKeys : String, CodingKey { + case deleted_at + case _description = "description" + case _section_order = "section_order" + case _title = "title" + } + /** + * Date of homepage deletion + */ + public var deleted_at: Date? + + private var _description: AnyString? + /** + * Description of the homepage + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } + + private var _section_order: [AnyInt]? + /** + * ids of the homepage sections in the order they should be displayed + */ + public var section_order: [Int64]? { + get { if let v = _section_order { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _section_order = v.map { AnyInt.init($0) } } else { _section_order = nil } } + } + + private var _title: AnyString? + /** + * Title of the homepage + */ + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } + } + + public init(deleted_at: Date? = nil, description: String? = nil, section_order: [Int64]? = nil, title: String? = nil) { + self.deleted_at = deleted_at + self._description = description.map(AnyString.init) + if let v = section_order { _section_order = v.map { AnyInt.init($0) } } else { _section_order = nil } + self._title = title.map(AnyString.init) + } + +} + +/** + * Dynamic writeable type for HomepageItem removes: + * can, content_created_by, content_favorite_id, content_metadata_id, content_updated_at, custom_image_url, description, favorite_count, id, image_url, location, section_fetch_time, title, url, view_count + */ +public struct WriteHomepageItem: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _custom_description = "custom_description" + case _custom_image_data_base64 = "custom_image_data_base64" + case _custom_title = "custom_title" + case _custom_url = "custom_url" + case _dashboard_id = "dashboard_id" + case _homepage_section_id = "homepage_section_id" + case _look_id = "look_id" + case _lookml_dashboard_id = "lookml_dashboard_id" + case _order = "order" + case use_custom_description + case use_custom_image + case use_custom_title + case use_custom_url + } + private var _custom_description: AnyString? + /** + * Custom description entered by the user, if present + */ + public var custom_description: String? { + get { _custom_description?.value } + set { _custom_description = newValue.map(AnyString.init) } + } + + private var _custom_image_data_base64: AnyString? + /** + * (Write-Only) base64 encoded image data + */ + public var custom_image_data_base64: String? { + get { _custom_image_data_base64?.value } + set { _custom_image_data_base64 = newValue.map(AnyString.init) } + } + + private var _custom_title: AnyString? + /** + * Custom title entered by the user, if present + */ + public var custom_title: String? { + get { _custom_title?.value } + set { _custom_title = newValue.map(AnyString.init) } + } + + private var _custom_url: AnyString? + /** + * Custom url entered by the user, if present + */ + public var custom_url: String? { + get { _custom_url?.value } + set { _custom_url = newValue.map(AnyString.init) } + } + + private var _dashboard_id: AnyInt? + /** + * Dashboard to base this item on + */ + public var dashboard_id: Int64? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyInt.init) } + } + + private var _homepage_section_id: AnyInt? + /** + * Associated Homepage Section + */ + public var homepage_section_id: Int64? { + get { _homepage_section_id?.value } + set { _homepage_section_id = newValue.map(AnyInt.init) } + } + + private var _look_id: AnyInt? + /** + * Look to base this item on + */ + public var look_id: Int64? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyInt.init) } + } + + private var _lookml_dashboard_id: AnyString? + /** + * LookML Dashboard to base this item on + */ + public var lookml_dashboard_id: String? { + get { _lookml_dashboard_id?.value } + set { _lookml_dashboard_id = newValue.map(AnyString.init) } + } + + private var _order: AnyInt? + /** + * An arbitrary integer representing the sort order within the section + */ + public var order: Int64? { + get { _order?.value } + set { _order = newValue.map(AnyInt.init) } + } + + /** + * Whether the custom description should be used instead of the content description, if the item is associated with content + */ + public var use_custom_description: Bool? + + /** + * Whether the custom image should be used instead of the content image, if the item is associated with content + */ + public var use_custom_image: Bool? + + /** + * Whether the custom title should be used instead of the content title, if the item is associated with content + */ + public var use_custom_title: Bool? + + /** + * Whether the custom url should be used instead of the content url, if the item is associated with content + */ + public var use_custom_url: Bool? + + public init(custom_description: String? = nil, custom_image_data_base64: String? = nil, custom_title: String? = nil, custom_url: String? = nil, dashboard_id: Int64? = nil, homepage_section_id: Int64? = nil, look_id: Int64? = nil, lookml_dashboard_id: String? = nil, order: Int64? = nil, use_custom_description: Bool? = nil, use_custom_image: Bool? = nil, use_custom_title: Bool? = nil, use_custom_url: Bool? = nil) { + self._custom_description = custom_description.map(AnyString.init) + self._custom_image_data_base64 = custom_image_data_base64.map(AnyString.init) + self._custom_title = custom_title.map(AnyString.init) + self._custom_url = custom_url.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyInt.init) + self._homepage_section_id = homepage_section_id.map(AnyInt.init) + self._look_id = look_id.map(AnyInt.init) + self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) + self._order = order.map(AnyInt.init) + self.use_custom_description = use_custom_description + self.use_custom_image = use_custom_image + self.use_custom_title = use_custom_title + self.use_custom_url = use_custom_url + } + +} + +/** + * Dynamic writeable type for HomepageSection removes: + * can, created_at, detail_url, homepage_items, id, is_header, updated_at, visible_item_order + */ +public struct WriteHomepageSection: SDKModel { + + private enum CodingKeys : String, CodingKey { + case deleted_at + case _homepage_id = "homepage_id" + case _item_order = "item_order" + case _title = "title" + case _description = "description" + } + /** + * Time at which this section was deleted. + */ + public var deleted_at: Date? + + private var _homepage_id: AnyInt? + /** + * Id reference to parent homepage + */ + public var homepage_id: Int64? { + get { _homepage_id?.value } + set { _homepage_id = newValue.map(AnyInt.init) } + } + + private var _item_order: [AnyInt]? + /** + * ids of the homepage items in the order they should be displayed + */ + public var item_order: [Int64]? { + get { if let v = _item_order { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _item_order = v.map { AnyInt.init($0) } } else { _item_order = nil } } + } + + private var _title: AnyString? + /** + * Name of row + */ + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } + } + + private var _description: AnyString? + /** + * Description of the content found in this section. + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } + + public init(deleted_at: Date? = nil, homepage_id: Int64? = nil, item_order: [Int64]? = nil, title: String? = nil, description: String? = nil) { + self.deleted_at = deleted_at + self._homepage_id = homepage_id.map(AnyInt.init) + if let v = item_order { _item_order = v.map { AnyInt.init($0) } } else { _item_order = nil } + self._title = title.map(AnyString.init) + self._description = description.map(AnyString.init) } } @@ -24956,19 +20505,19 @@ public struct WriteIntegration: SDKModel { */ public var params: [IntegrationParam]? - private var _installed_delegate_oauth_targets: [AnyString]? + private var _installed_delegate_oauth_targets: [AnyInt]? /** * Whether the integration is available to users. */ - public var installed_delegate_oauth_targets: [String]? { + public var installed_delegate_oauth_targets: [Int64]? { get { if let v = _installed_delegate_oauth_targets { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _installed_delegate_oauth_targets = v.map { AnyString.init($0) } } else { _installed_delegate_oauth_targets = nil } } + set { if let v = newValue { _installed_delegate_oauth_targets = v.map { AnyInt.init($0) } } else { _installed_delegate_oauth_targets = nil } } } - public init(enabled: Bool? = nil, params: [IntegrationParam]? = nil, installed_delegate_oauth_targets: [String]? = nil) { + public init(enabled: Bool? = nil, params: [IntegrationParam]? = nil, installed_delegate_oauth_targets: [Int64]? = nil) { self.enabled = enabled self.params = params - if let v = installed_delegate_oauth_targets { _installed_delegate_oauth_targets = v.map { AnyString.init($0) } } else { _installed_delegate_oauth_targets = nil } + if let v = installed_delegate_oauth_targets { _installed_delegate_oauth_targets = v.map { AnyInt.init($0) } } else { _installed_delegate_oauth_targets = nil } } } @@ -25157,22 +20706,22 @@ public struct WriteLDAPConfig: SDKModel { */ public var connection_tls_no_verify: Bool? - private var _default_new_user_group_ids: [AnyString]? + private var _default_new_user_group_ids: [AnyInt]? /** * (Write-Only) Array of ids of groups that will be applied to new users the first time they login via LDAP */ - public var default_new_user_group_ids: [String]? { + public var default_new_user_group_ids: [Int64]? { get { if let v = _default_new_user_group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } } + set { if let v = newValue { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } } } - private var _default_new_user_role_ids: [AnyString]? + private var _default_new_user_role_ids: [AnyInt]? /** * (Write-Only) Array of ids of roles that will be applied to new users the first time they login via LDAP */ - public var default_new_user_role_ids: [String]? { + public var default_new_user_role_ids: [Int64]? { get { if let v = _default_new_user_role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } } + set { if let v = newValue { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } } } /** @@ -25355,7 +20904,7 @@ public struct WriteLDAPConfig: SDKModel { */ public var allow_direct_roles: Bool? - public init(alternate_email_login_allowed: Bool? = nil, auth_password: String? = nil, auth_requires_role: Bool? = nil, auth_username: String? = nil, connection_host: String? = nil, connection_port: String? = nil, connection_tls: Bool? = nil, connection_tls_no_verify: Bool? = nil, default_new_user_group_ids: [String]? = nil, default_new_user_role_ids: [String]? = nil, enabled: Bool? = nil, force_no_page: Bool? = nil, groups_base_dn: String? = nil, groups_finder_type: String? = nil, groups_member_attribute: String? = nil, groups_objectclasses: String? = nil, groups_user_attribute: String? = nil, groups_with_role_ids: [LDAPGroupWrite]? = nil, merge_new_users_by_email: Bool? = nil, set_roles_from_groups: Bool? = nil, test_ldap_password: String? = nil, test_ldap_user: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attribute_map_ldap_id: String? = nil, user_attributes_with_ids: [LDAPUserAttributeWrite]? = nil, user_bind_base_dn: String? = nil, user_custom_filter: String? = nil, user_id_attribute_names: String? = nil, user_objectclass: String? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil) { + public init(alternate_email_login_allowed: Bool? = nil, auth_password: String? = nil, auth_requires_role: Bool? = nil, auth_username: String? = nil, connection_host: String? = nil, connection_port: String? = nil, connection_tls: Bool? = nil, connection_tls_no_verify: Bool? = nil, default_new_user_group_ids: [Int64]? = nil, default_new_user_role_ids: [Int64]? = nil, enabled: Bool? = nil, force_no_page: Bool? = nil, groups_base_dn: String? = nil, groups_finder_type: String? = nil, groups_member_attribute: String? = nil, groups_objectclasses: String? = nil, groups_user_attribute: String? = nil, groups_with_role_ids: [LDAPGroupWrite]? = nil, merge_new_users_by_email: Bool? = nil, set_roles_from_groups: Bool? = nil, test_ldap_password: String? = nil, test_ldap_user: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attribute_map_ldap_id: String? = nil, user_attributes_with_ids: [LDAPUserAttributeWrite]? = nil, user_bind_base_dn: String? = nil, user_custom_filter: String? = nil, user_id_attribute_names: String? = nil, user_objectclass: String? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil) { self.alternate_email_login_allowed = alternate_email_login_allowed self._auth_password = auth_password.map(AnyString.init) self.auth_requires_role = auth_requires_role @@ -25364,8 +20913,8 @@ public struct WriteLDAPConfig: SDKModel { self._connection_port = connection_port.map(AnyString.init) self.connection_tls = connection_tls self.connection_tls_no_verify = connection_tls_no_verify - if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } - if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } + if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } + if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } self.enabled = enabled self.force_no_page = force_no_page self._groups_base_dn = groups_base_dn.map(AnyString.init) @@ -25410,30 +20959,6 @@ public struct WriteLegacyFeature: SDKModel { } -/** - * Dynamic writeable type for LookBasic removes: - * can, content_metadata_id, id, title - */ -public struct WriteLookBasic: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _user_id = "user_id" - } - private var _user_id: AnyString? - /** - * User Id - */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } - } - - public init(user_id: String? = nil) { - self._user_id = user_id.map(AnyString.init) - } - -} - /** * Dynamic writeable type for LookmlModel removes: * can, explores, has_content, label @@ -25489,13 +21014,12 @@ public struct WriteLookmlModel: SDKModel { /** * 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, view_count, url + * 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, view_count, user, url */ public struct WriteLookWithQuery: SDKModel { private enum CodingKeys : String, CodingKey { case _title = "title" - case _user_id = "user_id" case deleted case _description = "description" case is_run_on_load @@ -25503,6 +21027,9 @@ public struct WriteLookWithQuery: SDKModel { case _query_id = "query_id" case folder case _folder_id = "folder_id" + case _user_id = "user_id" + case _space_id = "space_id" + case space case query } private var _title: AnyString? @@ -25514,15 +21041,6 @@ public struct WriteLookWithQuery: SDKModel { set { _title = newValue.map(AnyString.init) } } - private var _user_id: AnyString? - /** - * User Id - */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } - } - /** * Whether or not a look is 'soft' deleted. */ @@ -25547,13 +21065,13 @@ public struct WriteLookWithQuery: SDKModel { */ public var `public`: Bool? - private var _query_id: AnyString? + private var _query_id: AnyInt? /** * Query Id */ - public var query_id: String? { + public var query_id: Int64? { get { _query_id?.value } - set { _query_id = newValue.map(AnyString.init) } + set { _query_id = newValue.map(AnyInt.init) } } /** @@ -25571,22 +21089,48 @@ public struct WriteLookWithQuery: SDKModel { set { _folder_id = newValue.map(AnyString.init) } } + private var _user_id: AnyInt? + /** + * User Id + */ + public var user_id: Int64? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyInt.init) } + } + + private var _space_id: AnyString? + /** + * Space Id + */ + public var space_id: String? { + get { _space_id?.value } + set { _space_id = newValue.map(AnyString.init) } + } + + /** + * Dynamic writeable type for SpaceBase 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 + */ + public var space: WriteSpaceBase? + /** * Dynamic writeable type for Query removes: * can, id, slug, share_url, expanded_share_url, url, has_table_calculations */ public var query: WriteQuery? - public init(title: String? = nil, user_id: String? = nil, deleted: Bool? = nil, description: String? = nil, is_run_on_load: Bool? = nil, `public`: Bool? = nil, query_id: String? = nil, folder: WriteFolderBase? = nil, folder_id: String? = nil, query: WriteQuery? = nil) { + public init(title: String? = nil, deleted: Bool? = nil, description: String? = nil, is_run_on_load: Bool? = nil, `public`: Bool? = nil, query_id: Int64? = nil, folder: WriteFolderBase? = nil, folder_id: String? = nil, user_id: Int64? = nil, space_id: String? = nil, space: WriteSpaceBase? = nil, query: WriteQuery? = nil) { self._title = title.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) self.deleted = deleted self._description = description.map(AnyString.init) self.is_run_on_load = is_run_on_load self.`public` = `public` - self._query_id = query_id.map(AnyString.init) + self._query_id = query_id.map(AnyInt.init) self.folder = folder self._folder_id = folder_id.map(AnyString.init) + self._user_id = user_id.map(AnyInt.init) + self._space_id = space_id.map(AnyString.init) + self.space = space self.query = query } @@ -25670,41 +21214,6 @@ public struct WriteMergeQuery: SDKModel { } -/** - * Dynamic writeable type for MobileToken removes: - * id - */ -public struct WriteMobileToken: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _device_token = "device_token" - case device_type - } - private var _device_token: AnyString - /** - * Specifies the device token - */ - public var device_token: String { - get { _device_token.value } - set { _device_token = AnyString.init(newValue) } - } - - /** - * Specifies type of device. Valid values are: "android", "ios". - */ - public var device_type: DeviceType - - public init(device_token: String, device_type: DeviceType) { - self._device_token = AnyString.init(device_token) - self.device_type = device_type - } - - public init(_ device_token: String, _ device_type: DeviceType) { - self.init(device_token: device_token, device_type: device_type) - } - -} - /** * Dynamic writeable type for ModelSet removes: * can, all_access, built_in, id, url @@ -25737,70 +21246,6 @@ public struct WriteModelSet: SDKModel { } -/** - * Dynamic writeable type for OauthClientApp removes: - * can, client_guid, tokens_invalid_before, activated_users - */ -public struct WriteOauthClientApp: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _redirect_uri = "redirect_uri" - case _display_name = "display_name" - case _description = "description" - case enabled - case _group_id = "group_id" - } - private var _redirect_uri: AnyString? - /** - * The uri with which this application will receive an auth code by browser redirect. - */ - public var redirect_uri: String? { - get { _redirect_uri?.value } - set { _redirect_uri = newValue.map(AnyString.init) } - } - - private var _display_name: AnyString? - /** - * The application's display name - */ - public var display_name: String? { - get { _display_name?.value } - set { _display_name = newValue.map(AnyString.init) } - } - - private var _description: AnyString? - /** - * A description of the application that will be displayed to users - */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } - } - - /** - * 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. - */ - public var enabled: Bool? - - private var _group_id: AnyString? - /** - * 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 - */ - public var group_id: String? { - get { _group_id?.value } - set { _group_id = newValue.map(AnyString.init) } - } - - public init(redirect_uri: String? = nil, display_name: String? = nil, description: String? = nil, enabled: Bool? = nil, group_id: String? = nil) { - self._redirect_uri = redirect_uri.map(AnyString.init) - self._display_name = display_name.map(AnyString.init) - self._description = description.map(AnyString.init) - self.enabled = enabled - self._group_id = group_id.map(AnyString.init) - } - -} - /** * 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 @@ -25811,7 +21256,7 @@ public struct WriteOIDCConfig: SDKModel { case alternate_email_login_allowed case _audience = "audience" case auth_requires_role - case _authorization_endpoint = "authorization_endpoint" + case authorization_endpoint case _default_new_user_group_ids = "default_new_user_group_ids" case _default_new_user_role_ids = "default_new_user_role_ids" case enabled @@ -25828,7 +21273,7 @@ public struct WriteOIDCConfig: SDKModel { case _user_attribute_map_first_name = "user_attribute_map_first_name" case _user_attribute_map_last_name = "user_attribute_map_last_name" case user_attributes_with_ids - case _userinfo_endpoint = "userinfo_endpoint" + case userinfo_endpoint case allow_normal_group_membership case allow_roles_from_normal_groups case allow_direct_roles @@ -25852,31 +21297,27 @@ public struct WriteOIDCConfig: SDKModel { */ public var auth_requires_role: Bool? - private var _authorization_endpoint: AnyString? /** * OpenID Provider Authorization Url */ - public var authorization_endpoint: String? { - get { _authorization_endpoint?.value } - set { _authorization_endpoint = newValue.map(AnyString.init) } - } + public var authorization_endpoint: URI? - private var _default_new_user_group_ids: [AnyString]? + private var _default_new_user_group_ids: [AnyInt]? /** * (Write-Only) Array of ids of groups that will be applied to new users the first time they login via OIDC */ - public var default_new_user_group_ids: [String]? { + public var default_new_user_group_ids: [Int64]? { get { if let v = _default_new_user_group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } } + set { if let v = newValue { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } } } - private var _default_new_user_role_ids: [AnyString]? + private var _default_new_user_role_ids: [AnyInt]? /** * (Write-Only) Array of ids of roles that will be applied to new users the first time they login via OIDC */ - public var default_new_user_role_ids: [String]? { + public var default_new_user_role_ids: [Int64]? { get { if let v = _default_new_user_role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } } + set { if let v = newValue { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } } } /** @@ -25989,14 +21430,10 @@ public struct WriteOIDCConfig: SDKModel { */ public var user_attributes_with_ids: [OIDCUserAttributeWrite]? - private var _userinfo_endpoint: AnyString? /** * OpenID Provider User Information Url */ - public var userinfo_endpoint: String? { - get { _userinfo_endpoint?.value } - set { _userinfo_endpoint = newValue.map(AnyString.init) } - } + public var userinfo_endpoint: URI? /** * 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. @@ -26013,13 +21450,13 @@ public struct WriteOIDCConfig: SDKModel { */ public var allow_direct_roles: Bool? - public init(alternate_email_login_allowed: Bool? = nil, audience: String? = nil, auth_requires_role: Bool? = nil, authorization_endpoint: String? = nil, default_new_user_group_ids: [String]? = nil, default_new_user_role_ids: [String]? = nil, enabled: Bool? = nil, groups_attribute: String? = nil, groups_with_role_ids: [OIDCGroupWrite]? = nil, identifier: String? = nil, issuer: String? = nil, new_user_migration_types: String? = nil, scopes: [String]? = nil, secret: String? = nil, set_roles_from_groups: Bool? = nil, token_endpoint: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attributes_with_ids: [OIDCUserAttributeWrite]? = nil, userinfo_endpoint: String? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil) { + public init(alternate_email_login_allowed: Bool? = nil, audience: String? = nil, auth_requires_role: Bool? = nil, authorization_endpoint: URI? = nil, default_new_user_group_ids: [Int64]? = nil, default_new_user_role_ids: [Int64]? = nil, enabled: Bool? = nil, groups_attribute: String? = nil, groups_with_role_ids: [OIDCGroupWrite]? = nil, identifier: String? = nil, issuer: String? = nil, new_user_migration_types: String? = nil, scopes: [String]? = nil, secret: String? = nil, set_roles_from_groups: Bool? = nil, token_endpoint: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attributes_with_ids: [OIDCUserAttributeWrite]? = nil, userinfo_endpoint: URI? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil) { self.alternate_email_login_allowed = alternate_email_login_allowed self._audience = audience.map(AnyString.init) self.auth_requires_role = auth_requires_role - self._authorization_endpoint = authorization_endpoint.map(AnyString.init) - if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } - if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } + self.authorization_endpoint = authorization_endpoint + if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } + if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } self.enabled = enabled self._groups_attribute = groups_attribute.map(AnyString.init) self.groups_with_role_ids = groups_with_role_ids @@ -26034,7 +21471,7 @@ public struct WriteOIDCConfig: SDKModel { self._user_attribute_map_first_name = user_attribute_map_first_name.map(AnyString.init) self._user_attribute_map_last_name = user_attribute_map_last_name.map(AnyString.init) self.user_attributes_with_ids = user_attributes_with_ids - self._userinfo_endpoint = userinfo_endpoint.map(AnyString.init) + self.userinfo_endpoint = userinfo_endpoint self.allow_normal_group_membership = allow_normal_group_membership self.allow_roles_from_normal_groups = allow_roles_from_normal_groups self.allow_direct_roles = allow_direct_roles @@ -26042,195 +21479,79 @@ public struct WriteOIDCConfig: SDKModel { } -/** - * Dynamic writeable type for PasswordConfig removes: - * can - */ -public struct WritePasswordConfig: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _min_length = "min_length" - case require_numeric - case require_upperlower - case require_special - } - private var _min_length: AnyInt? - /** - * Minimum number of characters required for a new password. Must be between 7 and 100 - */ - public var min_length: Int64? { - get { _min_length?.value } - set { _min_length = newValue.map(AnyInt.init) } - } - - /** - * Require at least one numeric character - */ - public var require_numeric: Bool? - - /** - * Require at least one uppercase and one lowercase letter - */ - public var require_upperlower: Bool? - - /** - * Require at least one special character - */ - public var require_special: Bool? - - public init(min_length: Int64? = nil, require_numeric: Bool? = nil, require_upperlower: Bool? = nil, require_special: Bool? = nil) { - self._min_length = min_length.map(AnyInt.init) - self.require_numeric = require_numeric - self.require_upperlower = require_upperlower - self.require_special = require_special - } - -} - -/** - * Dynamic writeable type for PermissionSet removes: - * can, all_access, built_in, id, url - */ -public struct WritePermissionSet: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _permissions = "permissions" - } - private var _name: AnyString? - /** - * Name of PermissionSet - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - private var _permissions: [AnyString]? - public var permissions: [String]? { - get { if let v = _permissions { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } } - } - - public init(name: String? = nil, permissions: [String]? = nil) { - self._name = name.map(AnyString.init) - if let v = permissions { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } - } - -} - -/** - * Dynamic writeable type for PrivatelabelConfiguration removes: - * logo_url, favicon_url - */ -public struct WritePrivatelabelConfiguration: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _logo_file = "logo_file" - case _favicon_file = "favicon_file" - case _default_title = "default_title" - case show_help_menu - case show_docs - case show_email_sub_options - case allow_looker_mentions - case allow_looker_links - case custom_welcome_email_advanced - case setup_mentions - case alerts_logo - case alerts_links - case folders_mentions - } - private var _logo_file: AnyString? - /** - * Customer logo image. Expected base64 encoded data (write-only) - */ - public var logo_file: String? { - get { _logo_file?.value } - set { _logo_file = newValue.map(AnyString.init) } - } - - private var _favicon_file: AnyString? - /** - * Custom favicon image. Expected base64 encoded data (write-only) - */ - public var favicon_file: String? { - get { _favicon_file?.value } - set { _favicon_file = newValue.map(AnyString.init) } - } - - private var _default_title: AnyString? - /** - * Default page title - */ - public var default_title: String? { - get { _default_title?.value } - set { _default_title = newValue.map(AnyString.init) } - } - - /** - * Boolean to toggle showing help menus - */ - public var show_help_menu: Bool? +/** + * Dynamic writeable type for PasswordConfig removes: + * can + */ +public struct WritePasswordConfig: SDKModel { + private enum CodingKeys : String, CodingKey { + case _min_length = "min_length" + case require_numeric + case require_upperlower + case require_special + } + private var _min_length: AnyInt? /** - * Boolean to toggle showing docs + * Minimum number of characters required for a new password. Must be between 7 and 100 */ - public var show_docs: Bool? + public var min_length: Int64? { + get { _min_length?.value } + set { _min_length = newValue.map(AnyInt.init) } + } /** - * Boolean to toggle showing email subscription options. + * Require at least one numeric character */ - public var show_email_sub_options: Bool? + public var require_numeric: Bool? /** - * Boolean to toggle mentions of Looker in emails + * Require at least one uppercase and one lowercase letter */ - public var allow_looker_mentions: Bool? + public var require_upperlower: Bool? /** - * Boolean to toggle links to Looker in emails + * Require at least one special character */ - public var allow_looker_links: Bool? + public var require_special: Bool? - /** - * Allow subject line and email heading customization in customized emails” - */ - public var custom_welcome_email_advanced: Bool? + public init(min_length: Int64? = nil, require_numeric: Bool? = nil, require_upperlower: Bool? = nil, require_special: Bool? = nil) { + self._min_length = min_length.map(AnyInt.init) + self.require_numeric = require_numeric + self.require_upperlower = require_upperlower + self.require_special = require_special + } - /** - * Remove the word Looker from appearing in the account setup page - */ - public var setup_mentions: Bool? +} - /** - * Remove Looker logo from Alerts - */ - public var alerts_logo: Bool? +/** + * Dynamic writeable type for PermissionSet removes: + * can, all_access, built_in, id, url + */ +public struct WritePermissionSet: SDKModel { + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _permissions = "permissions" + } + private var _name: AnyString? /** - * Remove Looker links from Alerts + * Name of PermissionSet */ - public var alerts_links: Bool? + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } - /** - * Remove Looker mentions in home folder page when you don’t have any items saved - */ - public var folders_mentions: Bool? + private var _permissions: [AnyString]? + public var permissions: [String]? { + get { if let v = _permissions { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } } + } - public init(logo_file: String? = nil, favicon_file: String? = nil, default_title: String? = nil, show_help_menu: Bool? = nil, show_docs: Bool? = nil, show_email_sub_options: Bool? = nil, allow_looker_mentions: Bool? = nil, allow_looker_links: Bool? = nil, custom_welcome_email_advanced: Bool? = nil, setup_mentions: Bool? = nil, alerts_logo: Bool? = nil, alerts_links: Bool? = nil, folders_mentions: Bool? = nil) { - self._logo_file = logo_file.map(AnyString.init) - self._favicon_file = favicon_file.map(AnyString.init) - self._default_title = default_title.map(AnyString.init) - self.show_help_menu = show_help_menu - self.show_docs = show_docs - self.show_email_sub_options = show_email_sub_options - self.allow_looker_mentions = allow_looker_mentions - self.allow_looker_links = allow_looker_links - self.custom_welcome_email_advanced = custom_welcome_email_advanced - self.setup_mentions = setup_mentions - self.alerts_logo = alerts_logo - self.alerts_links = alerts_links - self.folders_mentions = folders_mentions + public init(name: String? = nil, permissions: [String]? = nil) { + self._name = name.map(AnyString.init) + if let v = permissions { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } } } @@ -26259,7 +21580,6 @@ public struct WriteProject: SDKModel { case validation_required case git_release_mgmt_enabled case allow_warnings - case _dependency_status = "dependency_status" } private var _name: AnyString? /** @@ -26390,16 +21710,7 @@ public struct WriteProject: SDKModel { */ public var allow_warnings: Bool? - private var _dependency_status: AnyString? - /** - * Status of dependencies in your manifest & lockfile - */ - public var dependency_status: String? { - get { _dependency_status?.value } - set { _dependency_status = newValue.map(AnyString.init) } - } - - public init(name: String? = nil, git_remote_url: String? = nil, git_username: String? = nil, git_password: String? = nil, git_production_branch_name: String? = nil, use_git_cookie_auth: Bool? = nil, git_username_user_attribute: String? = nil, git_password_user_attribute: String? = nil, git_service_name: String? = nil, git_application_server_http_port: Int64? = nil, git_application_server_http_scheme: String? = nil, deploy_secret: String? = nil, unset_deploy_secret: Bool? = nil, pull_request_mode: PullRequestMode? = nil, validation_required: Bool? = nil, git_release_mgmt_enabled: Bool? = nil, allow_warnings: Bool? = nil, dependency_status: String? = nil) { + public init(name: String? = nil, git_remote_url: String? = nil, git_username: String? = nil, git_password: String? = nil, git_production_branch_name: String? = nil, use_git_cookie_auth: Bool? = nil, git_username_user_attribute: String? = nil, git_password_user_attribute: String? = nil, git_service_name: String? = nil, git_application_server_http_port: Int64? = nil, git_application_server_http_scheme: String? = nil, deploy_secret: String? = nil, unset_deploy_secret: Bool? = nil, pull_request_mode: PullRequestMode? = nil, validation_required: Bool? = nil, git_release_mgmt_enabled: Bool? = nil, allow_warnings: Bool? = nil) { self._name = name.map(AnyString.init) self._git_remote_url = git_remote_url.map(AnyString.init) self._git_username = git_username.map(AnyString.init) @@ -26417,7 +21728,6 @@ public struct WriteProject: SDKModel { self.validation_required = validation_required self.git_release_mgmt_enabled = git_release_mgmt_enabled self.allow_warnings = allow_warnings - self._dependency_status = dependency_status.map(AnyString.init) } } @@ -26448,6 +21758,7 @@ public struct WriteQuery: SDKModel { case _dynamic_fields = "dynamic_fields" case _client_id = "client_id" case _query_timezone = "query_timezone" + case runtime } private var _model: AnyString /** @@ -26604,7 +21915,12 @@ public struct WriteQuery: SDKModel { set { _query_timezone = newValue.map(AnyString.init) } } - public init(model: String, view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, query_timezone: String? = nil) { + /** + * (DEPRECATED) Runtime (Deprecated) + */ + public var runtime: Double? + + public init(model: String, view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, query_timezone: String? = nil, runtime: Double? = nil) { self._model = AnyString.init(model) self._view = AnyString.init(view) if let v = fields { _fields = v.map { AnyString.init($0) } } else { _fields = nil } @@ -26624,10 +21940,11 @@ public struct WriteQuery: SDKModel { self._dynamic_fields = dynamic_fields.map(AnyString.init) self._client_id = client_id.map(AnyString.init) self._query_timezone = query_timezone.map(AnyString.init) + self.runtime = runtime } - public init(_ model: String, _ view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, query_timezone: String? = nil) { - self.init(model: model, view: view, fields: fields, pivots: pivots, fill_fields: fill_fields, filters: filters, filter_expression: filter_expression, sorts: sorts, limit: limit, column_limit: column_limit, total: total, row_total: row_total, subtotals: subtotals, vis_config: vis_config, filter_config: filter_config, visible_ui_sections: visible_ui_sections, dynamic_fields: dynamic_fields, client_id: client_id, query_timezone: query_timezone) + public init(_ model: String, _ view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, query_timezone: String? = nil, runtime: Double? = nil) { + self.init(model: model, view: view, fields: fields, pivots: pivots, fill_fields: fill_fields, filters: filters, filter_expression: filter_expression, sorts: sorts, limit: limit, column_limit: column_limit, total: total, row_total: row_total, subtotals: subtotals, vis_config: vis_config, filter_config: filter_config, visible_ui_sections: visible_ui_sections, dynamic_fields: dynamic_fields, client_id: client_id, query_timezone: query_timezone, runtime: runtime) } } @@ -26723,13 +22040,13 @@ public struct WriteRole: SDKModel { */ public var permission_set: WritePermissionSet? - private var _permission_set_id: AnyString? + private var _permission_set_id: AnyInt? /** * (Write-Only) Id of permission set */ - public var permission_set_id: String? { + public var permission_set_id: Int64? { get { _permission_set_id?.value } - set { _permission_set_id = newValue.map(AnyString.init) } + set { _permission_set_id = newValue.map(AnyInt.init) } } /** @@ -26738,21 +22055,21 @@ public struct WriteRole: SDKModel { */ public var model_set: WriteModelSet? - private var _model_set_id: AnyString? + private var _model_set_id: AnyInt? /** * (Write-Only) Id of model set */ - public var model_set_id: String? { + public var model_set_id: Int64? { get { _model_set_id?.value } - set { _model_set_id = newValue.map(AnyString.init) } + set { _model_set_id = newValue.map(AnyInt.init) } } - public init(name: String? = nil, permission_set: WritePermissionSet? = nil, permission_set_id: String? = nil, model_set: WriteModelSet? = nil, model_set_id: String? = nil) { + public init(name: String? = nil, permission_set: WritePermissionSet? = nil, permission_set_id: Int64? = nil, model_set: WriteModelSet? = nil, model_set_id: Int64? = nil) { self._name = name.map(AnyString.init) self.permission_set = permission_set - self._permission_set_id = permission_set_id.map(AnyString.init) + self._permission_set_id = permission_set_id.map(AnyInt.init) self.model_set = model_set - self._model_set_id = model_set_id.map(AnyString.init) + self._model_set_id = model_set_id.map(AnyInt.init) } } @@ -26880,22 +22197,22 @@ public struct WriteSamlConfig: SDKModel { */ public var alternate_email_login_allowed: Bool? - private var _default_new_user_role_ids: [AnyString]? + private var _default_new_user_role_ids: [AnyInt]? /** * (Write-Only) Array of ids of roles that will be applied to new users the first time they login via Saml */ - public var default_new_user_role_ids: [String]? { + public var default_new_user_role_ids: [Int64]? { get { if let v = _default_new_user_role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } } + set { if let v = newValue { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } } } - private var _default_new_user_group_ids: [AnyString]? + private var _default_new_user_group_ids: [AnyInt]? /** * (Write-Only) Array of ids of groups that will be applied to new users the first time they login via Saml */ - public var default_new_user_group_ids: [String]? { + public var default_new_user_group_ids: [Int64]? { get { if let v = _default_new_user_group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } } + set { if let v = newValue { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } } } /** @@ -26965,7 +22282,7 @@ public struct WriteSamlConfig: SDKModel { */ public var allow_direct_roles: Bool? - public init(enabled: Bool? = nil, idp_cert: String? = nil, idp_url: String? = nil, idp_issuer: String? = nil, idp_audience: String? = nil, allowed_clock_drift: Int64? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, new_user_migration_types: String? = nil, alternate_email_login_allowed: Bool? = nil, default_new_user_role_ids: [String]? = nil, default_new_user_group_ids: [String]? = nil, set_roles_from_groups: Bool? = nil, groups_attribute: String? = nil, groups_with_role_ids: [SamlGroupWrite]? = nil, auth_requires_role: Bool? = nil, user_attributes_with_ids: [SamlUserAttributeWrite]? = nil, groups_finder_type: String? = nil, groups_member_value: String? = nil, bypass_login_page: Bool? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil) { + public init(enabled: Bool? = nil, idp_cert: String? = nil, idp_url: String? = nil, idp_issuer: String? = nil, idp_audience: String? = nil, allowed_clock_drift: Int64? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, new_user_migration_types: String? = nil, alternate_email_login_allowed: Bool? = nil, default_new_user_role_ids: [Int64]? = nil, default_new_user_group_ids: [Int64]? = nil, set_roles_from_groups: Bool? = nil, groups_attribute: String? = nil, groups_with_role_ids: [SamlGroupWrite]? = nil, auth_requires_role: Bool? = nil, user_attributes_with_ids: [SamlUserAttributeWrite]? = nil, groups_finder_type: String? = nil, groups_member_value: String? = nil, bypass_login_page: Bool? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil) { self.enabled = enabled self._idp_cert = idp_cert.map(AnyString.init) self._idp_url = idp_url.map(AnyString.init) @@ -26977,8 +22294,8 @@ public struct WriteSamlConfig: SDKModel { self._user_attribute_map_last_name = user_attribute_map_last_name.map(AnyString.init) self._new_user_migration_types = new_user_migration_types.map(AnyString.init) self.alternate_email_login_allowed = alternate_email_login_allowed - if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } - if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } + if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } + if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } self.set_roles_from_groups = set_roles_from_groups self._groups_attribute = groups_attribute.map(AnyString.init) self.groups_with_role_ids = groups_with_role_ids @@ -27041,13 +22358,13 @@ public struct WriteScheduledPlan: SDKModel { set { _name = newValue.map(AnyString.init) } } - private var _user_id: AnyString? + private var _user_id: AnyInt? /** * User Id which owns this scheduled plan */ - public var user_id: String? { + public var user_id: Int64? { get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + set { _user_id = newValue.map(AnyInt.init) } } /** @@ -27060,22 +22377,22 @@ public struct WriteScheduledPlan: SDKModel { */ public var enabled: Bool? - private var _look_id: AnyString? + private var _look_id: AnyInt? /** * Id of a look */ - public var look_id: String? { + public var look_id: Int64? { get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } + set { _look_id = newValue.map(AnyInt.init) } } - private var _dashboard_id: AnyString? + private var _dashboard_id: AnyInt? /** * Id of a dashboard */ - public var dashboard_id: String? { + public var dashboard_id: Int64? { get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + set { _dashboard_id = newValue.map(AnyInt.init) } } private var _lookml_dashboard_id: AnyString? @@ -27250,13 +22567,13 @@ public struct WriteScheduledPlan: SDKModel { set { _inline_table_width = newValue.map(AnyInt.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, query_id: 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, inline_table_width: Int64? = nil) { + public init(name: String? = nil, user_id: Int64? = nil, run_as_recipient: Bool? = nil, enabled: Bool? = nil, look_id: Int64? = nil, dashboard_id: Int64? = 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, query_id: 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, inline_table_width: Int64? = nil) { self._name = name.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) + self._user_id = user_id.map(AnyInt.init) self.run_as_recipient = run_as_recipient self.enabled = enabled - self._look_id = look_id.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) + self._look_id = look_id.map(AnyInt.init) + self._dashboard_id = dashboard_id.map(AnyInt.init) self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) self._filters_string = filters_string.map(AnyString.init) self._dashboard_filters = dashboard_filters.map(AnyString.init) @@ -27338,243 +22655,40 @@ public struct WriteSessionConfig: SDKModel { } /** - * Dynamic writeable type for Setting removes: - * embed_enabled - */ -public struct WriteSetting: SDKModel { - - private enum CodingKeys : String, CodingKey { - case extension_framework_enabled - case extension_load_url_enabled - case marketplace_auto_install_enabled - case marketplace_enabled - case marketplace_terms_accepted - case privatelabel_configuration - case custom_welcome_email - case onboarding_enabled - case _timezone = "timezone" - case allow_user_timezones - case data_connector_default_enabled - case _host_url = "host_url" - case override_warnings - case _email_domain_allowlist = "email_domain_allowlist" - case embed_cookieless_v2 - } - /** - * Toggle extension framework on or off - */ - public var extension_framework_enabled: Bool? - - /** - * (DEPRECATED) Toggle extension extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. - */ - public var extension_load_url_enabled: Bool? - - /** - * Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled. - */ - public var marketplace_auto_install_enabled: Bool? - - /** - * Toggle marketplace on or off - */ - public var marketplace_enabled: Bool? - - /** - * 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. - */ - public var marketplace_terms_accepted: Bool? - - /** - * Dynamic writeable type for PrivatelabelConfiguration removes: - * logo_url, favicon_url - */ - public var privatelabel_configuration: WritePrivatelabelConfiguration? - - public var custom_welcome_email: CustomWelcomeEmail? - - /** - * Toggle onboarding on or off - */ - public var onboarding_enabled: Bool? - - private var _timezone: AnyString? - /** - * Change instance-wide default timezone - */ - public var timezone: String? { - get { _timezone?.value } - set { _timezone = newValue.map(AnyString.init) } - } - - /** - * Toggle user-specific timezones on or off - */ - public var allow_user_timezones: Bool? - - /** - * Toggle default future connectors on or off - */ - public var data_connector_default_enabled: Bool? - - private var _host_url: AnyString? - /** - * Change the base portion of your Looker instance URL setting - */ - public var host_url: String? { - get { _host_url?.value } - set { _host_url = newValue.map(AnyString.init) } - } - - /** - * (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. - */ - public var override_warnings: Bool? - - private var _email_domain_allowlist: [AnyString]? - /** - * An array of Email Domain Allowlist of type string for Scheduled Content - */ - public var email_domain_allowlist: [String]? { - get { if let v = _email_domain_allowlist { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _email_domain_allowlist = v.map { AnyString.init($0) } } else { _email_domain_allowlist = nil } } - } - - /** - * Toggle cookieless embed setting - */ - public var embed_cookieless_v2: Bool? - - public init(extension_framework_enabled: Bool? = nil, extension_load_url_enabled: Bool? = nil, marketplace_auto_install_enabled: Bool? = 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) { - 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 - self.marketplace_enabled = marketplace_enabled - self.marketplace_terms_accepted = marketplace_terms_accepted - self.privatelabel_configuration = privatelabel_configuration - self.custom_welcome_email = custom_welcome_email - self.onboarding_enabled = onboarding_enabled - self._timezone = timezone.map(AnyString.init) - self.allow_user_timezones = allow_user_timezones - self.data_connector_default_enabled = data_connector_default_enabled - self._host_url = host_url.map(AnyString.init) - self.override_warnings = override_warnings - if let v = email_domain_allowlist { _email_domain_allowlist = v.map { AnyString.init($0) } } else { _email_domain_allowlist = nil } - self.embed_cookieless_v2 = embed_cookieless_v2 - } - -} - -/** - * Dynamic writeable type for SshServer removes: - * ssh_server_id, finger_print, sha_finger_print, public_key, status - */ -public struct WriteSshServer: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _ssh_server_name = "ssh_server_name" - case _ssh_server_host = "ssh_server_host" - case _ssh_server_port = "ssh_server_port" - case _ssh_server_user = "ssh_server_user" - } - private var _ssh_server_name: AnyString? - /** - * The name to identify this SSH Server - */ - public var ssh_server_name: String? { - get { _ssh_server_name?.value } - set { _ssh_server_name = newValue.map(AnyString.init) } - } - - private var _ssh_server_host: AnyString? - /** - * The hostname or ip address of the SSH Server - */ - public var ssh_server_host: String? { - get { _ssh_server_host?.value } - set { _ssh_server_host = newValue.map(AnyString.init) } - } - - private var _ssh_server_port: AnyInt? - /** - * The port to connect to on the SSH Server - */ - public var ssh_server_port: Int64? { - get { _ssh_server_port?.value } - set { _ssh_server_port = newValue.map(AnyInt.init) } - } - - private var _ssh_server_user: AnyString? - /** - * The username used to connect to the SSH Server - */ - public var ssh_server_user: String? { - get { _ssh_server_user?.value } - set { _ssh_server_user = newValue.map(AnyString.init) } - } - - public init(ssh_server_name: String? = nil, ssh_server_host: String? = nil, ssh_server_port: Int64? = nil, ssh_server_user: String? = nil) { - self._ssh_server_name = ssh_server_name.map(AnyString.init) - self._ssh_server_host = ssh_server_host.map(AnyString.init) - self._ssh_server_port = ssh_server_port.map(AnyInt.init) - self._ssh_server_user = ssh_server_user.map(AnyString.init) - } - -} - -/** - * 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 SpaceBase 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 */ -public struct WriteSshTunnel: SDKModel { +public struct WriteSpaceBase: SDKModel { private enum CodingKeys : String, CodingKey { - case _ssh_server_id = "ssh_server_id" - case _local_host_port = "local_host_port" - case _database_host = "database_host" - case _database_port = "database_port" - } - private var _ssh_server_id: AnyString? - /** - * SSH Server ID - */ - public var ssh_server_id: String? { - get { _ssh_server_id?.value } - set { _ssh_server_id = newValue.map(AnyString.init) } + case _name = "name" + case _parent_id = "parent_id" } - - private var _local_host_port: AnyInt? + private var _name: AnyString /** - * Localhost Port used by the Looker instance to connect to the remote DB + * Unique Name */ - public var local_host_port: Int64? { - get { _local_host_port?.value } - set { _local_host_port = newValue.map(AnyInt.init) } + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } } - private var _database_host: AnyString? + private var _parent_id: AnyString? /** - * Hostname or IP Address of the Database Server + * Id of Parent. If the parent id is null, this is a root-level entry */ - public var database_host: String? { - get { _database_host?.value } - set { _database_host = newValue.map(AnyString.init) } + public var parent_id: String? { + get { _parent_id?.value } + set { _parent_id = newValue.map(AnyString.init) } } - private var _database_port: AnyInt? - /** - * Port that the Database Server is listening on - */ - public var database_port: Int64? { - get { _database_port?.value } - set { _database_port = newValue.map(AnyInt.init) } + public init(name: String, parent_id: String? = nil) { + self._name = AnyString.init(name) + self._parent_id = parent_id.map(AnyString.init) } - public init(ssh_server_id: String? = nil, local_host_port: Int64? = nil, database_host: String? = nil, database_port: Int64? = nil) { - self._ssh_server_id = ssh_server_id.map(AnyString.init) - self._local_host_port = local_host_port.map(AnyInt.init) - self._database_host = database_host.map(AnyString.init) - self._database_port = database_port.map(AnyInt.init) + public init(_ name: String, parent_id: String? = nil) { + self.init(name: name, parent_id: parent_id) } } @@ -27623,13 +22737,14 @@ public struct WriteTheme: SDKModel { /** * 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, 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, url + * can, avatar_url, avatar_url_without_sizing, credentials_api3, credentials_embed, credentials_google, credentials_ldap, credentials_looker_openid, credentials_oidc, credentials_saml, credentials_totp, display_name, email, embed_group_space_id, group_ids, id, looker_versions, personal_space_id, 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, url */ public struct WriteUser: SDKModel { private enum CodingKeys : String, CodingKey { case credentials_email case _first_name = "first_name" + case _home_space_id = "home_space_id" case _home_folder_id = "home_folder_id" case is_disabled case _last_name = "last_name" @@ -27652,6 +22767,15 @@ public struct WriteUser: SDKModel { set { _first_name = newValue.map(AnyString.init) } } + private var _home_space_id: AnyString? + /** + * ID string for user's home space + */ + public var home_space_id: String? { + get { _home_space_id?.value } + set { _home_space_id = newValue.map(AnyString.init) } + } + private var _home_folder_id: AnyString? /** * ID string for user's home folder @@ -27694,9 +22818,10 @@ public struct WriteUser: SDKModel { */ public var ui_state: StringDictionary? - public init(credentials_email: WriteCredentialsEmail? = nil, first_name: String? = nil, home_folder_id: String? = nil, is_disabled: Bool? = nil, last_name: String? = nil, locale: String? = nil, models_dir_validated: Bool? = nil, ui_state: StringDictionary? = nil) { + public init(credentials_email: WriteCredentialsEmail? = nil, first_name: String? = nil, home_space_id: String? = nil, home_folder_id: String? = nil, is_disabled: Bool? = nil, last_name: String? = nil, locale: String? = nil, models_dir_validated: Bool? = nil, ui_state: StringDictionary? = nil) { self.credentials_email = credentials_email self._first_name = first_name.map(AnyString.init) + self._home_space_id = home_space_id.map(AnyString.init) self._home_folder_id = home_folder_id.map(AnyString.init) self.is_disabled = is_disabled self._last_name = last_name.map(AnyString.init) @@ -27723,31 +22848,31 @@ public struct WriteUserAttribute: SDKModel { case user_can_edit case _hidden_value_domain_whitelist = "hidden_value_domain_whitelist" } - private var _name: AnyString + private var _name: AnyString? /** * Name of user attribute */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - private var _label: AnyString + private var _label: AnyString? /** * Human-friendly label for user attribute */ - public var label: String { - get { _label.value } - set { _label = AnyString.init(newValue) } + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } } - private var _type: AnyString + private var _type: AnyString? /** * Type of user attribute ("string", "number", "datetime", "yesno", "zipcode") */ - public var type: String { - get { _type.value } - set { _type = AnyString.init(newValue) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } private var _default_value: AnyString? @@ -27783,10 +22908,10 @@ public struct WriteUserAttribute: SDKModel { set { _hidden_value_domain_whitelist = newValue.map(AnyString.init) } } - public init(name: String, label: String, type: String, default_value: String? = nil, value_is_hidden: Bool? = nil, user_can_view: Bool? = nil, user_can_edit: Bool? = nil, hidden_value_domain_whitelist: String? = nil) { - self._name = AnyString.init(name) - self._label = AnyString.init(label) - self._type = AnyString.init(type) + public init(name: String? = nil, label: String? = nil, type: String? = nil, default_value: String? = nil, value_is_hidden: Bool? = nil, user_can_view: Bool? = nil, user_can_edit: Bool? = nil, hidden_value_domain_whitelist: String? = nil) { + self._name = name.map(AnyString.init) + self._label = label.map(AnyString.init) + self._type = type.map(AnyString.init) self._default_value = default_value.map(AnyString.init) self.value_is_hidden = value_is_hidden self.user_can_view = user_can_view @@ -27794,10 +22919,6 @@ public struct WriteUserAttribute: SDKModel { self._hidden_value_domain_whitelist = hidden_value_domain_whitelist.map(AnyString.init) } - public init(_ name: String, _ label: String, _ type: String, default_value: String? = nil, value_is_hidden: Bool? = nil, user_can_view: Bool? = nil, user_can_edit: Bool? = nil, hidden_value_domain_whitelist: String? = nil) { - self.init(name: name, label: label, type: type, default_value: default_value, value_is_hidden: value_is_hidden, user_can_view: user_can_view, user_can_edit: user_can_edit, hidden_value_domain_whitelist: hidden_value_domain_whitelist) - } - } /** diff --git a/swift/looker/sdk/streams.swift b/swift/looker/sdk/streams.swift index 289849a8a..baf780c60 100644 --- a/swift/looker/sdk/streams.swift +++ b/swift/looker/sdk/streams.swift @@ -25,300 +25,17 @@ */ /** - * 461 API methods + * 382 API methods */ -/// NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0 +/// NOTE: Do not edit this file generated by Looker SDK Codegen for API 3.1 import Foundation @available(OSX 10.15, *) open class LookerSDKStream: APIMethods { - // MARK Alert: Alert - - /** - * Follow an alert. - * - * POST /alerts/{alert_id}/follow -> Voidable - */ - public func follow_alert( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.post("/alerts/\(path_alert_id)/follow", nil, nil, options) - return result - } - - /** - * Unfollow an alert. - * - * DELETE /alerts/{alert_id}/follow -> Voidable - */ - public func unfollow_alert( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.delete("/alerts/\(path_alert_id)/follow", nil, nil, options) - return result - } - - /** - * ### Search Alerts - * - * GET /alerts/search -> [Alert] - */ - public func search_alerts( - /** - * @param {Int64} limit (Optional) Number of results to return (used with `offset`). - */ - limit: Int64? = nil, - /** - * @param {Int64} offset (Optional) Number of results to skip before returning any (used with `limit`). - */ - offset: Int64? = nil, - /** - * @param {String} group_by (Optional) Dimension by which to order the results(`dashboard` | `owner`) - */ - group_by: String? = nil, - /** - * @param {String} fields (Optional) Requested fields. - */ - fields: String? = nil, - /** - * @param {Bool} disabled (Optional) Filter on returning only enabled or disabled alerts. - */ - disabled: Bool? = nil, - /** - * @param {String} frequency (Optional) Filter on alert frequency, such as: monthly, weekly, daily, hourly, minutes - */ - frequency: String? = nil, - /** - * @param {Bool} condition_met (Optional) Filter on whether the alert has met its condition when it last executed - */ - condition_met: Bool? = nil, - /** - * @param {String} last_run_start (Optional) Filter on the start range of the last time the alerts were run. Example: 2021-01-01T01:01:01-08:00. - */ - last_run_start: String? = nil, - /** - * @param {String} last_run_end (Optional) Filter on the start range of the last time the alerts were run. Example: 2021-01-01T01:01:01-08:00. - */ - last_run_end: String? = nil, - /** - * @param {Bool} all_owners (Admin only) (Optional) Filter for all owners. - */ - all_owners: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/alerts/search", - ["limit": limit, "offset": offset, "group_by": group_by, "fields": fields, "disabled": disabled as Any?, "frequency": frequency, "condition_met": condition_met as Any?, "last_run_start": last_run_start, "last_run_end": last_run_end, "all_owners": all_owners as Any?], nil, options) - return result - } - - /** - * ### Get an alert by a given alert ID - * - * GET /alerts/{alert_id} -> Alert - */ - public func get_alert( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.get("/alerts/\(path_alert_id)", nil, nil, options) - return result - } - - /** - * ### Update an alert - * # Required fields: `owner_id`, `field`, `destinations`, `comparison_type`, `threshold`, `cron` - * # - * - * PUT /alerts/{alert_id} -> Alert - */ - public func update_alert( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - /** - * @param {WriteAlert} body - */ - _ body: WriteAlert, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.put("/alerts/\(path_alert_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Update select alert fields - * # Available fields: `owner_id`, `is_disabled`, `disabled_reason`, `is_public`, `threshold` - * # - * - * PATCH /alerts/{alert_id} -> Alert - */ - public func update_alert_field( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - /** - * @param {AlertPatch} body - */ - _ body: AlertPatch, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.patch("/alerts/\(path_alert_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete an alert by a given alert ID - * - * DELETE /alerts/{alert_id} -> Voidable - */ - public func delete_alert( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.delete("/alerts/\(path_alert_id)", nil, nil, options) - return result - } - - /** - * ### Create a new alert and return details of the newly created object - * - * Required fields: `field`, `destinations`, `comparison_type`, `threshold`, `cron` - * - * Example Request: - * Run alert on dashboard element '103' at 5am every day. Send an email to 'test@test.com' if inventory for Los Angeles (using dashboard filter `Warehouse Name`) is lower than 1,000 - * ``` - * { - * "cron": "0 5 * * *", - * "custom_title": "Alert when LA inventory is low", - * "dashboard_element_id": 103, - * "applied_dashboard_filters": [ - * { - * "filter_title": "Warehouse Name", - * "field_name": "distribution_centers.name", - * "filter_value": "Los Angeles CA", - * "filter_description": "is Los Angeles CA" - * } - * ], - * "comparison_type": "LESS_THAN", - * "destinations": [ - * { - * "destination_type": "EMAIL", - * "email_address": "test@test.com" - * } - * ], - * "field": { - * "title": "Number on Hand", - * "name": "inventory_items.number_on_hand" - * }, - * "is_disabled": false, - * "is_public": true, - * "threshold": 1000 - * } - * ``` - * - * POST /alerts -> Alert - */ - public func create_alert( - /** - * @param {WriteAlert} body - */ - _ body: WriteAlert, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/alerts", nil, try! self.encode(body), options) - return result - } - - /** - * ### Enqueue an Alert by ID - * - * POST /alerts/{alert_id}/enqueue -> Voidable - */ - public func enqueue_alert( - /** - * @param {String} alert_id ID of an alert - */ - _ alert_id: String, - /** - * @param {Bool} force Whether to enqueue an alert again if its already running. - */ - force: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_id = encodeParam(alert_id) - let result: SDKResponse = self.post("/alerts/\(path_alert_id)/enqueue", - ["force": force as Any?], nil, options) - return result - } - - /** - * # Alert Notifications. - * The endpoint returns all the alert notifications received by the user on email in the past 7 days. It also returns whether the notifications have been read by the user. - * - * GET /alert_notifications -> [AlertNotifications] - */ - public func alert_notifications( - /** - * @param {Int64} limit (Optional) Number of results to return (used with `offset`). - */ - limit: Int64? = nil, - /** - * @param {Int64} offset (Optional) Number of results to skip before returning any (used with `limit`). - */ - offset: Int64? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/alert_notifications", - ["limit": limit, "offset": offset], nil, options) - return result - } - - /** - * # Reads a Notification - * The endpoint marks a given alert notification as read by the user, in case it wasn't already read. The AlertNotification model is updated for this purpose. It returns the notification as a response. - * - * PATCH /alert_notifications/{alert_notification_id} -> AlertNotifications - */ - public func read_alert_notification( - /** - * @param {String} alert_notification_id ID of a notification - */ - _ alert_notification_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_alert_notification_id = encodeParam(alert_notification_id) - let result: SDKResponse = self.patch("/alert_notifications/\(path_alert_notification_id)", nil, nil, options) - return result - } - - - // MARK ApiAuth: API Authentication /** @@ -393,9 +110,9 @@ open class LookerSDKStream: APIMethods { */ public func login_user( /** - * @param {String} user_id Id of user. + * @param {Int64} user_id Id of user. */ - _ user_id: String, + _ user_id: Int64, /** * @param {Bool} associative When true (default), API calls using the returned access_token are attributed to the admin user who created the access_token. When false, API activity is attributed to the user the access_token runs as. False requires a looker license. */ @@ -422,3613 +139,1907 @@ open class LookerSDKStream: APIMethods { - // MARK Artifact: Artifact Storage + // MARK Auth: Manage User Authentication Configuration /** - * Get the maximum configured size of the entire artifact store, and the currently used storage in bytes. + * ### Create Signed Embed URL * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * Creates a signed embed URL and cryptographically signs it with an embed secret. + * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. + * Do not make any modifications to the returned URL - any change may invalidate the signature and + * cause the URL to fail to load a Looker embed session. * - * GET /artifact/usage -> ArtifactUsage - */ - public func artifact_usage( - /** - * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/artifact/usage", - ["fields": fields], nil, options) - return result - } - - /** - * Get all artifact namespaces and the count of artifacts in each namespace + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent + * 'replay attacks'. + * + * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. + * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. + * + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) + * and the lists of models and permissions assigned to the embed user. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. + * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. + * + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. + * + * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * + * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. + * + * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. + * + * #### Security Note + * Protect this signed URL as you would an access token or password credentials - do not write + * it to disk, do not pass it to a third party, and only pass it through a secure HTTPS + * encrypted transport. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * GET /artifact/namespaces -> [ArtifactNamespace] + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * POST /embed/sso_url -> EmbedUrlResponse */ - public func artifact_namespaces( - /** - * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields - */ - fields: String? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset) - */ - limit: Int64? = nil, + public func create_sso_embed_url( /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit) + * @param {EmbedSsoParams} body */ - offset: Int64? = nil, + _ body: EmbedSsoParams, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/artifact/namespaces", - ["fields": fields, "limit": limit, "offset": offset], nil, options) + let result: SDKResponse = self.post("/embed/sso_url", nil, try! self.encode(body), options) return result } /** - * ### Return the value of an artifact + * ### Get the LDAP configuration. + * + * Looker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server. + * LDAP setup requires coordination with an administrator of that directory server. + * + * Only Looker administrators can read and update the LDAP configuration. + * + * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. * - * The MIME type for the API response is set to the `content_type` of the value + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * LDAP is enabled or disabled for Looker using the **enabled** field. + * + * Looker will never return an **auth_password** field. That value can be set, but never retrieved. + * + * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /artifact/{namespace}/value -> String + * GET /ldap_config -> LDAPConfig */ - public func artifact_value( - /** - * @param {String} namespace Artifact storage namespace - */ - _ namespace: String, - /** - * @param {String} key Artifact storage key. Namespace + Key must be unique - */ - key: String? = nil, + public func ldap_config( options: ITransportSettings? = nil ) -> SDKResponse { - let path_namespace = encodeParam(namespace) - let result: SDKResponse = self.get("/artifact/\(path_namespace)/value", - ["key": key], nil, options) + let result: SDKResponse = self.get("/ldap_config", nil, nil, options) return result } /** - * Remove *all* artifacts from a namespace. Purged artifacts are permanently deleted + * ### Update the LDAP configuration. + * + * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. + * + * Only Looker administrators can read and update the LDAP configuration. + * + * LDAP is enabled or disabled for Looker using the **enabled** field. + * + * It is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally. + * + * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * DELETE /artifact/{namespace}/purge -> Voidable + * PATCH /ldap_config -> LDAPConfig */ - public func purge_artifacts( + public func update_ldap_config( /** - * @param {String} namespace Artifact storage namespace + * @param {WriteLDAPConfig} body */ - _ namespace: String, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let path_namespace = encodeParam(namespace) - let result: SDKResponse = self.delete("/artifact/\(path_namespace)/purge", nil, nil, options) + let result: SDKResponse = self.patch("/ldap_config", nil, try! self.encode(body), options) return result } /** - * ### Search all key/value pairs in a namespace for matching criteria. - * - * Returns an array of artifacts matching the specified search criteria. + * ### Test the connection settings for an LDAP configuration. * - * Key search patterns use case-insensitive matching and can contain `%` and `_` as SQL LIKE pattern match wildcard expressions. + * This tests that the connection is possible given a connection_host and connection_port. * - * The parameters `min_size` and `max_size` can be used individually or together. + * **connection_host** and **connection_port** are required. **connection_tls** is optional. * - * - `min_size` finds artifacts with sizes greater than or equal to its value - * - `max_size` finds artifacts with sizes less than or equal to its value - * - using both parameters restricts the minimum and maximum size range for artifacts + * Example: + * ```json + * { + * "connection_host": "ldap.example.com", + * "connection_port": "636", + * "connection_tls": true + * } + * ``` * - * **NOTE**: Artifacts are always returned in alphanumeric order by key. + * No authentication to the LDAP server is attempted. * - * Get a **single artifact** by namespace and key with [`artifact`](#!/Artifact/artifact) + * The active LDAP settings are not modified. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /artifact/{namespace}/search -> [Artifact] + * PUT /ldap_config/test_connection -> LDAPConfigTestResult */ - public func search_artifacts( + public func test_ldap_config_connection( /** - * @param {String} namespace Artifact storage namespace - */ - _ namespace: String, - /** - * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields - */ - fields: String? = nil, - /** - * @param {String} key Key pattern to match - */ - key: String? = nil, - /** - * @param {String} user_ids Ids of users who created or updated the artifact (comma-delimited list) - */ - user_ids: String? = nil, - /** - * @param {Int64} min_size Minimum storage size of the artifact - */ - min_size: Int64? = nil, - /** - * @param {Int64} max_size Maximum storage size of the artifact - */ - max_size: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit) + * @param {WriteLDAPConfig} body */ - offset: Int64? = nil, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let path_namespace = encodeParam(namespace) - let result: SDKResponse = self.get("/artifact/\(path_namespace)/search", - ["fields": fields, "key": key, "user_ids": user_ids, "min_size": min_size, "max_size": max_size, "limit": limit, "offset": offset], nil, options) + let result: SDKResponse = self.put("/ldap_config/test_connection", nil, try! self.encode(body), options) return result } /** - * ### Get one or more artifacts + * ### Test the connection authentication settings for an LDAP configuration. + * + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + * + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + * + * Example: + * ```json + * { + * "connection_host": "ldap.example.com", + * "connection_port": "636", + * "connection_tls": true, + * "auth_username": "cn=looker,dc=example,dc=com", + * "auth_password": "secret" + * } + * ``` * - * Returns an array of artifacts matching the specified key value(s). + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * The active LDAP settings are not modified. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /artifact/{namespace} -> [Artifact] + * PUT /ldap_config/test_auth -> LDAPConfigTestResult */ - public func artifact( - /** - * @param {String} namespace Artifact storage namespace - */ - _ namespace: String, - /** - * @param {String} key Comma-delimited list of keys. Wildcards not allowed. - */ - _ key: String, - /** - * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields - */ - fields: String? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset) - */ - limit: Int64? = nil, + public func test_ldap_config_auth( /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit) + * @param {WriteLDAPConfig} body */ - offset: Int64? = nil, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let path_namespace = encodeParam(namespace) - let result: SDKResponse = self.get("/artifact/\(path_namespace)", - ["key": key, "fields": fields, "limit": limit, "offset": offset], nil, options) + let result: SDKResponse = self.put("/ldap_config/test_auth", nil, try! self.encode(body), options) return result } /** - * ### Delete one or more artifacts + * ### Test the user authentication settings for an LDAP configuration without authenticating the user. + * + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. * - * To avoid rate limiting on deletion requests, multiple artifacts can be deleted at the same time by using a comma-delimited list of artifact keys. + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. + * + * **test_ldap_user** is required. + * + * The active LDAP settings are not modified. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * DELETE /artifact/{namespace} -> Voidable + * PUT /ldap_config/test_user_info -> LDAPConfigTestResult */ - public func delete_artifact( - /** - * @param {String} namespace Artifact storage namespace - */ - _ namespace: String, + public func test_ldap_config_user_info( /** - * @param {String} key Comma-delimited list of keys. Wildcards not allowed. + * @param {WriteLDAPConfig} body */ - _ key: String, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let path_namespace = encodeParam(namespace) - let result: SDKResponse = self.delete("/artifact/\(path_namespace)", - ["key": key], nil, options) + let result: SDKResponse = self.put("/ldap_config/test_user_info", nil, try! self.encode(body), options) return result } /** - * ### Create or update one or more artifacts - * - * Only `key` and `value` are required to _create_ an artifact. - * To _update_ an artifact, its current `version` value must be provided. - * - * In the following example `body` payload, `one` and `two` are existing artifacts, and `three` is new: + * ### Test the user authentication settings for an LDAP configuration. * - * ```json - * [ - * { "key": "one", "value": "[ \"updating\", \"existing\", \"one\" ]", "version": 10, "content_type": "application/json" }, - * { "key": "two", "value": "updating existing two", "version": 20 }, - * { "key": "three", "value": "creating new three" }, - * ] - * ``` + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. * - * Notes for this body: + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * - * - The `value` for `key` **one** is a JSON payload, so a `content_type` override is needed. This override must be done **every** time a JSON value is set. - * - The `version` values for **one** and **two** mean they have been saved 10 and 20 times, respectively. - * - If `version` is **not** provided for an existing artifact, the entire request will be refused and a `Bad Request` response will be sent. - * - If `version` is provided for an artifact, it is only used for helping to prevent inadvertent data overwrites. It cannot be used to **set** the version of an artifact. The Looker server controls `version`. - * - We suggest encoding binary values as base64. Because the MIME content type for base64 is detected as plain text, also provide `content_type` to correctly indicate the value's type for retrieval and client-side processing. + * **test_ldap_user** and **test_ldap_password** are required. * - * Because artifacts are stored encrypted, the same value can be written multiple times (provided the correct `version` number is used). Looker does not examine any values stored in the artifact store, and only decrypts when sending artifacts back in an API response. + * The active LDAP settings are not modified. * - * **Note**: The artifact storage API can only be used by Looker-built extensions. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /artifacts/{namespace} -> [Artifact] + * PUT /ldap_config/test_user_auth -> LDAPConfigTestResult */ - public func update_artifacts( - /** - * @param {String} namespace Artifact storage namespace - */ - _ namespace: String, - /** - * @param {[UpdateArtifact]} body - */ - _ body: [UpdateArtifact], + public func test_ldap_config_user_auth( /** - * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields + * @param {WriteLDAPConfig} body */ - fields: String? = nil, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let path_namespace = encodeParam(namespace) - let result: SDKResponse = self.put("/artifacts/\(path_namespace)", - ["fields": fields], try! self.encode(body), options) + let result: SDKResponse = self.put("/ldap_config/test_user_auth", nil, try! self.encode(body), options) return result } - - - // MARK Auth: Manage User Authentication Configuration - /** - * ### Create an embed secret using the specified information. + * ### Get the OIDC configuration. * - * The value of the `secret` field will be set by Looker and returned. + * Looker can be optionally configured to authenticate users against an OpenID Connect (OIDC) + * authentication server. OIDC setup requires coordination with an administrator of that server. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Only Looker administrators can read and update the OIDC configuration. + * + * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. + * + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * - * POST /embed_config/secrets -> EmbedSecret + * OIDC is enabled or disabled for Looker using the **enabled** field. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /oidc_config -> OIDCConfig */ - public func create_embed_secret( - /** - * @param {WriteEmbedSecret} body - */ - body: WriteEmbedSecret?, + public func oidc_config( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/embed_config/secrets", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/oidc_config", nil, nil, options) return result } /** - * ### Delete an embed secret. + * ### Update the OIDC configuration. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. + * + * Only Looker administrators can read and update the OIDC configuration. + * + * OIDC is enabled or disabled for Looker using the **enabled** field. * - * DELETE /embed_config/secrets/{embed_secret_id} -> String + * It is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * PATCH /oidc_config -> OIDCConfig */ - public func delete_embed_secret( + public func update_oidc_config( /** - * @param {String} embed_secret_id Id of Embed Secret + * @param {WriteOIDCConfig} body */ - _ embed_secret_id: String, + _ body: WriteOIDCConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let path_embed_secret_id = encodeParam(embed_secret_id) - let result: SDKResponse = self.delete("/embed_config/secrets/\(path_embed_secret_id)", nil, nil, options) + let result: SDKResponse = self.patch("/oidc_config", nil, try! self.encode(body), options) return result } /** - * ### Create SSO Embed URL - * - * Creates an SSO embed URL and cryptographically signs it with an embed secret. - * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to this URL - any change may invalidate the signature and - * cause the URL to fail to load a Looker embed session. - * - * A signed SSO embed URL can only be used once. After it has been used to request a page from the - * Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent - * 'replay attacks'. - * - * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. - * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. - * - * Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) - * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. - * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. - * - * The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. - * - * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. - * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. - * - * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the newest active secret defined in the Looker instance. - * - * #### Security Note - * Protect this signed URL as you would an access token or password credentials - do not write - * it to disk, do not pass it to a third party, and only pass it through a secure HTTPS - * encrypted transport. - * + * ### Get a OIDC test configuration by test_slug. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /embed/sso_url -> EmbedUrlResponse + * GET /oidc_test_configs/{test_slug} -> OIDCConfig */ - public func create_sso_embed_url( + public func oidc_test_config( /** - * @param {EmbedSsoParams} body + * @param {String} test_slug Slug of test config */ - _ body: EmbedSsoParams, + _ test_slug: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/embed/sso_url", nil, try! self.encode(body), options) + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.get("/oidc_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Create an Embed URL - * - * Creates an embed URL that runs as the Looker user making this API call. ("Embed as me") - * This embed URL can then be used to instantiate a Looker embed session in a - * "Powered by Looker" (PBL) web application. - * - * This is similar to Private Embedding (https://cloud.google.com/looker/docs/r/admin/embed/private-embed). Instead of - * of logging into the Web UI to authenticate, the user has already authenticated against the API to be able to - * make this call. However, unlike Private Embed where the user has access to any other part of the Looker UI, - * the embed web session created by requesting the EmbedUrlResponse.url in a browser only has access to - * content visible under the `/embed` context. - * - * An embed URL can only be used once, and must be used within 5 minutes of being created. After it - * has been used to request a page from the Looker server, the URL is invalid. Future requests using - * the same URL will fail. This is to prevent 'replay attacks'. - * - * The `target_url` property must be a complete URL of a Looker Embedded UI page - scheme, hostname, path starting with "/embed" and query params. - * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker Embed URL would look like `https://myname.looker.com/embed/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar, insert "/embed" after the host/port, and paste it into the `target_url` property as a quoted string value in this API request. - * - * #### Security Note - * Protect this signed URL as you would an access token or password credentials - do not write - * it to disk, do not pass it to a third party, and only pass it through a secure HTTPS - * encrypted transport. - * + * ### Delete a OIDC test configuration. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /embed/token_url/me -> EmbedUrlResponse + * DELETE /oidc_test_configs/{test_slug} -> String */ - public func create_embed_url_as_me( + public func delete_oidc_test_config( /** - * @param {EmbedParams} body + * @param {String} test_slug Slug of test config */ - _ body: EmbedParams, + _ test_slug: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/embed/token_url/me", nil, try! self.encode(body), options) + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.delete("/oidc_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Acquire a cookieless embed session. - * - * The acquire session endpoint negates the need for signing the embed url and passing it as a parameter - * to the embed login. This endpoint accepts an embed user definition and creates or updates it. This is - * similar behavior to the embed SSO login as they both can create and update embed user data. - * - * The endpoint also accepts an optional `session_reference_token`. If present and the session has not expired - * and the credentials match the credentials for the embed session, a new authentication token will be - * generated. This allows the embed session to attach a new embedded IFRAME to the embed session. Note that - * the session is NOT extended in this scenario. In other words the session_length parameter is ignored. - * - * **IMPORTANT:** If the `session_reference_token` is provided and the session has NOT expired, the embed user - * is NOT updated. This is done for performance reasons and to support the embed SSO usecase where the - * first IFRAME created on a page uses a signed url and subsequently created IFRAMEs do not. - * - * If the `session_reference_token` is provided but the session has expired, the token will be ignored and a - * new embed session will be created. Note that the embed user definition will be updated in this scenario. - * - * If the credentials do not match the credentials associated with an exisiting session_reference_token, a - * 404 will be returned. - * - * The endpoint returns the following: - * - Authentication token - a token that is passed to `/embed/login` endpoint that creates or attaches to the - * embed session. This token can be used once and has a lifetime of 30 seconds. - * - Session reference token - a token that lives for the length of the session. This token is used to - * generate new api and navigation tokens OR create new embed IFRAMEs. - * - Api token - lives for 10 minutes. The Looker client will ask for this token once it is loaded into the - * iframe. - * - Navigation token - lives for 10 minutes. The Looker client will ask for this token once it is loaded into - * the iframe. + * ### Create a OIDC test configuration. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /embed/cookieless_session/acquire -> EmbedCookielessSessionAcquireResponse + * POST /oidc_test_configs -> OIDCConfig */ - public func acquire_embed_cookieless_session( + public func create_oidc_test_config( /** - * @param {EmbedCookielessSessionAcquire} body + * @param {WriteOIDCConfig} body */ - _ body: EmbedCookielessSessionAcquire, + _ body: WriteOIDCConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/embed/cookieless_session/acquire", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/oidc_test_configs", nil, try! self.encode(body), options) return result } /** - * ### Delete cookieless embed session - * - * This will delete the session associated with the given session reference token. Calling this endpoint will result - * in the session and session reference data being cleared from the system. This endpoint can be used to log an embed - * user out of the Looker instance. + * ### Get password config. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * DELETE /embed/cookieless_session/{session_reference_token} -> String + * GET /password_config -> PasswordConfig */ - public func delete_embed_cookieless_session( - /** - * @param {String} session_reference_token Embed session reference token - */ - _ session_reference_token: String, + public func password_config( options: ITransportSettings? = nil ) -> SDKResponse { - let path_session_reference_token = encodeParam(session_reference_token) - let result: SDKResponse = self.delete("/embed/cookieless_session/\(path_session_reference_token)", nil, nil, options) + let result: SDKResponse = self.get("/password_config", nil, nil, options) return result } /** - * ### Generate api and navigation tokens for a cookieless embed session - * - * The generate tokens endpoint is used to create new tokens of type: - * - Api token. - * - Navigation token. - * The generate tokens endpoint should be called every time the Looker client asks for a token (except for the - * first time when the tokens returned by the acquire_session endpoint should be used). + * ### Update password config. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /embed/cookieless_session/generate_tokens -> EmbedCookielessSessionGenerateTokensResponse + * PATCH /password_config -> PasswordConfig */ - public func generate_tokens_for_cookieless_session( + public func update_password_config( /** - * @param {EmbedCookielessSessionGenerateTokens} body + * @param {WritePasswordConfig} body */ - _ body: EmbedCookielessSessionGenerateTokens, + _ body: WritePasswordConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/embed/cookieless_session/generate_tokens", nil, try! self.encode(body), options) + let result: SDKResponse = self.patch("/password_config", nil, try! self.encode(body), options) return result } /** - * ### Get the LDAP configuration. + * ### Force all credentials_email users to reset their login passwords upon their next login. * - * Looker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server. - * LDAP setup requires coordination with an administrator of that directory server. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * Only Looker administrators can read and update the LDAP configuration. + * PUT /password_config/force_password_reset_at_next_login_for_all_users -> String + */ + public func force_password_reset_at_next_login_for_all_users( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.put("/password_config/force_password_reset_at_next_login_for_all_users", nil, nil, options) + return result + } + + /** + * ### Get the SAML configuration. * - * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. + * Looker can be optionally configured to authenticate users against a SAML authentication server. + * SAML setup requires coordination with an administrator of that server. * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Only Looker administrators can read and update the SAML configuration. * - * LDAP is enabled or disabled for Looker using the **enabled** field. + * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * Looker will never return an **auth_password** field. That value can be set, but never retrieved. + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * - * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. + * SAML is enabled or disabled for Looker using the **enabled** field. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /ldap_config -> LDAPConfig + * GET /saml_config -> SamlConfig */ - public func ldap_config( + public func saml_config( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/ldap_config", nil, nil, options) + let result: SDKResponse = self.get("/saml_config", nil, nil, options) return result } /** - * ### Update the LDAP configuration. + * ### Update the SAML configuration. * - * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. + * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * Only Looker administrators can read and update the LDAP configuration. + * Only Looker administrators can read and update the SAML configuration. * - * LDAP is enabled or disabled for Looker using the **enabled** field. - * - * It is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally. + * SAML is enabled or disabled for Looker using the **enabled** field. * - * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. + * It is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PATCH /ldap_config -> LDAPConfig + * PATCH /saml_config -> SamlConfig */ - public func update_ldap_config( + public func update_saml_config( /** - * @param {WriteLDAPConfig} body + * @param {WriteSamlConfig} body */ - _ body: WriteLDAPConfig, + _ body: WriteSamlConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/ldap_config", nil, try! self.encode(body), options) + let result: SDKResponse = self.patch("/saml_config", nil, try! self.encode(body), options) return result } /** - * ### Test the connection settings for an LDAP configuration. - * - * This tests that the connection is possible given a connection_host and connection_port. - * - * **connection_host** and **connection_port** are required. **connection_tls** is optional. - * - * Example: - * ```json - * { - * "connection_host": "ldap.example.com", - * "connection_port": "636", - * "connection_tls": true - * } - * ``` - * - * No authentication to the LDAP server is attempted. - * - * The active LDAP settings are not modified. + * ### Get a SAML test configuration by test_slug. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /ldap_config/test_connection -> LDAPConfigTestResult + * GET /saml_test_configs/{test_slug} -> SamlConfig */ - public func test_ldap_config_connection( + public func saml_test_config( /** - * @param {WriteLDAPConfig} body + * @param {String} test_slug Slug of test config */ - _ body: WriteLDAPConfig, + _ test_slug: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_connection", nil, try! self.encode(body), options) + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.get("/saml_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Test the connection authentication settings for an LDAP configuration. - * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. - * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. - * - * Example: - * ```json - * { - * "connection_host": "ldap.example.com", - * "connection_port": "636", - * "connection_tls": true, - * "auth_username": "cn=looker,dc=example,dc=com", - * "auth_password": "secret" - * } - * ``` - * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. - * - * The active LDAP settings are not modified. + * ### Delete a SAML test configuration. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /ldap_config/test_auth -> LDAPConfigTestResult + * DELETE /saml_test_configs/{test_slug} -> String */ - public func test_ldap_config_auth( + public func delete_saml_test_config( /** - * @param {WriteLDAPConfig} body + * @param {String} test_slug Slug of test config */ - _ body: WriteLDAPConfig, + _ test_slug: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_auth", nil, try! self.encode(body), options) + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.delete("/saml_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Test the user authentication settings for an LDAP configuration without authenticating the user. - * - * This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. - * - * This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. - * - * **test_ldap_user** is required. - * - * The active LDAP settings are not modified. + * ### Create a SAML test configuration. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /ldap_config/test_user_info -> LDAPConfigTestResult + * POST /saml_test_configs -> SamlConfig */ - public func test_ldap_config_user_info( + public func create_saml_test_config( /** - * @param {WriteLDAPConfig} body + * @param {WriteSamlConfig} body */ - _ body: WriteLDAPConfig, + _ body: WriteSamlConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_user_info", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/saml_test_configs", nil, try! self.encode(body), options) return result } /** - * ### Test the user authentication settings for an LDAP configuration. - * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. - * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. - * - * **test_ldap_user** and **test_ldap_password** are required. - * - * The active LDAP settings are not modified. + * ### Parse the given xml as a SAML IdP metadata document and return the result. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /ldap_config/test_user_auth -> LDAPConfigTestResult + * POST /parse_saml_idp_metadata -> SamlMetadataParseResult */ - public func test_ldap_config_user_auth( + public func parse_saml_idp_metadata( /** - * @param {WriteLDAPConfig} body + * @param {String} body */ - _ body: WriteLDAPConfig, + _ body: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_user_auth", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/parse_saml_idp_metadata", nil, try! self.encode(body), options) return result } /** - * ### Registers a mobile device. - * # Required fields: [:device_token, :device_type] + * ### Fetch the given url and parse it as a SAML IdP metadata document and return the result. + * Note that this requires that the url be public or at least at a location where the Looker instance + * can fetch it without requiring any special authentication. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /mobile/device -> MobileToken + * POST /fetch_and_parse_saml_idp_metadata -> SamlMetadataParseResult */ - public func register_mobile_device( + public func fetch_and_parse_saml_idp_metadata( /** - * @param {WriteMobileToken} body + * @param {String} body */ - _ body: WriteMobileToken, + _ body: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/mobile/device", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/fetch_and_parse_saml_idp_metadata", nil, try! self.encode(body), options) return result } /** - * ### Updates the mobile device registration + * ### Get session config. * - * PATCH /mobile/device/{device_id} -> MobileToken + * GET /session_config -> SessionConfig */ - public func update_mobile_device_registration( - /** - * @param {String} device_id Unique id of the device. - */ - _ device_id: String, + public func session_config( options: ITransportSettings? = nil ) -> SDKResponse { - let path_device_id = encodeParam(device_id) - let result: SDKResponse = self.patch("/mobile/device/\(path_device_id)", nil, nil, options) + let result: SDKResponse = self.get("/session_config", nil, nil, options) return result } /** - * ### Deregister a mobile device. + * ### Update session config. * - * DELETE /mobile/device/{device_id} -> Voidable + * PATCH /session_config -> SessionConfig */ - public func deregister_mobile_device( + public func update_session_config( /** - * @param {String} device_id Unique id of the device. + * @param {WriteSessionConfig} body */ - _ device_id: String, + _ body: WriteSessionConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let path_device_id = encodeParam(device_id) - let result: SDKResponse = self.delete("/mobile/device/\(path_device_id)", nil, nil, options) + let result: SDKResponse = self.patch("/session_config", nil, try! self.encode(body), options) return result } /** - * ### List All OAuth Client Apps - * - * Lists all applications registered to use OAuth2 login with this Looker instance, including - * enabled and disabled apps. - * - * Results are filtered to include only the apps that the caller (current user) - * has permission to see. + * ### Get currently locked-out users. * - * GET /oauth_client_apps -> [OauthClientApp] + * GET /user_login_lockouts -> [UserLoginLockout] */ - public func all_oauth_client_apps( + public func all_user_login_lockouts( /** - * @param {String} fields Requested fields. + * @param {String} fields Include only these fields in the response */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/oauth_client_apps", + let result: SDKResponse = self.get("/user_login_lockouts", ["fields": fields], nil, options) return result } /** - * ### Get Oauth Client App - * - * Returns the registered app client with matching client_guid. + * ### Search currently locked-out users. * - * GET /oauth_client_apps/{client_guid} -> OauthClientApp + * GET /user_login_lockouts/search -> [UserLoginLockout] */ - public func oauth_client_app( + public func search_user_login_lockouts( /** - * @param {String} client_guid The unique id of this application + * @param {String} fields Include only these fields in the response */ - _ client_guid: String, + fields: String? = nil, /** - * @param {String} fields Requested fields. + * @param {Int64} page Return only page N of paginated results */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let result: SDKResponse = self.get("/oauth_client_apps/\(path_client_guid)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Register an OAuth2 Client App - * - * Registers details identifying an external web app or native app as an OAuth2 login client of the Looker instance. - * The app registration must provide a unique client_guid and redirect_uri that the app will present - * in OAuth login requests. If the client_guid and redirect_uri parameters in the login request do not match - * the app details registered with the Looker instance, the request is assumed to be a forgery and is rejected. - * - * POST /oauth_client_apps/{client_guid} -> OauthClientApp - */ - public func register_oauth_client_app( + page: Int64? = nil, + /** + * @param {Int64} per_page Return N rows of data per page + */ + per_page: Int64? = nil, /** - * @param {String} client_guid The unique id of this application + * @param {String} sorts Fields to sort by. */ - _ client_guid: String, + sorts: String? = nil, /** - * @param {WriteOauthClientApp} body + * @param {String} auth_type Auth type user is locked out for (email, ldap, totp, api) */ - _ body: WriteOauthClientApp, + auth_type: String? = nil, /** - * @param {String} fields Requested fields. + * @param {String} full_name Match name */ - fields: String? = nil, + full_name: String? = nil, + /** + * @param {String} email Match email + */ + email: String? = nil, + /** + * @param {String} remote_id Match remote LDAP ID + */ + remote_id: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let result: SDKResponse = self.post("/oauth_client_apps/\(path_client_guid)", - ["fields": fields], try! self.encode(body), options) + let result: SDKResponse = self.get("/user_login_lockouts/search", + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "auth_type": auth_type, "full_name": full_name, "email": email, "remote_id": remote_id, "filter_or": filter_or as Any?], nil, options) return result } /** - * ### Update OAuth2 Client App Details - * - * Modifies the details a previously registered OAuth2 login client app. + * ### Removes login lockout for the associated user. * - * PATCH /oauth_client_apps/{client_guid} -> OauthClientApp + * DELETE /user_login_lockout/{key} -> String */ - public func update_oauth_client_app( - /** - * @param {String} client_guid The unique id of this application - */ - _ client_guid: String, - /** - * @param {WriteOauthClientApp} body - */ - _ body: WriteOauthClientApp, + public func delete_user_login_lockout( /** - * @param {String} fields Requested fields. + * @param {String} key The key associated with the locked user */ - fields: String? = nil, + _ key: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let result: SDKResponse = self.patch("/oauth_client_apps/\(path_client_guid)", - ["fields": fields], try! self.encode(body), options) + let path_key = encodeParam(key) + let result: SDKResponse = self.delete("/user_login_lockout/\(path_key)", nil, nil, options) return result } + + + // MARK ColorCollection: Manage Color Collections + /** - * ### Delete OAuth Client App + * ### Get an array of all existing Color Collections + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * Deletes the registration info of the app with the matching client_guid. - * All active sessions and tokens issued for this app will immediately become invalid. + * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) * - * As with most REST DELETE operations, this endpoint does not return an error if the - * indicated resource does not exist. + * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) * - * ### Note: this deletion cannot be undone. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * DELETE /oauth_client_apps/{client_guid} -> String + * GET /color_collections -> [ColorCollection] */ - public func delete_oauth_client_app( + public func all_color_collections( /** - * @param {String} client_guid The unique id of this application + * @param {String} fields Requested fields. */ - _ client_guid: String, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let result: SDKResponse = self.delete("/oauth_client_apps/\(path_client_guid)", nil, nil, options) + let result: SDKResponse = self.get("/color_collections", + ["fields": fields], nil, options) return result } /** - * ### Invalidate All Issued Tokens + * ### Create a custom color collection with the specified information + * + * Creates a new custom color collection object, returning the details, including the created id. + * + * **Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection) + * + * **Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection) * - * Immediately invalidates all auth codes, sessions, access tokens and refresh tokens issued for - * this app for ALL USERS of this app. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * DELETE /oauth_client_apps/{client_guid}/tokens -> String + * POST /color_collections -> ColorCollection */ - public func invalidate_tokens( + public func create_color_collection( /** - * @param {String} client_guid The unique id of the application + * @param {WriteColorCollection} body */ - _ client_guid: String, + _ body: WriteColorCollection, options: ITransportSettings? = nil ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let result: SDKResponse = self.delete("/oauth_client_apps/\(path_client_guid)/tokens", nil, nil, options) + let result: SDKResponse = self.post("/color_collections", nil, try! self.encode(body), options) return result } /** - * ### Activate an app for a user + * ### Get an array of all existing **Custom** Color Collections + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * Activates a user for a given oauth client app. This indicates the user has been informed that - * the app will have access to the user's looker data, and that the user has accepted and allowed - * the app to use their Looker account. + * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) * - * Activating a user for an app that the user is already activated with returns a success response. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * POST /oauth_client_apps/{client_guid}/users/{user_id} -> String + * GET /color_collections/custom -> [ColorCollection] */ - public func activate_app_user( - /** - * @param {String} client_guid The unique id of this application - */ - _ client_guid: String, - /** - * @param {String} user_id The id of the user to enable use of this app - */ - _ user_id: String, + public func color_collections_custom( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.post("/oauth_client_apps/\(path_client_guid)/users/\(path_user_id)", + let result: SDKResponse = self.get("/color_collections/custom", ["fields": fields], nil, options) return result } /** - * ### Deactivate an app for a user - * - * Deactivate a user for a given oauth client app. All tokens issued to the app for - * this user will be invalid immediately. Before the user can use the app with their - * Looker account, the user will have to read and accept an account use disclosure statement for the app. + * ### Get an array of all existing **Standard** Color Collections + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * Admin users can deactivate other users, but non-admin users can only deactivate themselves. + * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) * - * As with most REST DELETE operations, this endpoint does not return an error if the indicated - * resource (app or user) does not exist or has already been deactivated. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * DELETE /oauth_client_apps/{client_guid}/users/{user_id} -> String + * GET /color_collections/standard -> [ColorCollection] */ - public func deactivate_app_user( - /** - * @param {String} client_guid The unique id of this application - */ - _ client_guid: String, - /** - * @param {String} user_id The id of the user to enable use of this app - */ - _ user_id: String, + public func color_collections_standard( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_client_guid = encodeParam(client_guid) - let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.delete("/oauth_client_apps/\(path_client_guid)/users/\(path_user_id)", + let result: SDKResponse = self.get("/color_collections/standard", ["fields": fields], nil, options) return result } /** - * ### Get the OIDC configuration. + * ### Get the default color collection * - * Looker can be optionally configured to authenticate users against an OpenID Connect (OIDC) - * authentication server. OIDC setup requires coordination with an administrator of that server. - * - * Only Looker administrators can read and update the OIDC configuration. - * - * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. - * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). - * - * OIDC is enabled or disabled for Looker using the **enabled** field. + * Use this to retrieve the default Color Collection. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Set the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection) * - * GET /oidc_config -> OIDCConfig + * GET /color_collections/default -> ColorCollection */ - public func oidc_config( + public func default_color_collection( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/oidc_config", nil, nil, options) + let result: SDKResponse = self.get("/color_collections/default", nil, nil, options) return result } /** - * ### Update the OIDC configuration. - * - * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. - * - * Only Looker administrators can read and update the OIDC configuration. - * - * OIDC is enabled or disabled for Looker using the **enabled** field. - * - * It is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally. + * ### Set the global default Color Collection by ID * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Returns the new specified default Color Collection object. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * PATCH /oidc_config -> OIDCConfig + * PUT /color_collections/default -> ColorCollection */ - public func update_oidc_config( + public func set_default_color_collection( /** - * @param {WriteOIDCConfig} body + * @param {String} collection_id ID of color collection to set as default */ - _ body: WriteOIDCConfig, + _ collection_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/oidc_config", nil, try! self.encode(body), options) + let result: SDKResponse = self.put("/color_collections/default", + ["collection_id": collection_id], nil, options) return result } /** - * ### Get a OIDC test configuration by test_slug. + * ### Get a Color Collection by ID * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Use this to retrieve a specific Color Collection. + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * GET /oidc_test_configs/{test_slug} -> OIDCConfig + * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) + * + * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * + * GET /color_collections/{collection_id} -> ColorCollection */ - public func oidc_test_config( + public func color_collection( /** - * @param {String} test_slug Slug of test config + * @param {String} collection_id Id of Color Collection */ - _ test_slug: String, + _ collection_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.get("/oidc_test_configs/\(path_test_slug)", nil, nil, options) + let path_collection_id = encodeParam(collection_id) + let result: SDKResponse = self.get("/color_collections/\(path_collection_id)", + ["fields": fields], nil, options) return result } /** - * ### Delete a OIDC test configuration. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Update a custom color collection by id. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * DELETE /oidc_test_configs/{test_slug} -> String + * PATCH /color_collections/{collection_id} -> ColorCollection */ - public func delete_oidc_test_config( + public func update_color_collection( /** - * @param {String} test_slug Slug of test config + * @param {String} collection_id Id of Custom Color Collection */ - _ test_slug: String, + _ collection_id: String, + /** + * @param {WriteColorCollection} body + */ + _ body: WriteColorCollection, options: ITransportSettings? = nil ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.delete("/oidc_test_configs/\(path_test_slug)", nil, nil, options) + let path_collection_id = encodeParam(collection_id) + let result: SDKResponse = self.patch("/color_collections/\(path_collection_id)", nil, try! self.encode(body), options) return result } /** - * ### Create a OIDC test configuration. + * ### Delete a custom color collection by id * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * This operation permanently deletes the identified **Custom** color collection. * - * POST /oidc_test_configs -> OIDCConfig + * **Standard** color collections cannot be deleted + * + * Because multiple color collections can have the same label, they must be deleted by ID, not name. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * + * DELETE /color_collections/{collection_id} -> String */ - public func create_oidc_test_config( + public func delete_color_collection( /** - * @param {WriteOIDCConfig} body + * @param {String} collection_id Id of Color Collection */ - _ body: WriteOIDCConfig, + _ collection_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/oidc_test_configs", nil, try! self.encode(body), options) + let path_collection_id = encodeParam(collection_id) + let result: SDKResponse = self.delete("/color_collections/\(path_collection_id)", nil, nil, options) return result } + + + // MARK Config: Manage General Configuration + /** - * ### Get password config. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### WARNING: The Looker internal database backup function has been deprecated. * - * GET /password_config -> PasswordConfig + * GET /backup_configuration -> BackupConfiguration */ - public func password_config( + @available(*, deprecated) + public func backup_configuration( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/password_config", nil, nil, options) + let result: SDKResponse = self.get("/backup_configuration", nil, nil, options) return result } /** - * ### Update password config. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### WARNING: The Looker internal database backup function has been deprecated. * - * PATCH /password_config -> PasswordConfig + * PATCH /backup_configuration -> BackupConfiguration */ - public func update_password_config( + @available(*, deprecated) + public func update_backup_configuration( /** - * @param {WritePasswordConfig} body + * @param {WriteBackupConfiguration} body */ - _ body: WritePasswordConfig, + _ body: WriteBackupConfiguration, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/password_config", nil, try! self.encode(body), options) + let result: SDKResponse = self.patch("/backup_configuration", nil, try! self.encode(body), options) return result } /** - * ### Force all credentials_email users to reset their login passwords upon their next login. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Get the current Cloud Storage Configuration. * - * PUT /password_config/force_password_reset_at_next_login_for_all_users -> String + * GET /cloud_storage -> BackupConfiguration */ - public func force_password_reset_at_next_login_for_all_users( + public func cloud_storage_configuration( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/password_config/force_password_reset_at_next_login_for_all_users", nil, nil, options) + let result: SDKResponse = self.get("/cloud_storage", nil, nil, options) return result } /** - * ### Get the SAML configuration. - * - * Looker can be optionally configured to authenticate users against a SAML authentication server. - * SAML setup requires coordination with an administrator of that server. - * - * Only Looker administrators can read and update the SAML configuration. - * - * Configuring SAML impacts authentication for all users. This configuration should be done carefully. - * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). - * - * SAML is enabled or disabled for Looker using the **enabled** field. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Update the current Cloud Storage Configuration. * - * GET /saml_config -> SamlConfig + * PATCH /cloud_storage -> BackupConfiguration */ - public func saml_config( + public func update_cloud_storage_configuration( + /** + * @param {WriteBackupConfiguration} body + */ + _ body: WriteBackupConfiguration, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/saml_config", nil, nil, options) + let result: SDKResponse = self.patch("/cloud_storage", nil, try! self.encode(body), options) return result } /** - * ### Update the SAML configuration. - * - * Configuring SAML impacts authentication for all users. This configuration should be done carefully. - * - * Only Looker administrators can read and update the SAML configuration. - * - * SAML is enabled or disabled for Looker using the **enabled** field. - * - * It is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Get the current status and content of custom welcome emails * - * PATCH /saml_config -> SamlConfig + * GET /custom_welcome_email -> CustomWelcomeEmail */ - public func update_saml_config( - /** - * @param {WriteSamlConfig} body - */ - _ body: WriteSamlConfig, + public func custom_welcome_email( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/saml_config", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/custom_welcome_email", nil, nil, options) return result } /** - * ### Get a SAML test configuration by test_slug. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user. * - * GET /saml_test_configs/{test_slug} -> SamlConfig + * PATCH /custom_welcome_email -> CustomWelcomeEmail */ - public func saml_test_config( + public func update_custom_welcome_email( /** - * @param {String} test_slug Slug of test config + * @param {WriteCustomWelcomeEmail} body */ - _ test_slug: String, + _ body: WriteCustomWelcomeEmail, + /** + * @param {Bool} send_test_welcome_email If true a test email with the content from the request will be sent to the current user after saving + */ + send_test_welcome_email: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.get("/saml_test_configs/\(path_test_slug)", nil, nil, options) + let result: SDKResponse = self.patch("/custom_welcome_email", + ["send_test_welcome_email": send_test_welcome_email as Any?], try! self.encode(body), options) return result } /** - * ### Delete a SAML test configuration. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user. * - * DELETE /saml_test_configs/{test_slug} -> String + * PUT /custom_welcome_email_test -> WelcomeEmailTest */ - public func delete_saml_test_config( + public func update_custom_welcome_email_test( /** - * @param {String} test_slug Slug of test config + * @param {WelcomeEmailTest} body */ - _ test_slug: String, + _ body: WelcomeEmailTest, options: ITransportSettings? = nil ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.delete("/saml_test_configs/\(path_test_slug)", nil, nil, options) + let result: SDKResponse = self.put("/custom_welcome_email_test", nil, try! self.encode(body), options) return result } /** - * ### Create a SAML test configuration. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Retrieve the value for whether or not digest emails is enabled * - * POST /saml_test_configs -> SamlConfig + * GET /digest_emails_enabled -> DigestEmails */ - public func create_saml_test_config( - /** - * @param {WriteSamlConfig} body - */ - _ body: WriteSamlConfig, + public func digest_emails_enabled( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/saml_test_configs", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/digest_emails_enabled", nil, nil, options) return result } /** - * ### Parse the given xml as a SAML IdP metadata document and return the result. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Update the setting for enabling/disabling digest emails * - * POST /parse_saml_idp_metadata -> SamlMetadataParseResult + * PATCH /digest_emails_enabled -> DigestEmails */ - public func parse_saml_idp_metadata( + public func update_digest_emails_enabled( /** - * @param {String} body + * @param {DigestEmails} body */ - _ body: String, + _ body: DigestEmails, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/parse_saml_idp_metadata", nil, try! self.encode(body), options) + let result: SDKResponse = self.patch("/digest_emails_enabled", nil, try! self.encode(body), options) return result } /** - * ### Fetch the given url and parse it as a SAML IdP metadata document and return the result. - * Note that this requires that the url be public or at least at a location where the Looker instance - * can fetch it without requiring any special authentication. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Trigger the generation of digest email records and send them to Looker's internal system. This does not send + * any actual emails, it generates records containing content which may be of interest for users who have become inactive. + * Emails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings. * - * POST /fetch_and_parse_saml_idp_metadata -> SamlMetadataParseResult + * POST /digest_email_send -> DigestEmailSend */ - public func fetch_and_parse_saml_idp_metadata( - /** - * @param {String} body - */ - _ body: String, + public func create_digest_email_send( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/fetch_and_parse_saml_idp_metadata", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/digest_email_send", nil, nil, options) return result } /** - * ### Get session config. + * ### Set the menu item name and content for internal help resources * - * GET /session_config -> SessionConfig + * GET /internal_help_resources_content -> InternalHelpResourcesContent */ - public func session_config( + public func internal_help_resources_content( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/session_config", nil, nil, options) + let result: SDKResponse = self.get("/internal_help_resources_content", nil, nil, options) return result } /** - * ### Update session config. + * Update internal help resources content * - * PATCH /session_config -> SessionConfig + * PATCH /internal_help_resources_content -> InternalHelpResourcesContent */ - public func update_session_config( + public func update_internal_help_resources_content( /** - * @param {WriteSessionConfig} body + * @param {WriteInternalHelpResourcesContent} body */ - _ body: WriteSessionConfig, + _ body: WriteInternalHelpResourcesContent, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/session_config", nil, try! self.encode(body), options) + let result: SDKResponse = self.patch("/internal_help_resources_content", nil, try! self.encode(body), options) return result } /** - * ### Get Support Access Allowlist Users - * - * Returns the users that have been added to the Support Access Allowlist + * ### Get and set the options for internal help resources * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * GET /internal_help_resources_enabled -> InternalHelpResources + */ + public func internal_help_resources( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/internal_help_resources_enabled", nil, nil, options) + return result + } + + /** + * Update internal help resources settings * - * GET /support_access/allowlist -> [SupportAccessAllowlistEntry] + * PATCH /internal_help_resources -> InternalHelpResources */ - public func get_support_access_allowlist_entries( + public func update_internal_help_resources( /** - * @param {String} fields Requested fields. + * @param {WriteInternalHelpResources} body */ - fields: String? = nil, + _ body: WriteInternalHelpResources, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/support_access/allowlist", - ["fields": fields], nil, options) + let result: SDKResponse = self.patch("/internal_help_resources", nil, try! self.encode(body), options) return result } /** - * ### Add Support Access Allowlist Users - * - * Adds a list of emails to the Allowlist, using the provided reason + * ### Get all legacy features. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /support_access/allowlist -> [SupportAccessAllowlistEntry] + * GET /legacy_features -> [LegacyFeature] */ - public func add_support_access_allowlist_entries( - /** - * @param {SupportAccessAddEntries} body - */ - _ body: SupportAccessAddEntries, + public func all_legacy_features( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/support_access/allowlist", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/legacy_features", nil, nil, options) return result } /** - * ### Delete Support Access Allowlist User - * - * Deletes the specified Allowlist Entry Id + * ### Get information about the legacy feature with a specific id. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * DELETE /support_access/allowlist/{entry_id} -> String + * GET /legacy_features/{legacy_feature_id} -> LegacyFeature */ - public func delete_support_access_allowlist_entry( + public func legacy_feature( /** - * @param {String} entry_id Id of Allowlist Entry + * @param {Int64} legacy_feature_id id of legacy feature */ - _ entry_id: String, + _ legacy_feature_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { - let path_entry_id = encodeParam(entry_id) - let result: SDKResponse = self.delete("/support_access/allowlist/\(path_entry_id)", nil, nil, options) + let path_legacy_feature_id = encodeParam(legacy_feature_id) + let result: SDKResponse = self.get("/legacy_features/\(path_legacy_feature_id)", nil, nil, options) return result } /** - * ### Enable Support Access - * - * Enables Support Access for the provided duration + * ### Update information about the legacy feature with a specific id. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /support_access/enable -> SupportAccessStatus + * PATCH /legacy_features/{legacy_feature_id} -> LegacyFeature */ - public func enable_support_access( + public func update_legacy_feature( + /** + * @param {Int64} legacy_feature_id id of legacy feature + */ + _ legacy_feature_id: Int64, /** - * @param {SupportAccessEnable} body + * @param {WriteLegacyFeature} body */ - _ body: SupportAccessEnable, + _ body: WriteLegacyFeature, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/support_access/enable", nil, try! self.encode(body), options) + let path_legacy_feature_id = encodeParam(legacy_feature_id) + let result: SDKResponse = self.patch("/legacy_features/\(path_legacy_feature_id)", nil, try! self.encode(body), options) return result } /** - * ### Disable Support Access - * - * Disables Support Access immediately - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Get a list of locales that Looker supports. * - * PUT /support_access/disable -> SupportAccessStatus + * GET /locales -> [LkLocale] */ - public func disable_support_access( + public func all_locales( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/support_access/disable", nil, nil, options) + let result: SDKResponse = self.get("/locales", nil, nil, options) return result } /** - * ### Support Access Status - * - * Returns the current Support Access Status + * ### Configure SMTP Settings + * This API allows users to configure the SMTP settings on the Looker instance. + * Only admin users are authorised to call this API. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * POST /smtp_settings -> Voidable + */ + public func set_smtp_settings( + /** + * @param {SmtpSettings} body + */ + _ body: SmtpSettings, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/smtp_settings", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks). * - * GET /support_access/status -> SupportAccessStatus + * GET /timezones -> [Timezone] */ - public func support_access_status( + public func all_timezones( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/support_access/status", nil, nil, options) + let result: SDKResponse = self.get("/timezones", nil, nil, options) return result } /** - * ### Get currently locked-out users. + * ### Get information about all API versions supported by this Looker instance. * - * GET /user_login_lockouts -> [UserLoginLockout] + * GET /versions -> ApiVersion */ - public func all_user_login_lockouts( + public func versions( /** - * @param {String} fields Include only these fields in the response + * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/user_login_lockouts", + let result: SDKResponse = self.get("/versions", ["fields": fields], nil, options) return result } /** - * ### Search currently locked-out users. + * ### This feature is enabled only by special license. + * ### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc. * - * GET /user_login_lockouts/search -> [UserLoginLockout] + * GET /whitelabel_configuration -> WhitelabelConfiguration */ - public func search_user_login_lockouts( + public func whitelabel_configuration( /** - * @param {String} fields Include only these fields in the response + * @param {String} fields Requested fields. */ fields: String? = nil, - /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results - */ - page: Int64? = nil, - /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page - */ - per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {String} auth_type Auth type user is locked out for (email, ldap, totp, api) - */ - auth_type: String? = nil, - /** - * @param {String} full_name Match name - */ - full_name: String? = nil, - /** - * @param {String} email Match email - */ - email: String? = nil, - /** - * @param {String} remote_id Match remote LDAP ID - */ - remote_id: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/user_login_lockouts/search", - ["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 as Any?], nil, options) + let result: SDKResponse = self.get("/whitelabel_configuration", + ["fields": fields], nil, options) return result } /** - * ### Removes login lockout for the associated user. + * ### Update the whitelabel configuration * - * DELETE /user_login_lockout/{key} -> String + * PUT /whitelabel_configuration -> WhitelabelConfiguration */ - public func delete_user_login_lockout( + public func update_whitelabel_configuration( /** - * @param {String} key The key associated with the locked user + * @param {WriteWhitelabelConfiguration} body */ - _ key: String, + _ body: WriteWhitelabelConfiguration, options: ITransportSettings? = nil ) -> SDKResponse { - let path_key = encodeParam(key) - let result: SDKResponse = self.delete("/user_login_lockout/\(path_key)", nil, nil, options) + let result: SDKResponse = self.put("/whitelabel_configuration", nil, try! self.encode(body), options) return result } - // MARK Board: Manage Boards + // MARK Connection: Manage Database Connections /** - * ### Get information about all boards. + * ### Get information about all connections. * - * GET /boards -> [Board] + * GET /connections -> [DBConnection] */ - public func all_boards( + public func all_connections( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/boards", + let result: SDKResponse = self.get("/connections", ["fields": fields], nil, options) return result } /** - * ### Create a new board. + * ### Create a connection using the specified configuration. * - * POST /boards -> Board + * POST /connections -> DBConnection */ - public func create_board( - /** - * @param {WriteBoard} body - */ - _ body: WriteBoard, + public func create_connection( /** - * @param {String} fields Requested fields. + * @param {WriteDBConnection} body */ - fields: String? = nil, + _ body: WriteDBConnection, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/boards", - ["fields": fields], try! self.encode(body), options) + let result: SDKResponse = self.post("/connections", nil, try! self.encode(body), options) return result } /** - * ### Search Boards - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. + * ### Get information about a connection. * - * GET /boards/search -> [Board] + * GET /connections/{connection_name} -> DBConnection */ - public func search_boards( - /** - * @param {String} title Matches board title. - */ - title: String? = nil, - /** - * @param {String} created_at Matches the timestamp for when the board was created. - */ - created_at: String? = nil, - /** - * @param {String} first_name The first name of the user who created this board. - */ - first_name: String? = nil, + public func connection( /** - * @param {String} last_name The last name of the user who created this board. + * @param {String} connection_name Name of connection */ - last_name: String? = nil, + _ connection_name: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.get("/connections/\(path_connection_name)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update a connection using the specified configuration. + * + * PATCH /connections/{connection_name} -> DBConnection + */ + public func update_connection( /** - * @param {Bool} favorited Return favorited boards when true. - */ - favorited: Bool? = nil, - /** - * @param {String} creator_id Filter on boards created by a particular user. - */ - creator_id: String? = nil, - /** - * @param {String} sorts The fields to sort the results by + * @param {String} connection_name Name of connection */ - sorts: String? = nil, + _ connection_name: String, /** - * @param {Int64} page The page to return. DEPRECATED. Use offset instead. + * @param {WriteDBConnection} body */ - page: Int64? = nil, - /** - * @param {Int64} per_page The number of items in the returned page. DEPRECATED. Use limit instead. - */ - per_page: Int64? = nil, - /** - * @param {Int64} offset The number of items to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, - /** - * @param {Int64} limit The maximum number of items to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, - /** - * @param {String} permission Filter results based on permission, either show (default) or update - */ - permission: String? = nil, + _ body: WriteDBConnection, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/boards/search", - ["title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited as Any?, "creator_id": creator_id, "sorts": sorts, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "filter_or": filter_or as Any?, "permission": permission], nil, options) + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.patch("/connections/\(path_connection_name)", nil, try! self.encode(body), options) return result } /** - * ### Get information about a board. + * ### Delete a connection. * - * GET /boards/{board_id} -> Board + * DELETE /connections/{connection_name} -> String */ - public func board( - /** - * @param {String} board_id Id of board - */ - _ board_id: String, + public func delete_connection( /** - * @param {String} fields Requested fields. + * @param {String} connection_name Name of connection */ - fields: String? = nil, + _ connection_name: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_board_id = encodeParam(board_id) - let result: SDKResponse = self.get("/boards/\(path_board_id)", - ["fields": fields], nil, options) + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.delete("/connections/\(path_connection_name)", nil, nil, options) return result } /** - * ### Update a board definition. + * ### Delete a connection override. * - * PATCH /boards/{board_id} -> Board + * DELETE /connections/{connection_name}/connection_override/{override_context} -> String */ - public func update_board( - /** - * @param {String} board_id Id of board - */ - _ board_id: String, + public func delete_connection_override( /** - * @param {WriteBoard} body + * @param {String} connection_name Name of connection */ - _ body: WriteBoard, + _ connection_name: String, /** - * @param {String} fields Requested fields. + * @param {String} override_context Context of connection override */ - fields: String? = nil, + _ override_context: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_board_id = encodeParam(board_id) - let result: SDKResponse = self.patch("/boards/\(path_board_id)", - ["fields": fields], try! self.encode(body), options) + let path_connection_name = encodeParam(connection_name) + let path_override_context = encodeParam(override_context) + let result: SDKResponse = self.delete("/connections/\(path_connection_name)/connection_override/\(path_override_context)", nil, nil, options) return result } /** - * ### Delete a board. + * ### Test an existing connection. + * + * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the + * specific types of tests that the connection supports. + * + * This API is rate limited. * - * DELETE /boards/{board_id} -> String + * Unsupported tests in the request will be ignored. + * + * PUT /connections/{connection_name}/test -> [DBConnectionTestResult] */ - public func delete_board( + public func test_connection( /** - * @param {String} board_id Id of board + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {DelimArray} tests Array of names of tests to run */ - _ board_id: String, + tests: DelimArray? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_board_id = encodeParam(board_id) - let result: SDKResponse = self.delete("/boards/\(path_board_id)", nil, nil, options) + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.put("/connections/\(path_connection_name)/test", + ["tests": tests as Any?], nil, options) return result } /** - * ### Get information about all board items. + * ### Test a connection configuration. + * + * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the + * specific types of tests that the connection supports. + * + * This API is rate limited. + * + * Unsupported tests in the request will be ignored. * - * GET /board_items -> [BoardItem] + * PUT /connections/test -> [DBConnectionTestResult] */ - public func all_board_items( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func test_connection_config( /** - * @param {String} sorts Fields to sort by. + * @param {WriteDBConnection} body */ - sorts: String? = nil, + _ body: WriteDBConnection, /** - * @param {String} board_section_id Filter to a specific board section + * @param {DelimArray} tests Array of names of tests to run */ - board_section_id: String? = nil, + tests: DelimArray? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/board_items", - ["fields": fields, "sorts": sorts, "board_section_id": board_section_id], nil, options) + let result: SDKResponse = self.put("/connections/test", + ["tests": tests as Any?], try! self.encode(body), options) return result } /** - * ### Create a new board item. + * ### Get information about all dialects. * - * POST /board_items -> BoardItem + * GET /dialect_info -> [DialectInfo] */ - public func create_board_item( - /** - * @param {WriteBoardItem} body - */ - _ body: WriteBoardItem, + public func all_dialect_infos( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/board_items", - ["fields": fields], try! self.encode(body), options) + let result: SDKResponse = self.get("/dialect_info", + ["fields": fields], nil, options) return result } + + + // MARK Content: Manage Content + /** - * ### Get information about a board item. + * ### Search Favorite Content + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" * - * GET /board_items/{board_item_id} -> BoardItem + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /content_favorite/search -> [ContentFavorite] */ - public func board_item( + public func search_content_favorites( + /** + * @param {Int64} id Match content favorite id(s) + */ + id: Int64? = nil, + /** + * @param {Int64} user_id Match user id(s) + */ + user_id: Int64? = nil, + /** + * @param {Int64} content_metadata_id Match content metadata id(s) + */ + content_metadata_id: Int64? = nil, + /** + * @param {Int64} dashboard_id Match dashboard id(s) + */ + dashboard_id: Int64? = nil, + /** + * @param {Int64} look_id Match look id(s) + */ + look_id: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit) + */ + offset: Int64? = nil, /** - * @param {String} board_item_id Id of board item + * @param {String} sorts Fields to sort by. */ - _ board_item_id: String, + sorts: String? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_board_item_id = encodeParam(board_item_id) - let result: SDKResponse = self.get("/board_items/\(path_board_item_id)", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/content_favorite/search", + ["id": id, "user_id": user_id, "content_metadata_id": content_metadata_id, "dashboard_id": dashboard_id, "look_id": look_id, "limit": limit, "offset": offset, "sorts": sorts, "fields": fields, "filter_or": filter_or as Any?], nil, options) return result } /** - * ### Update a board item definition. + * ### Get favorite content by its id * - * PATCH /board_items/{board_item_id} -> BoardItem + * GET /content_favorite/{content_favorite_id} -> ContentFavorite */ - public func update_board_item( - /** - * @param {String} board_item_id Id of board item - */ - _ board_item_id: String, + public func content_favorite( /** - * @param {WriteBoardItem} body + * @param {Int64} content_favorite_id Id of favorite content */ - _ body: WriteBoardItem, + _ content_favorite_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_board_item_id = encodeParam(board_item_id) - let result: SDKResponse = self.patch("/board_items/\(path_board_item_id)", - ["fields": fields], try! self.encode(body), options) + let path_content_favorite_id = encodeParam(content_favorite_id) + let result: SDKResponse = self.get("/content_favorite/\(path_content_favorite_id)", + ["fields": fields], nil, options) return result } /** - * ### Delete a board item. + * ### Delete favorite content * - * DELETE /board_items/{board_item_id} -> String + * DELETE /content_favorite/{content_favorite_id} -> String */ - public func delete_board_item( + public func delete_content_favorite( /** - * @param {String} board_item_id Id of board item + * @param {Int64} content_favorite_id Id of favorite content */ - _ board_item_id: String, + _ content_favorite_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { - let path_board_item_id = encodeParam(board_item_id) - let result: SDKResponse = self.delete("/board_items/\(path_board_item_id)", nil, nil, options) + let path_content_favorite_id = encodeParam(content_favorite_id) + let result: SDKResponse = self.delete("/content_favorite/\(path_content_favorite_id)", nil, nil, options) return result } /** - * ### Get information about all board sections. + * ### Create favorite content * - * GET /board_sections -> [BoardSection] + * POST /content_favorite -> ContentFavorite */ - public func all_board_sections( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func create_content_favorite( /** - * @param {String} sorts Fields to sort by. + * @param {WriteContentFavorite} body */ - sorts: String? = nil, + _ body: WriteContentFavorite, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/board_sections", - ["fields": fields, "sorts": sorts], nil, options) + let result: SDKResponse = self.post("/content_favorite", nil, try! self.encode(body), options) return result } /** - * ### Create a new board section. + * ### Get information about all content metadata in a space. * - * POST /board_sections -> BoardSection + * GET /content_metadata -> [ContentMeta] */ - public func create_board_section( + public func all_content_metadatas( /** - * @param {WriteBoardSection} body + * @param {Int64} parent_id Parent space of content. */ - _ body: WriteBoardSection, + _ parent_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/board_sections", - ["fields": fields], try! self.encode(body), options) + let result: SDKResponse = self.get("/content_metadata", + ["parent_id": parent_id, "fields": fields], nil, options) return result } /** - * ### Get information about a board section. + * ### Get information about an individual content metadata record. * - * GET /board_sections/{board_section_id} -> BoardSection + * GET /content_metadata/{content_metadata_id} -> ContentMeta */ - public func board_section( + public func content_metadata( /** - * @param {String} board_section_id Id of board section + * @param {Int64} content_metadata_id Id of content metadata */ - _ board_section_id: String, + _ content_metadata_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_board_section_id = encodeParam(board_section_id) - let result: SDKResponse = self.get("/board_sections/\(path_board_section_id)", + let path_content_metadata_id = encodeParam(content_metadata_id) + let result: SDKResponse = self.get("/content_metadata/\(path_content_metadata_id)", ["fields": fields], nil, options) return result } /** - * ### Update a board section definition. + * ### Move a piece of content. * - * PATCH /board_sections/{board_section_id} -> BoardSection + * PATCH /content_metadata/{content_metadata_id} -> ContentMeta */ - public func update_board_section( - /** - * @param {String} board_section_id Id of board section - */ - _ board_section_id: String, + public func update_content_metadata( /** - * @param {WriteBoardSection} body + * @param {Int64} content_metadata_id Id of content metadata */ - _ body: WriteBoardSection, + _ content_metadata_id: Int64, /** - * @param {String} fields Requested fields. + * @param {WriteContentMeta} body */ - fields: String? = nil, + _ body: WriteContentMeta, options: ITransportSettings? = nil ) -> SDKResponse { - let path_board_section_id = encodeParam(board_section_id) - let result: SDKResponse = self.patch("/board_sections/\(path_board_section_id)", - ["fields": fields], try! self.encode(body), options) + let path_content_metadata_id = encodeParam(content_metadata_id) + let result: SDKResponse = self.patch("/content_metadata/\(path_content_metadata_id)", nil, try! self.encode(body), options) return result } /** - * ### Delete a board section. + * ### All content metadata access records for a content metadata item. * - * DELETE /board_sections/{board_section_id} -> String + * GET /content_metadata_access -> [ContentMetaGroupUser] */ - public func delete_board_section( + public func all_content_metadata_accesses( /** - * @param {String} board_section_id Id of board section + * @param {Int64} content_metadata_id Id of content metadata */ - _ board_section_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_board_section_id = encodeParam(board_section_id) - let result: SDKResponse = self.delete("/board_sections/\(path_board_section_id)", nil, nil, options) - return result - } - - - - // MARK ColorCollection: Manage Color Collections - - /** - * ### Get an array of all existing Color Collections - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) - * - * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) - * - * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) - * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. - * - * GET /color_collections -> [ColorCollection] - */ - public func all_color_collections( + _ content_metadata_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/color_collections", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/content_metadata_access", + ["content_metadata_id": content_metadata_id, "fields": fields], nil, options) return result } /** - * ### Create a custom color collection with the specified information - * - * Creates a new custom color collection object, returning the details, including the created id. - * - * **Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection) - * - * **Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection) - * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * ### Create content metadata access. * - * POST /color_collections -> ColorCollection + * POST /content_metadata_access -> ContentMetaGroupUser */ - public func create_color_collection( + public func create_content_metadata_access( /** - * @param {WriteColorCollection} body + * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH */ - _ body: WriteColorCollection, + _ body: ContentMetaGroupUser, + /** + * @param {Bool} send_boards_notification_email Optionally sends notification email when granting access to a board. + */ + send_boards_notification_email: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/color_collections", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/content_metadata_access", + ["send_boards_notification_email": send_boards_notification_email as Any?], try! self.encode(body), options) return result } /** - * ### Get an array of all existing **Custom** Color Collections - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) + * ### Update type of access for content metadata. * - * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) - * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. - * - * GET /color_collections/custom -> [ColorCollection] + * PUT /content_metadata_access/{content_metadata_access_id} -> ContentMetaGroupUser */ - public func color_collections_custom( + public func update_content_metadata_access( /** - * @param {String} fields Requested fields. + * @param {Int64} content_metadata_access_id Id of content metadata access */ - fields: String? = nil, + _ content_metadata_access_id: Int64, + /** + * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH + */ + _ body: ContentMetaGroupUser, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/color_collections/custom", - ["fields": fields], nil, options) + let path_content_metadata_access_id = encodeParam(content_metadata_access_id) + let result: SDKResponse = self.put("/content_metadata_access/\(path_content_metadata_access_id)", nil, try! self.encode(body), options) return result } /** - * ### Get an array of all existing **Standard** Color Collections - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) - * - * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) - * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * ### Remove content metadata access. * - * GET /color_collections/standard -> [ColorCollection] + * DELETE /content_metadata_access/{content_metadata_access_id} -> String */ - public func color_collections_standard( + public func delete_content_metadata_access( /** - * @param {String} fields Requested fields. + * @param {Int64} content_metadata_access_id Id of content metadata access */ - fields: String? = nil, + _ content_metadata_access_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/color_collections/standard", - ["fields": fields], nil, options) + let path_content_metadata_access_id = encodeParam(content_metadata_access_id) + let result: SDKResponse = self.delete("/content_metadata_access/\(path_content_metadata_access_id)", nil, nil, options) return result } /** - * ### Get the default color collection + * ### Get an image representing the contents of a dashboard or look. * - * Use this to retrieve the default Color Collection. + * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not + * reflect the actual data displayed in the respective visualizations. * - * Set the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection) + * GET /content_thumbnail/{type}/{resource_id} -> String * - * GET /color_collections/default -> ColorCollection + * **Note**: Binary content may be returned by this method. */ - public func default_color_collection( + public func content_thumbnail( + /** + * @param {String} type Either dashboard or look + */ + _ type: String, + /** + * @param {String} resource_id ID of the dashboard or look to render + */ + _ resource_id: String, + /** + * @param {String} reload Whether or not to refresh the rendered image with the latest content + */ + reload: String? = nil, + /** + * @param {String} theme Light or dark background. Default is "light" + */ + theme: String? = nil, + /** + * @param {String} format A value of png produces a thumbnail in PNG format instead of SVG (default) + */ + format: String? = nil, + /** + * @param {Int64} width The width of the image if format is supplied + */ + width: Int64? = nil, + /** + * @param {Int64} height The height of the image if format is supplied + */ + height: Int64? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/color_collections/default", nil, nil, options) + let path_type = encodeParam(type) + let path_resource_id = encodeParam(resource_id) + let result: SDKResponse = self.get("/content_thumbnail/\(path_type)/\(path_resource_id)", + ["reload": reload, "theme": theme, "format": format, "width": width, "height": height], nil, options) return result } /** - * ### Set the global default Color Collection by ID + * ### Validate All Content * - * Returns the new specified default Color Collection object. - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Performs validation of all looks and dashboards + * Returns a list of errors found as well as metadata about the content validation run. * - * PUT /color_collections/default -> ColorCollection + * GET /content_validation -> ContentValidation */ - public func set_default_color_collection( + public func content_validation( /** - * @param {String} collection_id ID of color collection to set as default + * @param {String} fields Requested fields. */ - _ collection_id: String, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/color_collections/default", - ["collection_id": collection_id], nil, options) + let result: SDKResponse = self.get("/content_validation", + ["fields": fields], nil, options) return result } /** - * ### Get a Color Collection by ID + * ### Search Content Views * - * Use this to retrieve a specific Color Collection. - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. * - * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. * - * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. * - * GET /color_collections/{collection_id} -> ColorCollection + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /content_view/search -> [ContentView] */ - public func color_collection( + public func search_content_views( /** - * @param {String} collection_id Id of Color Collection + * @param {Int64} view_count Match view count */ - _ collection_id: String, + view_count: Int64? = nil, /** - * @param {String} fields Requested fields. + * @param {Int64} group_id Match Group Id + */ + group_id: Int64? = nil, + /** + * @param {String} look_id Match look_id + */ + look_id: String? = nil, + /** + * @param {String} dashboard_id Match dashboard_id + */ + dashboard_id: String? = nil, + /** + * @param {Int64} content_metadata_id Match content metadata id + */ + content_metadata_id: Int64? = nil, + /** + * @param {String} start_of_week_date Match start of week date (format is "YYYY-MM-DD") + */ + start_of_week_date: String? = nil, + /** + * @param {Bool} all_time True if only all time view records should be returned + */ + all_time: Bool? = nil, + /** + * @param {Int64} user_id Match user id + */ + user_id: Int64? = nil, + /** + * @param {String} fields Requested fields */ fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_collection_id = encodeParam(collection_id) - let result: SDKResponse = self.get("/color_collections/\(path_collection_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update a custom color collection by id. - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. - * - * PATCH /color_collections/{collection_id} -> ColorCollection - */ - public func update_color_collection( /** - * @param {String} collection_id Id of Custom Color Collection + * @param {Int64} limit Number of results to return. Use with `offset` to manage pagination of results */ - _ collection_id: String, + limit: Int64? = nil, /** - * @param {WriteColorCollection} body + * @param {Int64} offset Number of results to skip before returning data */ - _ body: WriteColorCollection, + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by + */ + sorts: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_collection_id = encodeParam(collection_id) - let result: SDKResponse = self.patch("/color_collections/\(path_collection_id)", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/content_view/search", + ["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 as Any?, "user_id": user_id, "fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) return result } /** - * ### Delete a custom color collection by id - * - * This operation permanently deletes the identified **Custom** color collection. + * ### Get a vector image representing the contents of a dashboard or look. * - * **Standard** color collections cannot be deleted + * # DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail) * - * Because multiple color collections can have the same label, they must be deleted by ID, not name. - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not + * reflect the actual data displayed in the respective visualizations. * - * DELETE /color_collections/{collection_id} -> String + * GET /vector_thumbnail/{type}/{resource_id} -> String */ - public func delete_color_collection( + @available(*, deprecated) + public func vector_thumbnail( /** - * @param {String} collection_id Id of Color Collection + * @param {String} type Either dashboard or look */ - _ collection_id: String, + _ type: String, + /** + * @param {String} resource_id ID of the dashboard or look to render + */ + _ resource_id: String, + /** + * @param {String} reload Whether or not to refresh the rendered image with the latest content + */ + reload: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_collection_id = encodeParam(collection_id) - let result: SDKResponse = self.delete("/color_collections/\(path_collection_id)", nil, nil, options) + let path_type = encodeParam(type) + let path_resource_id = encodeParam(resource_id) + let result: SDKResponse = self.get("/vector_thumbnail/\(path_type)/\(path_resource_id)", + ["reload": reload], nil, options) return result } - // MARK Config: Manage General Configuration + // MARK Dashboard: Manage Dashboards /** - * Get the current Cloud Storage Configuration. + * ### Get information about all active dashboards. * - * GET /cloud_storage -> BackupConfiguration - */ - public func cloud_storage_configuration( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/cloud_storage", nil, nil, options) - return result - } - - /** - * Update the current Cloud Storage Configuration. + * Returns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list. * - * PATCH /cloud_storage -> BackupConfiguration + * Get the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard) + * + * Find **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards) + * + * GET /dashboards -> [DashboardBase] */ - public func update_cloud_storage_configuration( + public func all_dashboards( /** - * @param {WriteBackupConfiguration} body + * @param {String} fields Requested fields. */ - _ body: WriteBackupConfiguration, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/cloud_storage", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/dashboards", + ["fields": fields], nil, options) return result } /** - * ### Get the current status and content of custom welcome emails - * - * GET /custom_welcome_email -> CustomWelcomeEmail - */ - @available(*, deprecated) - public func custom_welcome_email( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/custom_welcome_email", nil, nil, options) - return result - } - - /** - * Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user. - * - * PATCH /custom_welcome_email -> CustomWelcomeEmail - */ - @available(*, deprecated) - public func update_custom_welcome_email( - /** - * @param {CustomWelcomeEmail} body - */ - _ body: CustomWelcomeEmail, - /** - * @param {Bool} send_test_welcome_email If true a test email with the content from the request will be sent to the current user after saving - */ - send_test_welcome_email: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/custom_welcome_email", - ["send_test_welcome_email": send_test_welcome_email as Any?], try! self.encode(body), options) - return result - } - - /** - * Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user. - * - * PUT /custom_welcome_email_test -> WelcomeEmailTest - */ - public func update_custom_welcome_email_test( - /** - * @param {WelcomeEmailTest} body - */ - _ body: WelcomeEmailTest, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/custom_welcome_email_test", nil, try! self.encode(body), options) - return result - } - - /** - * ### Retrieve the value for whether or not digest emails is enabled - * - * GET /digest_emails_enabled -> DigestEmails - */ - public func digest_emails_enabled( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/digest_emails_enabled", nil, nil, options) - return result - } - - /** - * ### Update the setting for enabling/disabling digest emails - * - * PATCH /digest_emails_enabled -> DigestEmails - */ - public func update_digest_emails_enabled( - /** - * @param {DigestEmails} body - */ - _ body: DigestEmails, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/digest_emails_enabled", nil, try! self.encode(body), options) - return result - } - - /** - * ### Trigger the generation of digest email records and send them to Looker's internal system. This does not send - * any actual emails, it generates records containing content which may be of interest for users who have become inactive. - * Emails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings. - * - * POST /digest_email_send -> DigestEmailSend - */ - public func create_digest_email_send( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/digest_email_send", nil, nil, options) - return result - } - - /** - * ### Get Egress IP Addresses - * - * Returns the list of public egress IP Addresses for a hosted customer's instance - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * GET /public_egress_ip_addresses -> EgressIpAddresses - */ - public func public_egress_ip_addresses( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/public_egress_ip_addresses", nil, nil, options) - return result - } - - /** - * ### Set the menu item name and content for internal help resources - * - * GET /internal_help_resources_content -> InternalHelpResourcesContent - */ - public func internal_help_resources_content( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/internal_help_resources_content", nil, nil, options) - return result - } - - /** - * Update internal help resources content - * - * PATCH /internal_help_resources_content -> InternalHelpResourcesContent - */ - public func update_internal_help_resources_content( - /** - * @param {WriteInternalHelpResourcesContent} body - */ - _ body: WriteInternalHelpResourcesContent, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/internal_help_resources_content", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get and set the options for internal help resources - * - * GET /internal_help_resources_enabled -> InternalHelpResources - */ - public func internal_help_resources( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/internal_help_resources_enabled", nil, nil, options) - return result - } - - /** - * Update internal help resources settings - * - * PATCH /internal_help_resources -> InternalHelpResources - */ - public func update_internal_help_resources( - /** - * @param {WriteInternalHelpResources} body - */ - _ body: WriteInternalHelpResources, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/internal_help_resources", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get all legacy features. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * GET /legacy_features -> [LegacyFeature] - */ - public func all_legacy_features( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/legacy_features", nil, nil, options) - return result - } - - /** - * ### Get information about the legacy feature with a specific id. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * GET /legacy_features/{legacy_feature_id} -> LegacyFeature - */ - public func legacy_feature( - /** - * @param {String} legacy_feature_id id of legacy feature - */ - _ legacy_feature_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_legacy_feature_id = encodeParam(legacy_feature_id) - let result: SDKResponse = self.get("/legacy_features/\(path_legacy_feature_id)", nil, nil, options) - return result - } - - /** - * ### Update information about the legacy feature with a specific id. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * PATCH /legacy_features/{legacy_feature_id} -> LegacyFeature - */ - public func update_legacy_feature( - /** - * @param {String} legacy_feature_id id of legacy feature - */ - _ legacy_feature_id: String, - /** - * @param {WriteLegacyFeature} body - */ - _ body: WriteLegacyFeature, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_legacy_feature_id = encodeParam(legacy_feature_id) - let result: SDKResponse = self.patch("/legacy_features/\(path_legacy_feature_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get a list of locales that Looker supports. - * - * GET /locales -> [LkLocale] - */ - public func all_locales( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/locales", nil, nil, options) - return result - } - - /** - * ### Get all mobile settings. - * - * GET /mobile/settings -> MobileSettings - */ - public func mobile_settings( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/mobile/settings", nil, nil, options) - return result - } - - /** - * ### Get Looker Settings - * - * Available settings are: - * - allow_user_timezones - * - custom_welcome_email - * - data_connector_default_enabled - * - extension_framework_enabled - * - extension_load_url_enabled - * - marketplace_auto_install_enabled - * - marketplace_terms_accepted - * - marketplace_enabled - * - onboarding_enabled - * - privatelabel_configuration - * - timezone - * - host_url - * - email_domain_allowlist - * - embed_cookieless_v2 - * - embed_enabled - * - * GET /setting -> Setting - */ - public func get_setting( - /** - * @param {String} fields Requested fields - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/setting", - ["fields": fields], nil, options) - return result - } - - /** - * ### Configure Looker Settings - * - * Available settings are: - * - allow_user_timezones - * - custom_welcome_email - * - data_connector_default_enabled - * - extension_framework_enabled - * - extension_load_url_enabled - * - marketplace_auto_install_enabled - * - marketplace_terms_accepted - * - marketplace_enabled - * - onboarding_enabled - * - privatelabel_configuration - * - timezone - * - host_url - * - email_domain_allowlist - * - embed_cookieless_v2 - * - embed_enabled - * - * See the `Setting` type for more information on the specific values that can be configured. - * - * If a setting update is rejected, the API error payload should provide information on the cause of the rejection. - * - * PATCH /setting -> Setting - */ - public func set_setting( - /** - * @param {WriteSetting} body - */ - _ body: WriteSetting, - /** - * @param {String} fields Requested fields - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/setting", - ["fields": fields], try! self.encode(body), options) - return result - } - - /** - * ### Configure SMTP Settings - * This API allows users to configure the SMTP settings on the Looker instance. - * Only admin users are authorised to call this API. - * - * POST /smtp_settings -> Voidable - */ - public func set_smtp_settings( - /** - * @param {SmtpSettings} body - */ - _ body: SmtpSettings, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/smtp_settings", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get current SMTP status. - * - * GET /smtp_status -> SmtpStatus - */ - public func smtp_status( - /** - * @param {String} fields Include only these fields in the response - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/smtp_status", - ["fields": fields], nil, options) - return result - } - - /** - * ### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks). - * - * GET /timezones -> [Timezone] - */ - public func all_timezones( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/timezones", nil, nil, options) - return result - } - - /** - * ### Get information about all API versions supported by this Looker instance. - * - * GET /versions -> ApiVersion - */ - public func versions( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/versions", - ["fields": fields], nil, options) - return result - } - - /** - * ### Get an API specification for this Looker instance. - * - * The specification is returned as a JSON document in Swagger 2.x format - * - * GET /api_spec/{api_version}/{specification} -> AnyCodable - */ - public func api_spec( - /** - * @param {String} api_version API version - */ - _ api_version: String, - /** - * @param {String} specification Specification name. Typically, this is "swagger.json" - */ - _ specification: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_api_version = encodeParam(api_version) - let path_specification = encodeParam(specification) - let result: SDKResponse = self.get("/api_spec/\(path_api_version)/\(path_specification)", nil, nil, options) - return result - } - - /** - * ### This feature is enabled only by special license. - * ### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc. - * - * GET /whitelabel_configuration -> WhitelabelConfiguration - */ - @available(*, deprecated) - public func whitelabel_configuration( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/whitelabel_configuration", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update the whitelabel configuration - * - * PUT /whitelabel_configuration -> WhitelabelConfiguration - */ - @available(*, deprecated) - public func update_whitelabel_configuration( - /** - * @param {WriteWhitelabelConfiguration} body - */ - _ body: WriteWhitelabelConfiguration, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/whitelabel_configuration", nil, try! self.encode(body), options) - return result - } - - - - // MARK Connection: Manage Database Connections - - /** - * ### Get information about all connections. - * - * GET /connections -> [DBConnection] - */ - public func all_connections( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/connections", - ["fields": fields], nil, options) - return result - } - - /** - * ### Create a connection using the specified configuration. - * - * POST /connections -> DBConnection - */ - public func create_connection( - /** - * @param {WriteDBConnection} body - */ - _ body: WriteDBConnection, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/connections", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get information about a connection. - * - * GET /connections/{connection_name} -> DBConnection - */ - public func connection( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.get("/connections/\(path_connection_name)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update a connection using the specified configuration. - * - * PATCH /connections/{connection_name} -> DBConnection - */ - public func update_connection( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {WriteDBConnection} body - */ - _ body: WriteDBConnection, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.patch("/connections/\(path_connection_name)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete a connection. - * - * DELETE /connections/{connection_name} -> String - */ - public func delete_connection( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.delete("/connections/\(path_connection_name)", nil, nil, options) - return result - } - - /** - * ### Delete a connection override. - * - * DELETE /connections/{connection_name}/connection_override/{override_context} -> String - */ - public func delete_connection_override( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {String} override_context Context of connection override - */ - _ override_context: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let path_override_context = encodeParam(override_context) - let result: SDKResponse = self.delete("/connections/\(path_connection_name)/connection_override/\(path_override_context)", nil, nil, options) - return result - } - - /** - * ### Test an existing connection. - * - * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the - * specific types of tests that the connection supports. - * - * This API is rate limited. - * - * Unsupported tests in the request will be ignored. - * - * PUT /connections/{connection_name}/test -> [DBConnectionTestResult] - */ - public func test_connection( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {DelimArray} tests Array of names of tests to run - */ - tests: DelimArray? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.put("/connections/\(path_connection_name)/test", - ["tests": tests as Any?], nil, options) - return result - } - - /** - * ### Test a connection configuration. - * - * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the - * specific types of tests that the connection supports. - * - * This API is rate limited. - * - * Unsupported tests in the request will be ignored. - * - * PUT /connections/test -> [DBConnectionTestResult] - */ - public func test_connection_config( - /** - * @param {WriteDBConnection} body - */ - _ body: WriteDBConnection, - /** - * @param {DelimArray} tests Array of names of tests to run - */ - tests: DelimArray? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/connections/test", - ["tests": tests as Any?], try! self.encode(body), options) - return result - } - - /** - * ### Get information about all dialects. - * - * GET /dialect_info -> [DialectInfo] - */ - public func all_dialect_infos( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/dialect_info", - ["fields": fields], nil, options) - return result - } - - /** - * ### Get all External OAuth Applications. - * - * This is an OAuth Application which Looker uses to access external systems. - * - * GET /external_oauth_applications -> [ExternalOauthApplication] - */ - public func all_external_oauth_applications( - /** - * @param {String} name Application name - */ - name: String? = nil, - /** - * @param {String} client_id Application Client ID - */ - client_id: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/external_oauth_applications", - ["name": name, "client_id": client_id], nil, options) - return result - } - - /** - * ### Create an OAuth Application using the specified configuration. - * - * This is an OAuth Application which Looker uses to access external systems. - * - * POST /external_oauth_applications -> ExternalOauthApplication - */ - public func create_external_oauth_application( - /** - * @param {WriteExternalOauthApplication} body - */ - _ body: WriteExternalOauthApplication, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/external_oauth_applications", nil, try! self.encode(body), options) - return result - } - - /** - * ### Create OAuth User state. - * - * POST /external_oauth_applications/user_state -> CreateOAuthApplicationUserStateResponse - */ - public func create_oauth_application_user_state( - /** - * @param {CreateOAuthApplicationUserStateRequest} body - */ - _ body: CreateOAuthApplicationUserStateRequest, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/external_oauth_applications/user_state", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get information about all SSH Servers. - * - * GET /ssh_servers -> [SshServer] - */ - public func all_ssh_servers( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/ssh_servers", - ["fields": fields], nil, options) - return result - } - - /** - * ### Create an SSH Server. - * - * POST /ssh_servers -> SshServer - */ - public func create_ssh_server( - /** - * @param {WriteSshServer} body - */ - _ body: WriteSshServer, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/ssh_servers", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get information about an SSH Server. - * - * GET /ssh_server/{ssh_server_id} -> SshServer - */ - public func ssh_server( - /** - * @param {String} ssh_server_id Id of SSH Server - */ - _ ssh_server_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_server_id = encodeParam(ssh_server_id) - let result: SDKResponse = self.get("/ssh_server/\(path_ssh_server_id)", nil, nil, options) - return result - } - - /** - * ### Update an SSH Server. - * - * PATCH /ssh_server/{ssh_server_id} -> SshServer - */ - public func update_ssh_server( - /** - * @param {String} ssh_server_id Id of SSH Server - */ - _ ssh_server_id: String, - /** - * @param {WriteSshServer} body - */ - _ body: WriteSshServer, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_server_id = encodeParam(ssh_server_id) - let result: SDKResponse = self.patch("/ssh_server/\(path_ssh_server_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete an SSH Server. - * - * DELETE /ssh_server/{ssh_server_id} -> String - */ - public func delete_ssh_server( - /** - * @param {String} ssh_server_id Id of SSH Server - */ - _ ssh_server_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_server_id = encodeParam(ssh_server_id) - let result: SDKResponse = self.delete("/ssh_server/\(path_ssh_server_id)", nil, nil, options) - return result - } - - /** - * ### Test the SSH Server - * - * GET /ssh_server/{ssh_server_id}/test -> SshServer - */ - public func test_ssh_server( - /** - * @param {String} ssh_server_id Id of SSH Server - */ - _ ssh_server_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_server_id = encodeParam(ssh_server_id) - let result: SDKResponse = self.get("/ssh_server/\(path_ssh_server_id)/test", nil, nil, options) - return result - } - - /** - * ### Get information about all SSH Tunnels. - * - * GET /ssh_tunnels -> [SshTunnel] - */ - public func all_ssh_tunnels( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/ssh_tunnels", - ["fields": fields], nil, options) - return result - } - - /** - * ### Create an SSH Tunnel - * - * POST /ssh_tunnels -> SshTunnel - */ - public func create_ssh_tunnel( - /** - * @param {WriteSshTunnel} body - */ - _ body: WriteSshTunnel, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/ssh_tunnels", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get information about an SSH Tunnel. - * - * GET /ssh_tunnel/{ssh_tunnel_id} -> SshTunnel - */ - public func ssh_tunnel( - /** - * @param {String} ssh_tunnel_id Id of SSH Tunnel - */ - _ ssh_tunnel_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) - let result: SDKResponse = self.get("/ssh_tunnel/\(path_ssh_tunnel_id)", nil, nil, options) - return result - } - - /** - * ### Update an SSH Tunnel - * - * PATCH /ssh_tunnel/{ssh_tunnel_id} -> SshTunnel - */ - public func update_ssh_tunnel( - /** - * @param {String} ssh_tunnel_id Id of SSH Tunnel - */ - _ ssh_tunnel_id: String, - /** - * @param {WriteSshTunnel} body - */ - _ body: WriteSshTunnel, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) - let result: SDKResponse = self.patch("/ssh_tunnel/\(path_ssh_tunnel_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete an SSH Tunnel - * - * DELETE /ssh_tunnel/{ssh_tunnel_id} -> String - */ - public func delete_ssh_tunnel( - /** - * @param {String} ssh_tunnel_id Id of SSH Tunnel - */ - _ ssh_tunnel_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) - let result: SDKResponse = self.delete("/ssh_tunnel/\(path_ssh_tunnel_id)", nil, nil, options) - return result - } - - /** - * ### Test the SSH Tunnel - * - * GET /ssh_tunnel/{ssh_tunnel_id}/test -> SshTunnel - */ - public func test_ssh_tunnel( - /** - * @param {String} ssh_tunnel_id Id of SSH Tunnel - */ - _ ssh_tunnel_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) - let result: SDKResponse = self.get("/ssh_tunnel/\(path_ssh_tunnel_id)/test", nil, nil, options) - return result - } - - /** - * ### Get the SSH public key - * - * Get the public key created for this instance to identify itself to a remote SSH server. - * - * GET /ssh_public_key -> SshPublicKey - */ - public func ssh_public_key( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/ssh_public_key", nil, nil, options) - return result - } - - - - // MARK Content: Manage Content - - /** - * ### Search Favorite Content - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. - * - * GET /content_favorite/search -> [ContentFavorite] - */ - public func search_content_favorites( - /** - * @param {String} id Match content favorite id(s) - */ - id: String? = nil, - /** - * @param {String} user_id Match user id(s).To create a list of multiple ids, use commas as separators - */ - user_id: String? = nil, - /** - * @param {String} content_metadata_id Match content metadata id(s).To create a list of multiple ids, use commas as separators - */ - content_metadata_id: String? = nil, - /** - * @param {String} dashboard_id Match dashboard id(s).To create a list of multiple ids, use commas as separators - */ - dashboard_id: String? = nil, - /** - * @param {String} look_id Match look id(s).To create a list of multiple ids, use commas as separators - */ - look_id: String? = nil, - /** - * @param {String} board_id Match board id(s).To create a list of multiple ids, use commas as separators - */ - board_id: String? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit) - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/content_favorite/search", - ["id": id, "user_id": user_id, "content_metadata_id": content_metadata_id, "dashboard_id": dashboard_id, "look_id": look_id, "board_id": board_id, "limit": limit, "offset": offset, "sorts": sorts, "fields": fields, "filter_or": filter_or as Any?], nil, options) - return result - } - - /** - * ### Get favorite content by its id - * - * GET /content_favorite/{content_favorite_id} -> ContentFavorite - */ - public func content_favorite( - /** - * @param {String} content_favorite_id Id of favorite content - */ - _ content_favorite_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_favorite_id = encodeParam(content_favorite_id) - let result: SDKResponse = self.get("/content_favorite/\(path_content_favorite_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Delete favorite content - * - * DELETE /content_favorite/{content_favorite_id} -> String - */ - public func delete_content_favorite( - /** - * @param {String} content_favorite_id Id of favorite content - */ - _ content_favorite_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_favorite_id = encodeParam(content_favorite_id) - let result: SDKResponse = self.delete("/content_favorite/\(path_content_favorite_id)", nil, nil, options) - return result - } - - /** - * ### Create favorite content - * - * POST /content_favorite -> ContentFavorite - */ - public func create_content_favorite( - /** - * @param {WriteContentFavorite} body - */ - _ body: WriteContentFavorite, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/content_favorite", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get information about all content metadata in a space. - * - * GET /content_metadata -> [ContentMeta] - */ - public func all_content_metadatas( - /** - * @param {String} parent_id Parent space of content. - */ - _ parent_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/content_metadata", - ["parent_id": parent_id, "fields": fields], nil, options) - return result - } - - /** - * ### Get information about an individual content metadata record. - * - * GET /content_metadata/{content_metadata_id} -> ContentMeta - */ - public func content_metadata( - /** - * @param {String} content_metadata_id Id of content metadata - */ - _ content_metadata_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_metadata_id = encodeParam(content_metadata_id) - let result: SDKResponse = self.get("/content_metadata/\(path_content_metadata_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Move a piece of content. - * - * PATCH /content_metadata/{content_metadata_id} -> ContentMeta - */ - public func update_content_metadata( - /** - * @param {String} content_metadata_id Id of content metadata - */ - _ content_metadata_id: String, - /** - * @param {WriteContentMeta} body - */ - _ body: WriteContentMeta, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_metadata_id = encodeParam(content_metadata_id) - let result: SDKResponse = self.patch("/content_metadata/\(path_content_metadata_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### All content metadata access records for a content metadata item. - * - * GET /content_metadata_access -> [ContentMetaGroupUser] - */ - public func all_content_metadata_accesses( - /** - * @param {String} content_metadata_id Id of content metadata - */ - _ content_metadata_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/content_metadata_access", - ["content_metadata_id": content_metadata_id, "fields": fields], nil, options) - return result - } - - /** - * ### Create content metadata access. - * - * POST /content_metadata_access -> ContentMetaGroupUser - */ - public func create_content_metadata_access( - /** - * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH - */ - _ body: ContentMetaGroupUser, - /** - * @param {Bool} send_boards_notification_email Optionally sends notification email when granting access to a board. - */ - send_boards_notification_email: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/content_metadata_access", - ["send_boards_notification_email": send_boards_notification_email as Any?], try! self.encode(body), options) - return result - } - - /** - * ### Update type of access for content metadata. - * - * PUT /content_metadata_access/{content_metadata_access_id} -> ContentMetaGroupUser - */ - public func update_content_metadata_access( - /** - * @param {String} content_metadata_access_id Id of content metadata access - */ - _ content_metadata_access_id: String, - /** - * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH - */ - _ body: ContentMetaGroupUser, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_metadata_access_id = encodeParam(content_metadata_access_id) - let result: SDKResponse = self.put("/content_metadata_access/\(path_content_metadata_access_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Remove content metadata access. - * - * DELETE /content_metadata_access/{content_metadata_access_id} -> String - */ - public func delete_content_metadata_access( - /** - * @param {String} content_metadata_access_id Id of content metadata access - */ - _ content_metadata_access_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_metadata_access_id = encodeParam(content_metadata_access_id) - let result: SDKResponse = self.delete("/content_metadata_access/\(path_content_metadata_access_id)", nil, nil, options) - return result - } - - /** - * ### Search across looks, dashboards, and lookml dashboards. The terms field will be matched against the - * title and description of the content and the closest results are returned. Content that has been frequently - * viewed and those pieces of content stored in public folders will be ranked more highly in the results. - * - * This endpoint does not return a full description of these content types. For more specific information - * about each type please refer to the individual content specific API endpoints. - * - * Get the **full details** of a specific dashboard (or lookml dashboard) by id with [dashboard()](#!/Dashboard/dashboard) - * Get the **full details** of a specific look by id with [look()](#!/Look/look) - * - * GET /content/{terms} -> [ContentSearch] - */ - public func search_content( - /** - * @param {String} terms Search terms - */ - _ terms: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {String} types Content types requested (dashboard, look, lookml_dashboard). - */ - types: String? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, - /** - * @param {Int64} page Requested page. - */ - page: Int64? = nil, - /** - * @param {Int64} per_page Results per page. - */ - per_page: Int64? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_terms = encodeParam(terms) - let result: SDKResponse = self.get("/content/\(path_terms)", - ["fields": fields, "types": types, "limit": limit, "offset": offset, "page": page, "per_page": per_page], nil, options) - return result - } - - /** - * ### Get an image representing the contents of a dashboard or look. - * - * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not - * reflect the actual data displayed in the respective visualizations. - * - * GET /content_thumbnail/{type}/{resource_id} -> String - * - * **Note**: Binary content may be returned by this method. - */ - public func content_thumbnail( - /** - * @param {String} type Either dashboard or look - */ - _ type: String, - /** - * @param {String} resource_id ID of the dashboard or look to render - */ - _ resource_id: String, - /** - * @param {String} reload Whether or not to refresh the rendered image with the latest content - */ - reload: String? = nil, - /** - * @param {String} theme Light or dark background. Default is "light" - */ - theme: String? = nil, - /** - * @param {String} format A value of png produces a thumbnail in PNG format instead of SVG (default) - */ - format: String? = nil, - /** - * @param {Int64} width The width of the image if format is supplied - */ - width: Int64? = nil, - /** - * @param {Int64} height The height of the image if format is supplied - */ - height: Int64? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_type = encodeParam(type) - let path_resource_id = encodeParam(resource_id) - let result: SDKResponse = self.get("/content_thumbnail/\(path_type)/\(path_resource_id)", - ["reload": reload, "theme": theme, "format": format, "width": width, "height": height], nil, options) - return result - } - - /** - * ### Validate All Content - * - * Performs validation of all looks and dashboards - * Returns a list of errors found as well as metadata about the content validation run. - * - * GET /content_validation -> ContentValidation - */ - public func content_validation( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/content_validation", - ["fields": fields], nil, options) - return result - } - - /** - * ### Search Content Views - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. - * - * GET /content_view/search -> [ContentView] - */ - public func search_content_views( - /** - * @param {String} view_count Match view count - */ - view_count: String? = nil, - /** - * @param {String} group_id Match Group Id - */ - group_id: String? = nil, - /** - * @param {String} look_id Match look_id - */ - look_id: String? = nil, - /** - * @param {String} dashboard_id Match dashboard_id - */ - dashboard_id: String? = nil, - /** - * @param {String} content_metadata_id Match content metadata id - */ - content_metadata_id: String? = nil, - /** - * @param {String} start_of_week_date Match start of week date (format is "YYYY-MM-DD") - */ - start_of_week_date: String? = nil, - /** - * @param {Bool} all_time True if only all time view records should be returned - */ - all_time: Bool? = nil, - /** - * @param {String} user_id Match user id - */ - user_id: String? = nil, - /** - * @param {String} fields Requested fields - */ - fields: String? = nil, - /** - * @param {Int64} limit Number of results to return. Use with `offset` to manage pagination of results - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning data - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by - */ - sorts: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/content_view/search", - ["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 as Any?, "user_id": user_id, "fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) - return result - } - - /** - * ### Get a vector image representing the contents of a dashboard or look. - * - * # DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail) - * - * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not - * reflect the actual data displayed in the respective visualizations. - * - * GET /vector_thumbnail/{type}/{resource_id} -> String - */ - @available(*, deprecated) - public func vector_thumbnail( - /** - * @param {String} type Either dashboard or look - */ - _ type: String, - /** - * @param {String} resource_id ID of the dashboard or look to render - */ - _ resource_id: String, - /** - * @param {String} reload Whether or not to refresh the rendered image with the latest content - */ - reload: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_type = encodeParam(type) - let path_resource_id = encodeParam(resource_id) - let result: SDKResponse = self.get("/vector_thumbnail/\(path_type)/\(path_resource_id)", - ["reload": reload], nil, options) - return result - } - - - - // MARK Dashboard: Manage Dashboards - - /** - * ### Get information about all active dashboards. - * - * Returns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list. - * - * Get the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard) - * - * Find **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards) - * - * GET /dashboards -> [DashboardBase] - */ - public func all_dashboards( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/dashboards", - ["fields": fields], nil, options) - return result - } - - /** - * ### Create a new dashboard + * ### Create a new dashboard * * Creates a new dashboard object and returns the details of the newly created dashboard. * @@ -4092,9 +2103,9 @@ open class LookerSDKStream: APIMethods { */ public func search_dashboards( /** - * @param {String} id Match dashboard id. + * @param {Int64} id Match dashboard id. */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} slug Match dashboard slug. */ @@ -4108,9 +2119,13 @@ open class LookerSDKStream: APIMethods { */ description: String? = nil, /** - * @param {String} content_favorite_id Filter on a content favorite id. + * @param {Int64} content_favorite_id Filter on a content favorite id. + */ + content_favorite_id: Int64? = nil, + /** + * @param {String} space_id Filter on a particular space. */ - content_favorite_id: String? = nil, + space_id: String? = nil, /** * @param {String} folder_id Filter on a particular space. */ @@ -4128,37 +2143,25 @@ open class LookerSDKStream: APIMethods { */ view_count: String? = nil, /** - * @param {String} content_metadata_id Filter on a content favorite id. + * @param {Int64} content_metadata_id Filter on a content favorite id. */ - content_metadata_id: String? = nil, + content_metadata_id: Int64? = nil, /** * @param {Bool} curate Exclude items that exist only in personal spaces other than the users */ curate: Bool? = nil, - /** - * @param {String} last_viewed_at Select dashboards based on when they were last viewed - */ - last_viewed_at: String? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + * @param {Int64} page Requested page. */ page: Int64? = nil, /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} per_page Results per page. */ per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, /** * @param {String} sorts One or more fields to sort by. Sortable fields: [:title, :user_id, :id, :created_at, :space_id, :folder_id, :description, :view_count, :favorite_count, :slug, :content_favorite_id, :content_metadata_id, :deleted, :deleted_at, :last_viewed_at, :last_accessed_at] */ @@ -4167,14 +2170,10 @@ open class LookerSDKStream: APIMethods { * @param {Bool} filter_or Combine given search criteria in a boolean OR expression */ filter_or: Bool? = nil, - /** - * @param {Bool} not_owned_by Filter out the dashboards owned by the user passed at the :user_id params - */ - not_owned_by: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let result: SDKResponse = self.get("/dashboards/search", - ["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 as Any?, "last_viewed_at": last_viewed_at, "fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "not_owned_by": not_owned_by as Any?], nil, options) + ["id": id, "slug": slug, "title": title, "description": description, "content_favorite_id": content_favorite_id, "space_id": space_id, "folder_id": folder_id, "deleted": deleted, "user_id": user_id, "view_count": view_count, "content_metadata_id": content_metadata_id, "curate": curate as Any?, "fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) return result } @@ -4354,125 +2353,22 @@ open class LookerSDKStream: APIMethods { return result } - /** - * ### Get lookml of a UDD - * - * Returns a JSON object that contains the dashboard id and the full lookml - * - * GET /dashboards/lookml/{dashboard_id} -> DashboardLookml - */ - public func dashboard_lookml( - /** - * @param {String} dashboard_id Id of dashboard - */ - _ dashboard_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.get("/dashboards/lookml/\(path_dashboard_id)", nil, nil, options) - return result - } - - /** - * ### Move an existing dashboard - * - * Moves a dashboard to a specified folder, and returns the moved dashboard. - * - * `dashboard_id` and `folder_id` are required. - * `dashboard_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard. - * - * PATCH /dashboards/{dashboard_id}/move -> Dashboard - */ - public func move_dashboard( - /** - * @param {String} dashboard_id Dashboard id to move. - */ - _ dashboard_id: String, - /** - * @param {String} folder_id Folder id to move to. - */ - _ folder_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.patch("/dashboards/\(path_dashboard_id)/move", - ["folder_id": folder_id], nil, options) - return result - } - - /** - * ### Creates a dashboard object based on LookML Dashboard YAML, and returns the details of the newly created dashboard. - * - * If a dashboard exists with the YAML-defined "preferred_slug", the new dashboard will overwrite it. Otherwise, a new - * dashboard will be created. Note that when a dashboard is overwritten, alerts will not be maintained. - * - * If a folder_id is specified: new dashboards will be placed in that folder, and overwritten dashboards will be moved to it - * If the folder_id isn't specified: new dashboards will be placed in the caller's personal folder, and overwritten dashboards - * will remain where they were - * - * LookML must contain valid LookML YAML code. It's recommended to use the LookML format returned - * from [dashboard_lookml()](#!/Dashboard/dashboard_lookml) as the input LookML (newlines replaced with - * ). - * - * Note that the created dashboard is not linked to any LookML Dashboard, - * i.e. [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard) will not update dashboards created by this method. - * - * POST /dashboards/lookml -> Dashboard - */ - public func import_dashboard_from_lookml( - /** - * @param {WriteDashboardLookml} body - */ - _ body: WriteDashboardLookml, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/dashboards/lookml", nil, try! self.encode(body), options) - return result - } - - /** - * # DEPRECATED: Use [import_dashboard_from_lookml()](#!/Dashboard/import_dashboard_from_lookml) - * - * POST /dashboards/from_lookml -> Dashboard - */ - public func create_dashboard_from_lookml( - /** - * @param {WriteDashboardLookml} body - */ - _ body: WriteDashboardLookml, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/dashboards/from_lookml", nil, try! self.encode(body), options) - return result - } - - /** - * ### Copy an existing dashboard - * - * Creates a copy of an existing dashboard, in a specified folder, and returns the copied dashboard. - * - * `dashboard_id` is required, `dashboard_id` and `folder_id` must already exist if specified. - * `folder_id` will default to the existing folder. + /** + * ### Get lookml of a UDD * - * If a dashboard with the same title already exists in the target folder, the copy will have '(copy)' - * or '(copy <# of copies>)' appended. + * Returns a JSON object that contains the dashboard id and the full lookml * - * POST /dashboards/{dashboard_id}/copy -> Dashboard + * GET /dashboards/lookml/{dashboard_id} -> DashboardLookml */ - public func copy_dashboard( + public func dashboard_lookml( /** - * @param {String} dashboard_id Dashboard id to copy. + * @param {String} dashboard_id Id of dashboard */ _ dashboard_id: String, - /** - * @param {String} folder_id Folder id to copy to. - */ - folder_id: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.post("/dashboards/\(path_dashboard_id)/copy", - ["folder_id": folder_id], nil, options) + let result: SDKResponse = self.get("/dashboards/lookml/\(path_dashboard_id)", nil, nil, options) return result } @@ -4506,13 +2402,13 @@ open class LookerSDKStream: APIMethods { */ public func search_dashboard_elements( /** - * @param {String} dashboard_id Select elements that refer to a given dashboard id + * @param {Int64} dashboard_id Select elements that refer to a given dashboard id */ - dashboard_id: String? = nil, + dashboard_id: Int64? = nil, /** - * @param {String} look_id Select elements that refer to a given look id + * @param {Int64} look_id Select elements that refer to a given look id */ - look_id: String? = nil, + look_id: Int64? = nil, /** * @param {String} title Match the title of element */ @@ -5177,11 +3073,11 @@ open class LookerSDKStream: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + * @param {Int64} page Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} per_page Return N rows of data per page */ per_page: Int64? = nil, /** @@ -5201,9 +3097,9 @@ open class LookerSDKStream: APIMethods { */ name: String? = nil, /** - * @param {String} id Match Space id + * @param {Int64} id Match Space id */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} parent_id Filter on a children of a particular folder. */ @@ -5348,21 +3244,13 @@ open class LookerSDKStream: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + * @param {Int64} page Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} per_page Return N rows of data per page */ per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ @@ -5371,7 +3259,7 @@ open class LookerSDKStream: APIMethods { ) -> SDKResponse { let path_folder_id = encodeParam(folder_id) let result: SDKResponse = self.get("/folders/\(path_folder_id)/children", - ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts], nil, options) + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts], nil, options) return result } @@ -5454,278 +3342,492 @@ open class LookerSDKStream: APIMethods { * In API 3.x, this will return all looks in a folder, including looks in the trash. * In API 4.0+, all looks in a folder will be returned, excluding looks in the trash. * - * GET /folders/{folder_id}/looks -> [LookWithQuery] + * GET /folders/{folder_id}/looks -> [LookWithQuery] + */ + public func folder_looks( + /** + * @param {String} folder_id Id of folder + */ + _ folder_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.get("/folders/\(path_folder_id)/looks", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get the dashboards in a folder + * + * GET /folders/{folder_id}/dashboards -> [Dashboard] + */ + public func folder_dashboards( + /** + * @param {String} folder_id Id of folder + */ + _ folder_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.get("/folders/\(path_folder_id)/dashboards", + ["fields": fields], nil, options) + return result + } + + + + // MARK Group: Manage Groups + + /** + * ### Get information about all groups. + * + * GET /groups -> [LkGroup] + */ + public func all_groups( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Int64} page Return only page N of paginated results + */ + page: Int64? = nil, + /** + * @param {Int64} per_page Return N rows of data per page + */ + per_page: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {DelimArray} ids Optional of ids to get specific groups. + */ + ids: DelimArray? = nil, + /** + * @param {Int64} content_metadata_id Id of content metadata to which groups must have access. + */ + content_metadata_id: Int64? = nil, + /** + * @param {Bool} can_add_to_content_metadata Select only groups that either can/cannot be given access to content. + */ + can_add_to_content_metadata: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/groups", + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "ids": ids as Any?, "content_metadata_id": content_metadata_id, "can_add_to_content_metadata": can_add_to_content_metadata as Any?], nil, options) + return result + } + + /** + * ### Creates a new group (admin only). + * + * POST /groups -> LkGroup + */ + public func create_group( + /** + * @param {WriteGroup} body + */ + _ body: WriteGroup, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/groups", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Search groups + * + * Returns all group records that match the given search criteria. + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /groups/search -> [LkGroup] + */ + public func search_groups( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Int64} limit Number of results to return (used with `offset`). + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any (used with `limit`). + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + /** + * @param {Int64} id Match group id. + */ + id: Int64? = nil, + /** + * @param {String} name Match group name. + */ + name: String? = nil, + /** + * @param {String} external_group_id Match group external_group_id. + */ + external_group_id: String? = nil, + /** + * @param {Bool} externally_managed Match group externally_managed. + */ + externally_managed: Bool? = nil, + /** + * @param {Bool} externally_orphaned Match group externally_orphaned. + */ + externally_orphaned: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/groups/search", + ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) + return result + } + + /** + * ### Get information about a group. + * + * GET /groups/{group_id} -> LkGroup + */ + public func group( + /** + * @param {Int64} group_id Id of group + */ + _ group_id: Int64, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.get("/groups/\(path_group_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Updates the a group (admin only). + * + * PATCH /groups/{group_id} -> LkGroup + */ + public func update_group( + /** + * @param {Int64} group_id Id of group + */ + _ group_id: Int64, + /** + * @param {WriteGroup} body + */ + _ body: WriteGroup, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.patch("/groups/\(path_group_id)", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Deletes a group (admin only). + * + * DELETE /groups/{group_id} -> String + */ + public func delete_group( + /** + * @param {Int64} group_id Id of group + */ + _ group_id: Int64, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)", nil, nil, options) + return result + } + + /** + * ### Get information about all the groups in a group + * + * GET /groups/{group_id}/groups -> [LkGroup] */ - public func folder_looks( + public func all_group_groups( /** - * @param {String} folder_id Id of folder + * @param {Int64} group_id Id of group */ - _ folder_id: String, + _ group_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.get("/folders/\(path_folder_id)/looks", + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.get("/groups/\(path_group_id)/groups", ["fields": fields], nil, options) return result } /** - * ### Get the dashboards in a folder + * ### Adds a new group to a group. * - * GET /folders/{folder_id}/dashboards -> [Dashboard] + * POST /groups/{group_id}/groups -> LkGroup */ - public func folder_dashboards( + public func add_group_group( /** - * @param {String} folder_id Id of folder + * @param {Int64} group_id Id of group */ - _ folder_id: String, + _ group_id: Int64, /** - * @param {String} fields Requested fields. + * @param {GroupIdForGroupInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH */ - fields: String? = nil, + _ body: GroupIdForGroupInclusion, options: ITransportSettings? = nil ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.get("/folders/\(path_folder_id)/dashboards", - ["fields": fields], nil, options) + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.post("/groups/\(path_group_id)/groups", nil, try! self.encode(body), options) return result } - - - // MARK Group: Manage Groups - /** - * ### Get information about all groups. + * ### Get information about all the users directly included in a group. * - * GET /groups -> [LkGroup] + * GET /groups/{group_id}/users -> [User] */ - public func all_groups( + public func all_group_users( + /** + * @param {Int64} group_id Id of group + */ + _ group_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + * @param {Int64} page Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} per_page Return N rows of data per page */ per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ sorts: String? = nil, - /** - * @param {DelimArray} ids Optional of ids to get specific groups. - */ - ids: DelimArray? = nil, - /** - * @param {String} content_metadata_id Id of content metadata to which groups must have access. - */ - content_metadata_id: String? = nil, - /** - * @param {Bool} can_add_to_content_metadata Select only groups that either can/cannot be given access to content. - */ - can_add_to_content_metadata: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/groups", - ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "ids": ids as Any?, "content_metadata_id": content_metadata_id, "can_add_to_content_metadata": can_add_to_content_metadata as Any?], nil, options) + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.get("/groups/\(path_group_id)/users", + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts], nil, options) return result } /** - * ### Creates a new group (admin only). + * ### Adds a new user to a group. * - * POST /groups -> LkGroup + * POST /groups/{group_id}/users -> User */ - public func create_group( + public func add_group_user( /** - * @param {WriteGroup} body + * @param {Int64} group_id Id of group */ - _ body: WriteGroup, + _ group_id: Int64, /** - * @param {String} fields Requested fields. + * @param {GroupIdForGroupUserInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH */ - fields: String? = nil, + _ body: GroupIdForGroupUserInclusion, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/groups", - ["fields": fields], try! self.encode(body), options) + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.post("/groups/\(path_group_id)/users", nil, try! self.encode(body), options) return result } /** - * ### Search groups - * - * Returns all group records that match the given search criteria. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. + * ### Removes a user from a group. * - * GET /groups/search -> [LkGroup] + * DELETE /groups/{group_id}/users/{user_id} -> Voidable */ - public func search_groups( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func delete_group_user( /** - * @param {Int64} limit Number of results to return (used with `offset`). + * @param {Int64} group_id Id of group */ - limit: Int64? = nil, + _ group_id: Int64, /** - * @param {Int64} offset Number of results to skip before returning any (used with `limit`). + * @param {Int64} user_id Id of user to remove from group */ - offset: Int64? = nil, + _ user_id: Int64, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let path_user_id = encodeParam(user_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)/users/\(path_user_id)", nil, nil, options) + return result + } + + /** + * ### Removes a group from a group. + * + * DELETE /groups/{group_id}/groups/{deleting_group_id} -> Voidable + */ + public func delete_group_from_group( /** - * @param {String} sorts Fields to sort by. + * @param {Int64} group_id Id of group */ - sorts: String? = nil, + _ group_id: Int64, /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {Int64} deleting_group_id Id of group to delete */ - filter_or: Bool? = nil, + _ deleting_group_id: Int64, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let path_deleting_group_id = encodeParam(deleting_group_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)/groups/\(path_deleting_group_id)", nil, nil, options) + return result + } + + /** + * ### Set the value of a user attribute for a group. + * + * For information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values). + * + * PATCH /groups/{group_id}/attribute_values/{user_attribute_id} -> UserAttributeGroupValue + */ + public func update_user_attribute_group_value( /** - * @param {String} id Match group id. + * @param {Int64} group_id Id of group */ - id: String? = nil, + _ group_id: Int64, /** - * @param {String} name Match group name. + * @param {Int64} user_attribute_id Id of user attribute */ - name: String? = nil, + _ user_attribute_id: Int64, /** - * @param {String} external_group_id Match group external_group_id. + * @param {UserAttributeGroupValue} body WARNING: no writeable properties found for POST, PUT, or PATCH */ - external_group_id: String? = nil, + _ body: UserAttributeGroupValue, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let path_user_attribute_id = encodeParam(user_attribute_id) + let result: SDKResponse = self.patch("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Remove a user attribute value from a group. + * + * DELETE /groups/{group_id}/attribute_values/{user_attribute_id} -> Voidable + */ + public func delete_user_attribute_group_value( /** - * @param {Bool} externally_managed Match group externally_managed. + * @param {Int64} group_id Id of group */ - externally_managed: Bool? = nil, + _ group_id: Int64, /** - * @param {Bool} externally_orphaned Match group externally_orphaned. + * @param {Int64} user_attribute_id Id of user attribute */ - externally_orphaned: Bool? = nil, + _ user_attribute_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/groups/search", - ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) + let path_group_id = encodeParam(group_id) + let path_user_attribute_id = encodeParam(user_attribute_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, nil, options) return result } + + + // MARK Homepage: Manage Homepage + /** - * ### Search groups include roles - * - * Returns all group records that match the given search criteria, and attaches any associated roles. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. + * ### Get information about all homepages. * - * Boolean search params accept only "true" and "false" as values. - * - * GET /groups/search/with_roles -> [GroupSearch] + * GET /homepages -> [Homepage] */ - public func search_groups_with_roles( + @available(*, deprecated) + public func all_homepages( /** * @param {String} fields Requested fields. */ fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/homepages", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create a new homepage. + * + * POST /homepages -> Homepage + */ + @available(*, deprecated) + public func create_homepage( /** - * @param {Int64} limit Number of results to return (used with `offset`). - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any (used with `limit`). - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, - /** - * @param {String} id Match group id. - */ - id: String? = nil, - /** - * @param {String} name Match group name. - */ - name: String? = nil, - /** - * @param {String} external_group_id Match group external_group_id. - */ - external_group_id: String? = nil, - /** - * @param {Bool} externally_managed Match group externally_managed. + * @param {WriteHomepage} body */ - externally_managed: Bool? = nil, + _ body: WriteHomepage, /** - * @param {Bool} externally_orphaned Match group externally_orphaned. + * @param {String} fields Requested fields. */ - externally_orphaned: Bool? = nil, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/groups/search/with_roles", - ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) + let result: SDKResponse = self.post("/homepages", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Search groups include hierarchy - * - * Returns all group records that match the given search criteria, and attaches - * associated role_ids and parent group_ids. + * ### Search Homepages * * If multiple search params are given and `filter_or` is FALSE or not specified, * search params are combined in a logical AND operation. @@ -5748,325 +3850,365 @@ open class LookerSDKStream: APIMethods { * * Boolean search params accept only "true" and "false" as values. * - * GET /groups/search/with_hierarchy -> [GroupHierarchy] + * GET /homepages/search -> [Homepage] */ - public func search_groups_with_hierarchy( + @available(*, deprecated) + public func search_homepages( + /** + * @param {String} title Matches homepage title. + */ + title: String? = nil, + /** + * @param {String} created_at Matches the timestamp for when the homepage was created. + */ + created_at: String? = nil, /** - * @param {String} fields Requested fields. + * @param {String} first_name The first name of the user who created this homepage. */ - fields: String? = nil, + first_name: String? = nil, /** - * @param {Int64} limit Number of results to return (used with `offset`). + * @param {String} last_name The last name of the user who created this homepage. */ - limit: Int64? = nil, + last_name: String? = nil, /** - * @param {Int64} offset Number of results to skip before returning any (used with `limit`). + * @param {String} fields Requested fields. */ - offset: Int64? = nil, + fields: String? = nil, /** - * @param {String} sorts Fields to sort by. + * @param {Bool} favorited Return favorited homepages when true. */ - sorts: String? = nil, + favorited: Bool? = nil, /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {String} creator_id Filter on homepages created by a particular user. */ - filter_or: Bool? = nil, + creator_id: String? = nil, /** - * @param {String} id Match group id. + * @param {Int64} page The page to return. */ - id: String? = nil, + page: Int64? = nil, /** - * @param {String} name Match group name. + * @param {Int64} per_page The number of items in the returned page. */ - name: String? = nil, + per_page: Int64? = nil, /** - * @param {String} external_group_id Match group external_group_id. + * @param {Int64} offset The number of items to skip before returning any. (used with limit and takes priority over page and per_page) */ - external_group_id: String? = nil, + offset: Int64? = nil, /** - * @param {Bool} externally_managed Match group externally_managed. + * @param {Int64} limit The maximum number of items to return. (used with offset and takes priority over page and per_page) */ - externally_managed: Bool? = nil, + limit: Int64? = nil, /** - * @param {Bool} externally_orphaned Match group externally_orphaned. + * @param {String} sorts The fields to sort the results by. */ - externally_orphaned: Bool? = nil, + sorts: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/groups/search/with_hierarchy", - ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) + let result: SDKResponse = self.get("/homepages/search", + ["title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited as Any?, "creator_id": creator_id, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) return result } /** - * ### Get information about a group. + * ### Get information about a homepage. * - * GET /groups/{group_id} -> LkGroup + * GET /homepages/{homepage_id} -> Homepage */ - public func group( + @available(*, deprecated) + public func homepage( /** - * @param {String} group_id Id of group + * @param {Int64} homepage_id Id of homepage */ - _ group_id: String, + _ homepage_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.get("/groups/\(path_group_id)", + let path_homepage_id = encodeParam(homepage_id) + let result: SDKResponse = self.get("/homepages/\(path_homepage_id)", ["fields": fields], nil, options) return result } /** - * ### Updates the a group (admin only). + * ### Update a homepage definition. * - * PATCH /groups/{group_id} -> LkGroup + * PATCH /homepages/{homepage_id} -> Homepage */ - public func update_group( + @available(*, deprecated) + public func update_homepage( /** - * @param {String} group_id Id of group + * @param {Int64} homepage_id Id of homepage */ - _ group_id: String, + _ homepage_id: Int64, /** - * @param {WriteGroup} body + * @param {WriteHomepage} body */ - _ body: WriteGroup, + _ body: WriteHomepage, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.patch("/groups/\(path_group_id)", + let path_homepage_id = encodeParam(homepage_id) + let result: SDKResponse = self.patch("/homepages/\(path_homepage_id)", ["fields": fields], try! self.encode(body), options) return result } /** - * ### Deletes a group (admin only). + * ### Delete a homepage. * - * DELETE /groups/{group_id} -> String + * DELETE /homepages/{homepage_id} -> String */ - public func delete_group( + @available(*, deprecated) + public func delete_homepage( /** - * @param {String} group_id Id of group + * @param {Int64} homepage_id Id of homepage */ - _ group_id: String, + _ homepage_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)", nil, nil, options) + let path_homepage_id = encodeParam(homepage_id) + let result: SDKResponse = self.delete("/homepages/\(path_homepage_id)", nil, nil, options) return result } /** - * ### Get information about all the groups in a group + * ### Get information about all homepage items. * - * GET /groups/{group_id}/groups -> [LkGroup] + * GET /homepage_items -> [HomepageItem] */ - public func all_group_groups( - /** - * @param {String} group_id Id of group - */ - _ group_id: String, + @available(*, deprecated) + public func all_homepage_items( /** * @param {String} fields Requested fields. */ fields: String? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {String} homepage_section_id Filter to a specific homepage section + */ + homepage_section_id: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.get("/groups/\(path_group_id)/groups", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/homepage_items", + ["fields": fields, "sorts": sorts, "homepage_section_id": homepage_section_id], nil, options) return result } /** - * ### Adds a new group to a group. + * ### Create a new homepage item. * - * POST /groups/{group_id}/groups -> LkGroup + * POST /homepage_items -> HomepageItem */ - public func add_group_group( + @available(*, deprecated) + public func create_homepage_item( /** - * @param {String} group_id Id of group + * @param {WriteHomepageItem} body */ - _ group_id: String, + _ body: WriteHomepageItem, /** - * @param {GroupIdForGroupInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH + * @param {String} fields Requested fields. */ - _ body: GroupIdForGroupInclusion, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.post("/groups/\(path_group_id)/groups", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/homepage_items", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Get information about all the users directly included in a group. + * ### Get information about a homepage item. * - * GET /groups/{group_id}/users -> [User] + * GET /homepage_items/{homepage_item_id} -> HomepageItem */ - public func all_group_users( + @available(*, deprecated) + public func homepage_item( /** - * @param {String} group_id Id of group + * @param {Int64} homepage_item_id Id of homepage item */ - _ group_id: String, + _ homepage_item_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_homepage_item_id = encodeParam(homepage_item_id) + let result: SDKResponse = self.get("/homepage_items/\(path_homepage_item_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update a homepage item definition. + * + * PATCH /homepage_items/{homepage_item_id} -> HomepageItem + */ + @available(*, deprecated) + public func update_homepage_item( /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results - */ - page: Int64? = nil, - /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} homepage_item_id Id of homepage item */ - per_page: Int64? = nil, + _ homepage_item_id: Int64, /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + * @param {WriteHomepageItem} body */ - limit: Int64? = nil, + _ body: WriteHomepageItem, /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + * @param {String} fields Requested fields. */ - offset: Int64? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_homepage_item_id = encodeParam(homepage_item_id) + let result: SDKResponse = self.patch("/homepage_items/\(path_homepage_item_id)", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Delete a homepage item. + * + * DELETE /homepage_items/{homepage_item_id} -> String + */ + @available(*, deprecated) + public func delete_homepage_item( /** - * @param {String} sorts Fields to sort by. + * @param {Int64} homepage_item_id Id of homepage item */ - sorts: String? = nil, + _ homepage_item_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.get("/groups/\(path_group_id)/users", - ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts], nil, options) + let path_homepage_item_id = encodeParam(homepage_item_id) + let result: SDKResponse = self.delete("/homepage_items/\(path_homepage_item_id)", nil, nil, options) return result } /** - * ### Adds a new user to a group. + * ### Get information about all homepage sections. * - * POST /groups/{group_id}/users -> User + * GET /homepage_sections -> [HomepageSection] */ - public func add_group_user( + @available(*, deprecated) + public func all_homepage_sections( /** - * @param {String} group_id Id of group + * @param {String} fields Requested fields. */ - _ group_id: String, + fields: String? = nil, /** - * @param {GroupIdForGroupUserInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH + * @param {String} sorts Fields to sort by. */ - _ body: GroupIdForGroupUserInclusion, + sorts: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.post("/groups/\(path_group_id)/users", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/homepage_sections", + ["fields": fields, "sorts": sorts], nil, options) return result } /** - * ### Removes a user from a group. + * ### Create a new homepage section. * - * DELETE /groups/{group_id}/users/{user_id} -> Voidable + * POST /homepage_sections -> HomepageSection */ - public func delete_group_user( + @available(*, deprecated) + public func create_homepage_section( /** - * @param {String} group_id Id of group + * @param {WriteHomepageSection} body */ - _ group_id: String, + _ body: WriteHomepageSection, /** - * @param {String} user_id Id of user to remove from group + * @param {String} fields Requested fields. */ - _ user_id: String, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)/users/\(path_user_id)", nil, nil, options) + let result: SDKResponse = self.post("/homepage_sections", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Removes a group from a group. + * ### Get information about a homepage section. * - * DELETE /groups/{group_id}/groups/{deleting_group_id} -> Voidable + * GET /homepage_sections/{homepage_section_id} -> HomepageSection */ - public func delete_group_from_group( + @available(*, deprecated) + public func homepage_section( /** - * @param {String} group_id Id of group + * @param {Int64} homepage_section_id Id of homepage section */ - _ group_id: String, + _ homepage_section_id: Int64, /** - * @param {String} deleting_group_id Id of group to delete + * @param {String} fields Requested fields. */ - _ deleting_group_id: String, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_deleting_group_id = encodeParam(deleting_group_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)/groups/\(path_deleting_group_id)", nil, nil, options) + let path_homepage_section_id = encodeParam(homepage_section_id) + let result: SDKResponse = self.get("/homepage_sections/\(path_homepage_section_id)", + ["fields": fields], nil, options) return result } /** - * ### Set the value of a user attribute for a group. - * - * For information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values). + * ### Update a homepage section definition. * - * PATCH /groups/{group_id}/attribute_values/{user_attribute_id} -> UserAttributeGroupValue + * PATCH /homepage_sections/{homepage_section_id} -> HomepageSection */ - public func update_user_attribute_group_value( + @available(*, deprecated) + public func update_homepage_section( /** - * @param {String} group_id Id of group + * @param {Int64} homepage_section_id Id of homepage section */ - _ group_id: String, + _ homepage_section_id: Int64, /** - * @param {String} user_attribute_id Id of user attribute + * @param {WriteHomepageSection} body */ - _ user_attribute_id: String, + _ body: WriteHomepageSection, /** - * @param {UserAttributeGroupValue} body WARNING: no writeable properties found for POST, PUT, or PATCH + * @param {String} fields Requested fields. */ - _ body: UserAttributeGroupValue, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_user_attribute_id = encodeParam(user_attribute_id) - let result: SDKResponse = self.patch("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, try! self.encode(body), options) + let path_homepage_section_id = encodeParam(homepage_section_id) + let result: SDKResponse = self.patch("/homepage_sections/\(path_homepage_section_id)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Remove a user attribute value from a group. + * ### Delete a homepage section. * - * DELETE /groups/{group_id}/attribute_values/{user_attribute_id} -> Voidable + * DELETE /homepage_sections/{homepage_section_id} -> String */ - public func delete_user_attribute_group_value( - /** - * @param {String} group_id Id of group - */ - _ group_id: String, + @available(*, deprecated) + public func delete_homepage_section( /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} homepage_section_id Id of homepage section */ - _ user_attribute_id: String, + _ homepage_section_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_user_attribute_id = encodeParam(user_attribute_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, nil, options) + let path_homepage_section_id = encodeParam(homepage_section_id) + let result: SDKResponse = self.delete("/homepage_sections/\(path_homepage_section_id)", nil, nil, options) return result } - - - // MARK Homepage: Manage Homepage - /** * ### Get information about the primary homepage's sections. * @@ -6135,9 +4277,9 @@ open class LookerSDKStream: APIMethods { */ public func integration_hub( /** - * @param {String} integration_hub_id Id of integration_hub + * @param {Int64} integration_hub_id Id of integration_hub */ - _ integration_hub_id: String, + _ integration_hub_id: Int64, /** * @param {String} fields Requested fields. */ @@ -6159,9 +4301,9 @@ open class LookerSDKStream: APIMethods { */ public func update_integration_hub( /** - * @param {String} integration_hub_id Id of integration_hub + * @param {Int64} integration_hub_id Id of integration_hub */ - _ integration_hub_id: String, + _ integration_hub_id: Int64, /** * @param {WriteIntegrationHub} body */ @@ -6185,9 +4327,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_integration_hub( /** - * @param {String} integration_hub_id Id of integration_hub + * @param {Int64} integration_hub_id Id of integration_hub */ - _ integration_hub_id: String, + _ integration_hub_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_integration_hub_id = encodeParam(integration_hub_id) @@ -6202,9 +4344,9 @@ open class LookerSDKStream: APIMethods { */ public func accept_integration_hub_legal_agreement( /** - * @param {String} integration_hub_id Id of integration_hub + * @param {Int64} integration_hub_id Id of integration_hub */ - _ integration_hub_id: String, + _ integration_hub_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_integration_hub_id = encodeParam(integration_hub_id) @@ -6321,27 +4463,6 @@ open class LookerSDKStream: APIMethods { - // MARK JdbcInterface: LookML Model metadata for JDBC Clients - - /** - * ### Handle Avatica RPC Requests - * - * GET /__jdbc_interface__ -> JdbcInterface - */ - public func jdbc_interface( - /** - * @param {String} avatica_request Avatica RPC request - */ - avatica_request: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/__jdbc_interface__", - ["avatica_request": avatica_request], nil, options) - return result - } - - - // MARK Look: Run and Manage Looks /** @@ -6439,13 +4560,13 @@ open class LookerSDKStream: APIMethods { */ description: String? = nil, /** - * @param {String} content_favorite_id Select looks with a particular content favorite id + * @param {Int64} content_favorite_id Select looks with a particular content favorite id */ - content_favorite_id: String? = nil, + content_favorite_id: Int64? = nil, /** - * @param {String} folder_id Select looks in a particular folder. + * @param {String} space_id Select looks in a particular space. */ - folder_id: String? = nil, + space_id: String? = nil, /** * @param {String} user_id Select looks created by a particular user. */ @@ -6459,37 +4580,25 @@ open class LookerSDKStream: APIMethods { */ deleted: Bool? = nil, /** - * @param {String} query_id Select looks that reference a particular query by query_id + * @param {Int64} query_id Select looks that reference a particular query by query_id */ - query_id: String? = nil, + query_id: Int64? = nil, /** * @param {Bool} curate Exclude items that exist only in personal spaces other than the users */ curate: Bool? = nil, - /** - * @param {String} last_viewed_at Select looks based on when they were last viewed - */ - last_viewed_at: String? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + * @param {Int64} page Requested page. */ page: Int64? = nil, /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} per_page Results per page. */ per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, /** * @param {String} sorts One or more fields to sort results by. Sortable fields: [:title, :user_id, :id, :created_at, :space_id, :folder_id, :description, :updated_at, :last_updater_id, :view_count, :favorite_count, :content_favorite_id, :deleted, :deleted_at, :last_viewed_at, :last_accessed_at, :query_id] */ @@ -6501,7 +4610,7 @@ open class LookerSDKStream: APIMethods { options: ITransportSettings? = nil ) -> SDKResponse { let result: SDKResponse = self.get("/looks/search", - ["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 as Any?, "query_id": query_id, "curate": curate as Any?, "last_viewed_at": last_viewed_at, "fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) + ["id": id, "title": title, "description": description, "content_favorite_id": content_favorite_id, "space_id": space_id, "user_id": user_id, "view_count": view_count, "deleted": deleted as Any?, "query_id": query_id, "curate": curate as Any?, "fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) return result } @@ -6514,9 +4623,9 @@ open class LookerSDKStream: APIMethods { */ public func look( /** - * @param {String} look_id Id of look + * @param {Int64} look_id Id of look */ - _ look_id: String, + _ look_id: Int64, /** * @param {String} fields Requested fields. */ @@ -6555,9 +4664,9 @@ open class LookerSDKStream: APIMethods { */ public func update_look( /** - * @param {String} look_id Id of look + * @param {Int64} look_id Id of look */ - _ look_id: String, + _ look_id: Int64, /** * @param {WriteLookWithQuery} body */ @@ -6587,9 +4696,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_look( /** - * @param {String} look_id Id of look + * @param {Int64} look_id Id of look */ - _ look_id: String, + _ look_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_look_id = encodeParam(look_id) @@ -6623,9 +4732,9 @@ open class LookerSDKStream: APIMethods { */ public func run_look( /** - * @param {String} look_id Id of look + * @param {Int64} look_id Id of look */ - _ look_id: String, + _ look_id: Int64, /** * @param {String} result_format Format of result */ @@ -6660,85 +4769,30 @@ open class LookerSDKStream: APIMethods { generate_drill_links: Bool? = nil, /** * @param {Bool} force_production Force use of production models even if the user is in development mode. Note that this flag being false does not guarantee development models will be used. - */ - force_production: Bool? = nil, - /** - * @param {Bool} cache_only Retrieve any results from cache even if the results have expired. - */ - cache_only: Bool? = nil, - /** - * @param {String} path_prefix Prefix to use for drill links (url encoded). - */ - path_prefix: String? = nil, - /** - * @param {Bool} rebuild_pdts Rebuild PDTS used in query. - */ - rebuild_pdts: Bool? = nil, - /** - * @param {Bool} server_table_calcs Perform table calculations on query results - */ - server_table_calcs: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let path_result_format = encodeParam(result_format) - let result: SDKResponse = self.get("/looks/\(path_look_id)/run/\(path_result_format)", - ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?], nil, options) - return result - } - - /** - * ### Copy an existing look - * - * Creates a copy of an existing look, in a specified folder, and returns the copied look. - * - * `look_id` and `folder_id` are required. - * - * `look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard. - * - * POST /looks/{look_id}/copy -> LookWithQuery - */ - public func copy_look( - /** - * @param {String} look_id Look id to copy. - */ - _ look_id: String, - /** - * @param {String} folder_id Folder id to copy to. - */ - folder_id: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let result: SDKResponse = self.post("/looks/\(path_look_id)/copy", - ["folder_id": folder_id], nil, options) - return result - } - - /** - * ### Move an existing look - * - * Moves a look to a specified folder, and returns the moved look. - * - * `look_id` and `folder_id` are required. - * `look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard. - * - * PATCH /looks/{look_id}/move -> LookWithQuery - */ - public func move_look( + */ + force_production: Bool? = nil, /** - * @param {String} look_id Look id to move. + * @param {Bool} cache_only Retrieve any results from cache even if the results have expired. */ - _ look_id: String, + cache_only: Bool? = nil, /** - * @param {String} folder_id Folder id to move to. + * @param {String} path_prefix Prefix to use for drill links (url encoded). */ - _ folder_id: String, + path_prefix: String? = nil, + /** + * @param {Bool} rebuild_pdts Rebuild PDTS used in query. + */ + rebuild_pdts: Bool? = nil, + /** + * @param {Bool} server_table_calcs Perform table calculations on query results + */ + server_table_calcs: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let path_look_id = encodeParam(look_id) - let result: SDKResponse = self.patch("/looks/\(path_look_id)/move", - ["folder_id": folder_id], nil, options) + let path_result_format = encodeParam(result_format) + let result: SDKResponse = self.get("/looks/\(path_look_id)/run/\(path_result_format)", + ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?], nil, options) return result } @@ -6756,18 +4810,10 @@ open class LookerSDKStream: APIMethods { * @param {String} fields Requested fields. */ fields: String? = nil, - /** - * @param {Int64} limit Number of results to return. (can be used with offset) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (Defaults to 0 if not set when limit is used) - */ - offset: Int64? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let result: SDKResponse = self.get("/lookml_models", - ["fields": fields, "limit": limit, "offset": offset], nil, options) + ["fields": fields], nil, options) return result } @@ -6876,337 +4922,8 @@ open class LookerSDKStream: APIMethods { - // MARK Metadata: Connection Metadata Features - - /** - * ### Field name suggestions for a model and view - * - * `filters` is a string hash of values, with the key as the field name and the string value as the filter expression: - * - * ```ruby - * {'users.age': '>=60'} - * ``` - * - * or - * - * ```ruby - * {'users.age': '<30'} - * ``` - * - * or - * - * ```ruby - * {'users.age': '=50'} - * ``` - * - * GET /models/{model_name}/views/{view_name}/fields/{field_name}/suggestions -> ModelFieldSuggestions - */ - public func model_fieldname_suggestions( - /** - * @param {String} model_name Name of model - */ - _ model_name: String, - /** - * @param {String} view_name Name of view - */ - _ view_name: String, - /** - * @param {String} field_name Name of field to use for suggestions - */ - _ field_name: String, - /** - * @param {String} term Search term pattern (evaluated as as `%term%`) - */ - term: String? = nil, - /** - * @param {Any} filters Suggestion filters with field name keys and comparison expressions - */ - filters: Any? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_model_name = encodeParam(model_name) - let path_view_name = encodeParam(view_name) - let path_field_name = encodeParam(field_name) - let result: SDKResponse = self.get("/models/\(path_model_name)/views/\(path_view_name)/fields/\(path_field_name)/suggestions", - ["term": term, "filters": filters], nil, options) - return result - } - - /** - * ### Get a single model - * - * GET /models/{model_name} -> Model - */ - public func get_model( - /** - * @param {String} model_name Name of model - */ - _ model_name: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_model_name = encodeParam(model_name) - let result: SDKResponse = self.get("/models/\(path_model_name)", nil, nil, options) - return result - } - - /** - * ### List databases available to this connection - * - * Certain dialects can support multiple databases per single connection. - * If this connection supports multiple databases, the database names will be returned in an array. - * - * Connections using dialects that do not support multiple databases will return an empty array. - * - * **Note**: [Connection Features](#!/Metadata/connection_features) can be used to determine if a connection supports - * multiple databases. - * - * GET /connections/{connection_name}/databases -> [String] - */ - public func connection_databases( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.get("/connections/\(path_connection_name)/databases", nil, nil, options) - return result - } - - /** - * ### Retrieve metadata features for this connection - * - * Returns a list of feature names with `true` (available) or `false` (not available) - * - * GET /connections/{connection_name}/features -> ConnectionFeatures - */ - public func connection_features( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.get("/connections/\(path_connection_name)/features", - ["fields": fields], nil, options) - return result - } - - /** - * ### Get the list of schemas and tables for a connection - * - * GET /connections/{connection_name}/schemas -> [Schema] - */ - public func connection_schemas( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {String} database For dialects that support multiple databases, optionally identify which to use - */ - database: String? = nil, - /** - * @param {Bool} cache True to use fetch from cache, false to load fresh - */ - cache: Bool? = nil, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.get("/connections/\(path_connection_name)/schemas", - ["database": database, "cache": cache as Any?, "fields": fields], nil, options) - return result - } - - /** - * ### Get the list of tables for a schema - * - * For dialects that support multiple databases, optionally identify which to use. If not provided, the default - * database for the connection will be used. - * - * For dialects that do **not** support multiple databases, **do not use** the database parameter - * - * GET /connections/{connection_name}/tables -> [SchemaTables] - */ - public func connection_tables( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {String} database Optional. Name of database to use for the query, only if applicable - */ - database: String? = nil, - /** - * @param {String} schema_name Optional. Return only tables for this schema - */ - schema_name: String? = nil, - /** - * @param {Bool} cache True to fetch from cache, false to load fresh - */ - cache: Bool? = nil, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {String} table_filter Optional. Return tables with names that contain this value - */ - table_filter: String? = nil, - /** - * @param {Int64} table_limit Optional. Return tables up to the table_limit - */ - table_limit: Int64? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.get("/connections/\(path_connection_name)/tables", - ["database": database, "schema_name": schema_name, "cache": cache as Any?, "fields": fields, "table_filter": table_filter, "table_limit": table_limit], nil, options) - return result - } - - /** - * ### Get the columns (and therefore also the tables) in a specific schema - * - * GET /connections/{connection_name}/columns -> [SchemaColumns] - */ - public func connection_columns( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {String} database For dialects that support multiple databases, optionally identify which to use - */ - database: String? = nil, - /** - * @param {String} schema_name Name of schema to use. - */ - schema_name: String? = nil, - /** - * @param {Bool} cache True to fetch from cache, false to load fresh - */ - cache: Bool? = nil, - /** - * @param {Int64} table_limit limits the tables per schema returned - */ - table_limit: Int64? = nil, - /** - * @param {String} table_names only fetch columns for a given (comma-separated) list of tables - */ - table_names: String? = nil, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.get("/connections/\(path_connection_name)/columns", - ["database": database, "schema_name": schema_name, "cache": cache as Any?, "table_limit": table_limit, "table_names": table_names, "fields": fields], nil, options) - return result - } - - /** - * ### Search a connection for columns matching the specified name - * - * **Note**: `column_name` must be a valid column name. It is not a search pattern. - * - * GET /connections/{connection_name}/search_columns -> [ColumnSearch] - */ - public func connection_search_columns( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {String} column_name Column name to find - */ - column_name: String? = nil, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.get("/connections/\(path_connection_name)/search_columns", - ["column_name": column_name, "fields": fields], nil, options) - return result - } - - /** - * ### Connection cost estimating - * - * Assign a `sql` statement to the body of the request. e.g., for Ruby, `{sql: 'select * from users'}` - * - * **Note**: If the connection's dialect has no support for cost estimates, an error will be returned - * - * POST /connections/{connection_name}/cost_estimate -> CostEstimate - */ - public func connection_cost_estimate( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {CreateCostEstimate} body WARNING: no writeable properties found for POST, PUT, or PATCH - */ - _ body: CreateCostEstimate, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.post("/connections/\(path_connection_name)/cost_estimate", - ["fields": fields], try! self.encode(body), options) - return result - } - - - // MARK Project: Manage Projects - /** - * ### Generate Lockfile for All LookML Dependencies - * - * Git must have been configured, must be in dev mode and deploy permission required - * - * Install_all is a two step process - * 1. For each remote_dependency in a project the dependency manager will resolve any ambiguous ref. - * 2. The project will then write out a lockfile including each remote_dependency with its resolved ref. - * - * POST /projects/{project_id}/manifest/lock_all -> String - */ - public func lock_all( - /** - * @param {String} project_id Id of project - */ - _ project_id: String, - /** - * @param {String} fields Requested fields - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.post("/projects/\(path_project_id)/manifest/lock_all", - ["fields": fields], nil, options) - return result - } - /** * ### Get All Git Branches * @@ -8063,11 +5780,11 @@ open class LookerSDKStream: APIMethods { */ server_table_calcs: Bool? = nil, /** - * @param {Int64} image_width DEPRECATED. Render width for image formats. Note that this parameter is always ignored by this method. + * @param {Int64} image_width Render width for image formats. */ image_width: Int64? = nil, /** - * @param {Int64} image_height DEPRECATED. Render height for image formats. Note that this parameter is always ignored by this method. + * @param {Int64} image_height Render height for image formats. */ image_height: Int64? = nil, /** @@ -8194,9 +5911,9 @@ open class LookerSDKStream: APIMethods { */ public func query( /** - * @param {String} query_id Id of query + * @param {Int64} query_id Id of query */ - _ query_id: String, + _ query_id: Int64, /** * @param {String} fields Requested fields. */ @@ -8304,9 +6021,9 @@ open class LookerSDKStream: APIMethods { */ public func run_query( /** - * @param {String} query_id Id of query + * @param {Int64} query_id Id of query */ - _ query_id: String, + _ query_id: Int64, /** * @param {String} result_format Format of result */ @@ -8359,16 +6076,12 @@ open class LookerSDKStream: APIMethods { * @param {Bool} server_table_calcs Perform table calculations on query results */ server_table_calcs: Bool? = nil, - /** - * @param {String} source Specifies the source of this call. - */ - source: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let path_query_id = encodeParam(query_id) let path_result_format = encodeParam(result_format) let result: SDKResponse = self.get("/queries/\(path_query_id)/run/\(path_result_format)", - ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?, "source": source], nil, options) + ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?], nil, options) return result } @@ -8731,6 +6444,60 @@ open class LookerSDKStream: APIMethods { // MARK RenderTask: Manage Render Tasks + /** + * ### Create a new task to render a lookml dashboard to a document or image. + * + * # DEPRECATED: Use [create_dashboard_render_task()](#!/RenderTask/create_dashboard_render_task) in API 4.0+ + * + * Returns a render task object. + * To check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task). + * Once the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results). + * + * POST /render_tasks/lookml_dashboards/{dashboard_id}/{result_format} -> RenderTask + */ + @available(*, deprecated) + public func create_lookml_dashboard_render_task( + /** + * @param {String} dashboard_id Id of lookml dashboard to render + */ + _ dashboard_id: String, + /** + * @param {String} result_format Output type: pdf, png, or jpg + */ + _ result_format: String, + /** + * @param {CreateDashboardRenderTask} body + */ + _ body: CreateDashboardRenderTask, + /** + * @param {Int64} width Output width in pixels + */ + _ width: Int64, + /** + * @param {Int64} height Output height in pixels + */ + _ height: Int64, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {String} pdf_paper_size Paper size for pdf. Value can be one of: ["letter","legal","tabloid","a0","a1","a2","a3","a4","a5"] + */ + pdf_paper_size: String? = nil, + /** + * @param {Bool} pdf_landscape Whether to render pdf in landscape + */ + pdf_landscape: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_dashboard_id = encodeParam(dashboard_id) + let path_result_format = encodeParam(result_format) + let result: SDKResponse = self.post("/render_tasks/lookml_dashboards/\(path_dashboard_id)/\(path_result_format)", + ["width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape as Any?], try! self.encode(body), options) + return result + } + /** * ### Create a new task to render a look to an image. * @@ -8742,9 +6509,9 @@ open class LookerSDKStream: APIMethods { */ public func create_look_render_task( /** - * @param {String} look_id Id of look to render + * @param {Int64} look_id Id of look to render */ - _ look_id: String, + _ look_id: Int64, /** * @param {String} result_format Output type: png, or jpg */ @@ -8781,9 +6548,9 @@ open class LookerSDKStream: APIMethods { */ public func create_query_render_task( /** - * @param {String} query_id Id of the query to render + * @param {Int64} query_id Id of the query to render */ - _ query_id: String, + _ query_id: Int64, /** * @param {String} result_format Output type: png or jpg */ @@ -8820,9 +6587,9 @@ open class LookerSDKStream: APIMethods { */ public func create_dashboard_render_task( /** - * @param {String} dashboard_id Id of dashboard to render. The ID can be a LookML dashboard also. + * @param {Int64} dashboard_id Id of dashboard to render */ - _ dashboard_id: String, + _ dashboard_id: Int64, /** * @param {String} result_format Output type: pdf, png, or jpg */ @@ -8851,16 +6618,12 @@ open class LookerSDKStream: APIMethods { * @param {Bool} pdf_landscape Whether to render pdf in landscape paper orientation */ pdf_landscape: Bool? = nil, - /** - * @param {Bool} long_tables Whether or not to expand table vis to full length - */ - long_tables: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let path_dashboard_id = encodeParam(dashboard_id) let path_result_format = encodeParam(result_format) let result: SDKResponse = self.post("/render_tasks/dashboards/\(path_dashboard_id)/\(path_result_format)", - ["width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape as Any?, "long_tables": long_tables as Any?], try! self.encode(body), options) + ["width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape as Any?], try! self.encode(body), options) return result } @@ -8926,45 +6689,6 @@ open class LookerSDKStream: APIMethods { return result } - /** - * ### Create a new task to render a dashboard element to an image. - * - * Returns a render task object. - * To check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task). - * Once the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results). - * - * POST /render_tasks/dashboard_elements/{dashboard_element_id}/{result_format} -> RenderTask - */ - public func create_dashboard_element_render_task( - /** - * @param {String} dashboard_element_id Id of dashboard element to render: UDD dashboard element would be numeric and LookML dashboard element would be model_name::dashboard_title::lookml_link_id - */ - _ dashboard_element_id: String, - /** - * @param {String} result_format Output type: png or jpg - */ - _ result_format: String, - /** - * @param {Int64} width Output width in pixels - */ - _ width: Int64, - /** - * @param {Int64} height Output height in pixels - */ - _ height: Int64, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_element_id = encodeParam(dashboard_element_id) - let path_result_format = encodeParam(result_format) - let result: SDKResponse = self.post("/render_tasks/dashboard_elements/\(path_dashboard_element_id)/\(path_result_format)", - ["width": width, "height": height, "fields": fields], nil, options) - return result - } - // MARK Role: Manage Roles @@ -9013,9 +6737,9 @@ open class LookerSDKStream: APIMethods { */ sorts: String? = nil, /** - * @param {String} id Match model set id. + * @param {Int64} id Match model set id. */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} name Match model set name. */ @@ -9046,9 +6770,9 @@ open class LookerSDKStream: APIMethods { */ public func model_set( /** - * @param {String} model_set_id Id of model set + * @param {Int64} model_set_id Id of model set */ - _ model_set_id: String, + _ model_set_id: Int64, /** * @param {String} fields Requested fields. */ @@ -9068,9 +6792,9 @@ open class LookerSDKStream: APIMethods { */ public func update_model_set( /** - * @param {String} model_set_id id of model set + * @param {Int64} model_set_id id of model set */ - _ model_set_id: String, + _ model_set_id: Int64, /** * @param {WriteModelSet} body */ @@ -9089,9 +6813,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_model_set( /** - * @param {String} model_set_id id of model set + * @param {Int64} model_set_id id of model set */ - _ model_set_id: String, + _ model_set_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_model_set_id = encodeParam(model_set_id) @@ -9188,9 +6912,9 @@ open class LookerSDKStream: APIMethods { */ sorts: String? = nil, /** - * @param {String} id Match permission set id. + * @param {Int64} id Match permission set id. */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} name Match permission set name. */ @@ -9221,9 +6945,9 @@ open class LookerSDKStream: APIMethods { */ public func permission_set( /** - * @param {String} permission_set_id Id of permission set + * @param {Int64} permission_set_id Id of permission set */ - _ permission_set_id: String, + _ permission_set_id: Int64, /** * @param {String} fields Requested fields. */ @@ -9243,9 +6967,9 @@ open class LookerSDKStream: APIMethods { */ public func update_permission_set( /** - * @param {String} permission_set_id Id of permission set + * @param {Int64} permission_set_id Id of permission set */ - _ permission_set_id: String, + _ permission_set_id: Int64, /** * @param {WritePermissionSet} body */ @@ -9264,9 +6988,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_permission_set( /** - * @param {String} permission_set_id Id of permission set + * @param {Int64} permission_set_id Id of permission set */ - _ permission_set_id: String, + _ permission_set_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_permission_set_id = encodeParam(permission_set_id) @@ -9318,9 +7042,9 @@ open class LookerSDKStream: APIMethods { */ fields: String? = nil, /** - * @param {DelimArray} ids Optional list of ids to get specific roles. + * @param {DelimArray} ids Optional list of ids to get specific roles. */ - ids: DelimArray? = nil, + ids: DelimArray? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let result: SDKResponse = self.get("/roles", @@ -9390,9 +7114,9 @@ open class LookerSDKStream: APIMethods { */ sorts: String? = nil, /** - * @param {String} id Match role id. + * @param {Int64} id Match role id. */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} name Match role name. */ @@ -9413,288 +7137,583 @@ open class LookerSDKStream: APIMethods { } /** - * ### Search roles include user count - * - * Returns all role records that match the given search criteria, and attaches - * associated user counts. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" + * ### Get information about the role with a specific id. * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. + * GET /roles/{role_id} -> Role + */ + public func role( + /** + * @param {Int64} role_id id of role + */ + _ role_id: Int64, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.get("/roles/\(path_role_id)", nil, nil, options) + return result + } + + /** + * ### Update information about the role with a specific id. * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. + * PATCH /roles/{role_id} -> Role + */ + public func update_role( + /** + * @param {Int64} role_id id of role + */ + _ role_id: Int64, + /** + * @param {WriteRole} body + */ + _ body: WriteRole, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.patch("/roles/\(path_role_id)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Delete the role with a specific id. * - * Boolean search params accept only "true" and "false" as values. + * DELETE /roles/{role_id} -> String + */ + public func delete_role( + /** + * @param {Int64} role_id id of role + */ + _ role_id: Int64, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.delete("/roles/\(path_role_id)", nil, nil, options) + return result + } + + /** + * ### Get information about all the groups with the role that has a specific id. * - * GET /roles/search/with_user_count -> [RoleSearch] + * GET /roles/{role_id}/groups -> [LkGroup] */ - public func search_roles_with_user_count( + public func role_groups( + /** + * @param {Int64} role_id id of role + */ + _ role_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.get("/roles/\(path_role_id)/groups", + ["fields": fields], nil, options) + return result + } + + /** + * ### Set all groups for a role, removing all existing group associations from that role. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * PUT /roles/{role_id}/groups -> [LkGroup] + */ + public func set_role_groups( /** - * @param {Int64} limit Number of results to return (used with `offset`). + * @param {Int64} role_id id of role */ - limit: Int64? = nil, + _ role_id: Int64, /** - * @param {Int64} offset Number of results to skip before returning any (used with `limit`). + * @param {[String]} body */ - offset: Int64? = nil, + _ body: [String], + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.put("/roles/\(path_role_id)/groups", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get information about all the users with the role that has a specific id. + * + * GET /roles/{role_id}/users -> [User] + */ + public func role_users( /** - * @param {String} sorts Fields to sort by. + * @param {Int64} role_id id of role */ - sorts: String? = nil, + _ role_id: Int64, /** - * @param {String} id Match role id. + * @param {String} fields Requested fields. */ - id: String? = nil, + fields: String? = nil, /** - * @param {String} name Match role name. + * @param {Bool} direct_association_only Get only users associated directly with the role: exclude those only associated through groups. */ - name: String? = nil, + direct_association_only: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.get("/roles/\(path_role_id)/users", + ["fields": fields, "direct_association_only": direct_association_only as Any?], nil, options) + return result + } + + /** + * ### Set all the users of the role with a specific id. + * + * PUT /roles/{role_id}/users -> [User] + */ + public func set_role_users( /** - * @param {Bool} built_in Match roles by built_in status. + * @param {Int64} role_id id of role */ - built_in: Bool? = nil, + _ role_id: Int64, /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression. + * @param {[String]} body */ - filter_or: Bool? = nil, + _ body: [String], options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/roles/search/with_user_count", - ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "name": name, "built_in": built_in as Any?, "filter_or": filter_or as Any?], nil, options) + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.put("/roles/\(path_role_id)/users", nil, try! self.encode(body), options) return result } + + + // MARK ScheduledPlan: Manage Scheduled Plans + /** - * ### Get information about the role with a specific id. + * ### Get Scheduled Plans for a Space * - * GET /roles/{role_id} -> Role + * Returns scheduled plans owned by the caller for a given space id. + * + * GET /scheduled_plans/space/{space_id} -> [ScheduledPlan] + */ + public func scheduled_plans_for_space( + /** + * @param {Int64} space_id Space Id + */ + _ space_id: Int64, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.get("/scheduled_plans/space/\(path_space_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get Information About a Scheduled Plan + * + * Admins can fetch information about other users' Scheduled Plans. + * + * GET /scheduled_plans/{scheduled_plan_id} -> ScheduledPlan */ - public func role( + public func scheduled_plan( + /** + * @param {Int64} scheduled_plan_id Scheduled Plan Id + */ + _ scheduled_plan_id: Int64, /** - * @param {String} role_id id of role + * @param {String} fields Requested fields. */ - _ role_id: String, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.get("/roles/\(path_role_id)", nil, nil, options) + let path_scheduled_plan_id = encodeParam(scheduled_plan_id) + let result: SDKResponse = self.get("/scheduled_plans/\(path_scheduled_plan_id)", + ["fields": fields], nil, options) return result } /** - * ### Update information about the role with a specific id. + * ### Update a Scheduled Plan * - * PATCH /roles/{role_id} -> Role + * Admins can update other users' Scheduled Plans. + * + * Note: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations + * currently defined for the scheduled plan. + * + * For Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan + * specifying only B in the destinations, then destinations A and C will be deleted by the update. + * + * Updating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination. + * + * If you omit the scheduled_plan_destinations property from the object passed to update, then the destinations + * defined on the original scheduled plan will remain unchanged. + * + * #### Email Permissions: + * + * For details about permissions required to schedule delivery to email and the safeguards + * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). + * + * + * #### Scheduled Plan Destination Formats + * + * Scheduled plan destinations must specify the data format to produce and send to the destination. + * + * Formats: + * + * | format | Description + * | :-----------: | :--- | + * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. + * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query + * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. + * | csv | Comma separated values with a header + * | txt | Tab separated values with a header + * | html | Simple html + * | xlsx | MS Excel spreadsheet + * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document + * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document + * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image + * || + * + * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. + * + * PATCH /scheduled_plans/{scheduled_plan_id} -> ScheduledPlan */ - public func update_role( + public func update_scheduled_plan( /** - * @param {String} role_id id of role + * @param {Int64} scheduled_plan_id Scheduled Plan Id */ - _ role_id: String, + _ scheduled_plan_id: Int64, /** - * @param {WriteRole} body + * @param {WriteScheduledPlan} body */ - _ body: WriteRole, + _ body: WriteScheduledPlan, options: ITransportSettings? = nil ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.patch("/roles/\(path_role_id)", nil, try! self.encode(body), options) + let path_scheduled_plan_id = encodeParam(scheduled_plan_id) + let result: SDKResponse = self.patch("/scheduled_plans/\(path_scheduled_plan_id)", nil, try! self.encode(body), options) return result } /** - * ### Delete the role with a specific id. + * ### Delete a Scheduled Plan * - * DELETE /roles/{role_id} -> String + * Normal users can only delete their own scheduled plans. + * Admins can delete other users' scheduled plans. + * This delete cannot be undone. + * + * DELETE /scheduled_plans/{scheduled_plan_id} -> String */ - public func delete_role( + public func delete_scheduled_plan( /** - * @param {String} role_id id of role + * @param {Int64} scheduled_plan_id Scheduled Plan Id */ - _ role_id: String, + _ scheduled_plan_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.delete("/roles/\(path_role_id)", nil, nil, options) + let path_scheduled_plan_id = encodeParam(scheduled_plan_id) + let result: SDKResponse = self.delete("/scheduled_plans/\(path_scheduled_plan_id)", nil, nil, options) return result } /** - * ### Get information about all the groups with the role that has a specific id. + * ### List All Scheduled Plans * - * GET /roles/{role_id}/groups -> [LkGroup] + * Returns all scheduled plans which belong to the caller or given user. + * + * If no user_id is provided, this function returns the scheduled plans owned by the caller. + * + * + * To list all schedules for all users, pass `all_users=true`. + * + * + * The caller must have `see_schedules` permission to see other users' scheduled plans. + * + * GET /scheduled_plans -> [ScheduledPlan] */ - public func role_groups( + public func all_scheduled_plans( /** - * @param {String} role_id id of role + * @param {Int64} user_id Return scheduled plans belonging to this user_id. If not provided, returns scheduled plans owned by the caller. */ - _ role_id: String, + user_id: Int64? = nil, /** - * @param {String} fields Requested fields. + * @param {String} fields Comma delimited list of field names. If provided, only the fields specified will be included in the response */ fields: String? = nil, + /** + * @param {Bool} all_users Return scheduled plans belonging to all users (caller needs see_schedules permission) + */ + all_users: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.get("/roles/\(path_role_id)/groups", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/scheduled_plans", + ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) return result } /** - * ### Set all groups for a role, removing all existing group associations from that role. + * ### Create a Scheduled Plan * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Create a scheduled plan to render a Look or Dashboard on a recurring schedule. * - * PUT /roles/{role_id}/groups -> [LkGroup] + * To create a scheduled plan, you MUST provide values for the following fields: + * `name` + * and + * `look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id` + * and + * `cron_tab` or `datagroup` + * and + * at least one scheduled_plan_destination + * + * A scheduled plan MUST have at least one scheduled_plan_destination defined. + * + * When `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required. + * + * If `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible. + * + * The queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan. + * + * When `run_as_recipient` is `false` or not specified, the queries that provide the data for the + * look or dashboard are run in the context of user account that owns the scheduled plan. + * + * When `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the + * queries are run in the context of each recipient, so different recipients may see different + * data from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://cloud.google.com/looker/docs/r/admin/run-as-recipient). + * + * Admins can create and modify scheduled plans on behalf of other users by specifying a user id. + * Non-admin users may not create or modify scheduled plans by or for other users. + * + * #### Email Permissions: + * + * For details about permissions required to schedule delivery to email and the safeguards + * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). + * + * + * #### Scheduled Plan Destination Formats + * + * Scheduled plan destinations must specify the data format to produce and send to the destination. + * + * Formats: + * + * | format | Description + * | :-----------: | :--- | + * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. + * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query + * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. + * | csv | Comma separated values with a header + * | txt | Tab separated values with a header + * | html | Simple html + * | xlsx | MS Excel spreadsheet + * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document + * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document + * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image + * || + * + * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. + * + * POST /scheduled_plans -> ScheduledPlan */ - public func set_role_groups( - /** - * @param {String} role_id id of role - */ - _ role_id: String, + public func create_scheduled_plan( /** - * @param {[String]} body + * @param {WriteScheduledPlan} body */ - _ body: [String], + _ body: WriteScheduledPlan, options: ITransportSettings? = nil ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.put("/roles/\(path_role_id)/groups", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/scheduled_plans", nil, try! self.encode(body), options) return result } /** - * ### Get information about all the users with the role that has a specific id. + * ### Run a Scheduled Plan Immediately * - * GET /roles/{role_id}/users -> [User] + * Create a scheduled plan that runs only once, and immediately. + * + * This can be useful for testing a Scheduled Plan before committing to a production schedule. + * + * Admins can create scheduled plans on behalf of other users by specifying a user id. + * + * This API is rate limited to prevent it from being used for relay spam or DoS attacks + * + * #### Email Permissions: + * + * For details about permissions required to schedule delivery to email and the safeguards + * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). + * + * + * #### Scheduled Plan Destination Formats + * + * Scheduled plan destinations must specify the data format to produce and send to the destination. + * + * Formats: + * + * | format | Description + * | :-----------: | :--- | + * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. + * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query + * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. + * | csv | Comma separated values with a header + * | txt | Tab separated values with a header + * | html | Simple html + * | xlsx | MS Excel spreadsheet + * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document + * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document + * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image + * || + * + * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. + * + * POST /scheduled_plans/run_once -> ScheduledPlan */ - public func role_users( - /** - * @param {String} role_id id of role - */ - _ role_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func scheduled_plan_run_once( /** - * @param {Bool} direct_association_only Get only users associated directly with the role: exclude those only associated through groups. + * @param {WriteScheduledPlan} body */ - direct_association_only: Bool? = nil, + _ body: WriteScheduledPlan, options: ITransportSettings? = nil ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.get("/roles/\(path_role_id)/users", - ["fields": fields, "direct_association_only": direct_association_only as Any?], nil, options) + let result: SDKResponse = self.post("/scheduled_plans/run_once", nil, try! self.encode(body), options) return result } /** - * ### Set all the users of the role with a specific id. + * ### Get Scheduled Plans for a Look * - * PUT /roles/{role_id}/users -> [User] + * Returns all scheduled plans for a look which belong to the caller or given user. + * + * If no user_id is provided, this function returns the scheduled plans owned by the caller. + * + * + * To list all schedules for all users, pass `all_users=true`. + * + * + * The caller must have `see_schedules` permission to see other users' scheduled plans. + * + * GET /scheduled_plans/look/{look_id} -> [ScheduledPlan] */ - public func set_role_users( + public func scheduled_plans_for_look( + /** + * @param {Int64} look_id Look Id + */ + _ look_id: Int64, + /** + * @param {Int64} user_id User Id (default is requesting user if not specified) + */ + user_id: Int64? = nil, /** - * @param {String} role_id id of role + * @param {String} fields Requested fields. */ - _ role_id: String, + fields: String? = nil, /** - * @param {[String]} body + * @param {Bool} all_users Return scheduled plans belonging to all users for the look */ - _ body: [String], + all_users: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.put("/roles/\(path_role_id)/users", nil, try! self.encode(body), options) + let path_look_id = encodeParam(look_id) + let result: SDKResponse = self.get("/scheduled_plans/look/\(path_look_id)", + ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) return result } - - - // MARK ScheduledPlan: Manage Scheduled Plans - /** - * ### Get Scheduled Plans for a Space + * ### Get Scheduled Plans for a Dashboard * - * Returns scheduled plans owned by the caller for a given space id. + * Returns all scheduled plans for a dashboard which belong to the caller or given user. * - * GET /scheduled_plans/space/{space_id} -> [ScheduledPlan] + * If no user_id is provided, this function returns the scheduled plans owned by the caller. + * + * + * To list all schedules for all users, pass `all_users=true`. + * + * + * The caller must have `see_schedules` permission to see other users' scheduled plans. + * + * GET /scheduled_plans/dashboard/{dashboard_id} -> [ScheduledPlan] */ - public func scheduled_plans_for_space( + public func scheduled_plans_for_dashboard( /** - * @param {String} space_id Space Id + * @param {Int64} dashboard_id Dashboard Id */ - _ space_id: String, + _ dashboard_id: Int64, + /** + * @param {Int64} user_id User Id (default is requesting user if not specified) + */ + user_id: Int64? = nil, + /** + * @param {Bool} all_users Return scheduled plans belonging to all users for the dashboard + */ + all_users: Bool? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.get("/scheduled_plans/space/\(path_space_id)", - ["fields": fields], nil, options) + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.get("/scheduled_plans/dashboard/\(path_dashboard_id)", + ["user_id": user_id, "all_users": all_users as Any?, "fields": fields], nil, options) return result } /** - * ### Get Information About a Scheduled Plan + * ### Get Scheduled Plans for a LookML Dashboard * - * Admins can fetch information about other users' Scheduled Plans. + * Returns all scheduled plans for a LookML Dashboard which belong to the caller or given user. * - * GET /scheduled_plans/{scheduled_plan_id} -> ScheduledPlan + * If no user_id is provided, this function returns the scheduled plans owned by the caller. + * + * + * To list all schedules for all users, pass `all_users=true`. + * + * + * The caller must have `see_schedules` permission to see other users' scheduled plans. + * + * GET /scheduled_plans/lookml_dashboard/{lookml_dashboard_id} -> [ScheduledPlan] */ - public func scheduled_plan( + public func scheduled_plans_for_lookml_dashboard( + /** + * @param {String} lookml_dashboard_id LookML Dashboard Id + */ + _ lookml_dashboard_id: String, /** - * @param {String} scheduled_plan_id Scheduled Plan Id + * @param {Int64} user_id User Id (default is requesting user if not specified) */ - _ scheduled_plan_id: String, + user_id: Int64? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, + /** + * @param {Bool} all_users Return scheduled plans belonging to all users for the dashboard + */ + all_users: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_scheduled_plan_id = encodeParam(scheduled_plan_id) - let result: SDKResponse = self.get("/scheduled_plans/\(path_scheduled_plan_id)", - ["fields": fields], nil, options) + let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) + let result: SDKResponse = self.get("/scheduled_plans/lookml_dashboard/\(path_lookml_dashboard_id)", + ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) return result } /** - * ### Update a Scheduled Plan - * - * Admins can update other users' Scheduled Plans. - * - * Note: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations - * currently defined for the scheduled plan. + * ### Run a Scheduled Plan By Id Immediately + * This function creates a run-once schedule plan based on an existing scheduled plan, + * applies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately. + * This can be useful for testing modifications to an existing scheduled plan before committing to a production schedule. * - * For Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan - * specifying only B in the destinations, then destinations A and C will be deleted by the update. + * This function internally performs the following operations: * - * Updating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination. + * 1. Copies the properties of the existing scheduled plan into a new scheduled plan + * 2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values) + * 3. Creates the new scheduled plan + * 4. Runs the new scheduled plan * - * If you omit the scheduled_plan_destinations property from the object passed to update, then the destinations - * defined on the original scheduled plan will remain unchanged. + * The original scheduled plan is not modified by this operation. + * Admins can create, modify, and run scheduled plans on behalf of other users by specifying a user id. + * Non-admins can only create, modify, and run their own scheduled plans. * * #### Email Permissions: * @@ -9724,442 +7743,443 @@ open class LookerSDKStream: APIMethods { * * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. * - * PATCH /scheduled_plans/{scheduled_plan_id} -> ScheduledPlan + * + * + * This API is rate limited to prevent it from being used for relay spam or DoS attacks + * + * POST /scheduled_plans/{scheduled_plan_id}/run_once -> ScheduledPlan + */ + public func scheduled_plan_run_once_by_id( + /** + * @param {Int64} scheduled_plan_id Id of schedule plan to copy and run + */ + _ scheduled_plan_id: Int64, + /** + * @param {WriteScheduledPlan} body + */ + body: WriteScheduledPlan?, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_scheduled_plan_id = encodeParam(scheduled_plan_id) + let result: SDKResponse = self.post("/scheduled_plans/\(path_scheduled_plan_id)/run_once", nil, try! self.encode(body), options) + return result + } + + + + // MARK Session: Session Information + + /** + * ### Get API Session + * + * Returns information about the current API session, such as which workspace is selected for the session. + * + * GET /session -> ApiSession + */ + public func session( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/session", nil, nil, options) + return result + } + + /** + * ### Update API Session + * + * #### API Session Workspace + * + * You can use this endpoint to change the active workspace for the current API session. + * + * Only one workspace can be active in a session. The active workspace can be changed + * any number of times in a session. + * + * The default workspace for API sessions is the "production" workspace. + * + * All Looker APIs that use projects or lookml models (such as running queries) will + * use the version of project and model files defined by this workspace for the lifetime of the + * current API session or until the session workspace is changed again. + * + * An API session has the same lifetime as the access_token used to authenticate API requests. Each successful + * API login generates a new access_token and a new API session. + * + * If your Looker API client application needs to work in a dev workspace across multiple + * API sessions, be sure to select the dev workspace after each login. + * + * PATCH /session -> ApiSession + */ + public func update_session( + /** + * @param {WriteApiSession} body + */ + _ body: WriteApiSession, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.patch("/session", nil, try! self.encode(body), options) + return result + } + + + + // MARK Space: Manage Spaces + + /** + * ### Search Spaces + * + * Returns an **array of space objects** that match the given search criteria. + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * + * The parameters `limit`, and `offset` are recommended for fetching results in page-size chunks. + * + * Get a **single space** by id with [Space](#!/Space/space) + * + * GET /spaces/search -> [Space] + */ + @available(*, deprecated) + public func search_spaces( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Int64} page Requested page. + */ + page: Int64? = nil, + /** + * @param {Int64} per_page Results per page. + */ + per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {String} name Match Space title. + */ + name: String? = nil, + /** + * @param {Int64} id Match Space id + */ + id: Int64? = nil, + /** + * @param {String} parent_id Filter on a children of a particular space. + */ + parent_id: String? = nil, + /** + * @param {String} creator_id Filter on spaces created by a particular user. + */ + creator_id: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + /** + * @param {Bool} is_shared_root Match is shared root + */ + is_shared_root: Bool? = nil, + /** + * @param {Bool} is_users_root Match is users root + */ + is_users_root: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/spaces/search", + ["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 as Any?, "is_shared_root": is_shared_root as Any?, "is_users_root": is_users_root as Any?], nil, options) + return result + } + + /** + * ### Get information about the space with a specific id. + * + * GET /spaces/{space_id} -> Space */ - public func update_scheduled_plan( + @available(*, deprecated) + public func space( /** - * @param {String} scheduled_plan_id Scheduled Plan Id + * @param {String} space_id Id of space */ - _ scheduled_plan_id: String, + _ space_id: String, /** - * @param {WriteScheduledPlan} body + * @param {String} fields Requested fields. */ - _ body: WriteScheduledPlan, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_scheduled_plan_id = encodeParam(scheduled_plan_id) - let result: SDKResponse = self.patch("/scheduled_plans/\(path_scheduled_plan_id)", nil, try! self.encode(body), options) + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.get("/spaces/\(path_space_id)", + ["fields": fields], nil, options) return result } /** - * ### Delete a Scheduled Plan - * - * Normal users can only delete their own scheduled plans. - * Admins can delete other users' scheduled plans. - * This delete cannot be undone. + * ### Update the space with a specific id. * - * DELETE /scheduled_plans/{scheduled_plan_id} -> String + * PATCH /spaces/{space_id} -> Space */ - public func delete_scheduled_plan( + @available(*, deprecated) + public func update_space( /** - * @param {String} scheduled_plan_id Scheduled Plan Id + * @param {String} space_id Id of space */ - _ scheduled_plan_id: String, + _ space_id: String, + /** + * @param {UpdateSpace} body + */ + _ body: UpdateSpace, options: ITransportSettings? = nil ) -> SDKResponse { - let path_scheduled_plan_id = encodeParam(scheduled_plan_id) - let result: SDKResponse = self.delete("/scheduled_plans/\(path_scheduled_plan_id)", nil, nil, options) + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.patch("/spaces/\(path_space_id)", nil, try! self.encode(body), options) return result } /** - * ### List All Scheduled Plans - * - * Returns all scheduled plans which belong to the caller or given user. - * - * If no user_id is provided, this function returns the scheduled plans owned by the caller. - * + * ### Delete the space with a specific id including any children spaces. + * **DANGER** this will delete all looks and dashboards in the space. * - * To list all schedules for all users, pass `all_users=true`. - * - * - * The caller must have `see_schedules` permission to see other users' scheduled plans. - * - * GET /scheduled_plans -> [ScheduledPlan] + * DELETE /spaces/{space_id} -> String */ - public func all_scheduled_plans( - /** - * @param {String} user_id Return scheduled plans belonging to this user_id. If not provided, returns scheduled plans owned by the caller. - */ - user_id: String? = nil, - /** - * @param {String} fields Comma delimited list of field names. If provided, only the fields specified will be included in the response - */ - fields: String? = nil, + @available(*, deprecated) + public func delete_space( /** - * @param {Bool} all_users Return scheduled plans belonging to all users (caller needs see_schedules permission) + * @param {String} space_id Id of space */ - all_users: Bool? = nil, + _ space_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/scheduled_plans", - ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.delete("/spaces/\(path_space_id)", nil, nil, options) return result } /** - * ### Create a Scheduled Plan - * - * Create a scheduled plan to render a Look or Dashboard on a recurring schedule. - * - * To create a scheduled plan, you MUST provide values for the following fields: - * `name` - * and - * `look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id` - * and - * `cron_tab` or `datagroup` - * and - * at least one scheduled_plan_destination - * - * A scheduled plan MUST have at least one scheduled_plan_destination defined. - * - * When `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required. - * - * If `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible. - * - * The queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan. - * - * When `run_as_recipient` is `false` or not specified, the queries that provide the data for the - * look or dashboard are run in the context of user account that owns the scheduled plan. - * - * When `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the - * queries are run in the context of each recipient, so different recipients may see different - * data from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://cloud.google.com/looker/docs/r/admin/run-as-recipient). + * ### Get information about all spaces. * - * Admins can create and modify scheduled plans on behalf of other users by specifying a user id. - * Non-admin users may not create or modify scheduled plans by or for other users. - * - * #### Email Permissions: - * - * For details about permissions required to schedule delivery to email and the safeguards - * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). - * - * - * #### Scheduled Plan Destination Formats - * - * Scheduled plan destinations must specify the data format to produce and send to the destination. - * - * Formats: - * - * | format | Description - * | :-----------: | :--- | - * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. - * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query - * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. - * | csv | Comma separated values with a header - * | txt | Tab separated values with a header - * | html | Simple html - * | xlsx | MS Excel spreadsheet - * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document - * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document - * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image - * || + * In API 3.x, this will not return empty personal spaces, unless they belong to the calling user, + * or if they contain soft-deleted content. * - * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. + * In API 4.0+, all personal spaces will be returned. * - * POST /scheduled_plans -> ScheduledPlan + * GET /spaces -> [SpaceBase] */ - public func create_scheduled_plan( + @available(*, deprecated) + public func all_spaces( /** - * @param {WriteScheduledPlan} body + * @param {String} fields Requested fields. */ - _ body: WriteScheduledPlan, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/scheduled_plans", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/spaces", + ["fields": fields], nil, options) return result } /** - * ### Run a Scheduled Plan Immediately - * - * Create a scheduled plan that runs only once, and immediately. - * - * This can be useful for testing a Scheduled Plan before committing to a production schedule. - * - * Admins can create scheduled plans on behalf of other users by specifying a user id. - * - * This API is rate limited to prevent it from being used for relay spam or DoS attacks + * ### Create a space with specified information. * - * #### Email Permissions: - * - * For details about permissions required to schedule delivery to email and the safeguards - * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). - * - * - * #### Scheduled Plan Destination Formats - * - * Scheduled plan destinations must specify the data format to produce and send to the destination. - * - * Formats: - * - * | format | Description - * | :-----------: | :--- | - * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. - * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query - * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. - * | csv | Comma separated values with a header - * | txt | Tab separated values with a header - * | html | Simple html - * | xlsx | MS Excel spreadsheet - * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document - * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document - * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image - * || - * - * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. + * Caller must have permission to edit the parent space and to create spaces, otherwise the request + * returns 404 Not Found. * - * POST /scheduled_plans/run_once -> ScheduledPlan + * POST /spaces -> Space */ - public func scheduled_plan_run_once( + @available(*, deprecated) + public func create_space( /** - * @param {WriteScheduledPlan} body + * @param {CreateSpace} body */ - _ body: WriteScheduledPlan, + _ body: CreateSpace, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/scheduled_plans/run_once", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/spaces", nil, try! self.encode(body), options) return result } /** - * ### Get Scheduled Plans for a Look - * - * Returns all scheduled plans for a look which belong to the caller or given user. - * - * If no user_id is provided, this function returns the scheduled plans owned by the caller. - * + * ### Get the children of a space. * - * To list all schedules for all users, pass `all_users=true`. - * - * - * The caller must have `see_schedules` permission to see other users' scheduled plans. - * - * GET /scheduled_plans/look/{look_id} -> [ScheduledPlan] + * GET /spaces/{space_id}/children -> [Space] */ - public func scheduled_plans_for_look( - /** - * @param {String} look_id Look Id - */ - _ look_id: String, + @available(*, deprecated) + public func space_children( /** - * @param {String} user_id User Id (default is requesting user if not specified) + * @param {String} space_id Id of space */ - user_id: String? = nil, + _ space_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {Bool} all_users Return scheduled plans belonging to all users for the look + * @param {Int64} page Requested page. */ - all_users: Bool? = nil, + page: Int64? = nil, + /** + * @param {Int64} per_page Results per page. + */ + per_page: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let result: SDKResponse = self.get("/scheduled_plans/look/\(path_look_id)", - ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.get("/spaces/\(path_space_id)/children", + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts], nil, options) return result } /** - * ### Get Scheduled Plans for a Dashboard - * - * Returns all scheduled plans for a dashboard which belong to the caller or given user. - * - * If no user_id is provided, this function returns the scheduled plans owned by the caller. - * - * - * To list all schedules for all users, pass `all_users=true`. + * ### Search the children of a space * - * - * The caller must have `see_schedules` permission to see other users' scheduled plans. - * - * GET /scheduled_plans/dashboard/{dashboard_id} -> [ScheduledPlan] + * GET /spaces/{space_id}/children/search -> [Space] */ - public func scheduled_plans_for_dashboard( + @available(*, deprecated) + public func space_children_search( /** - * @param {String} dashboard_id Dashboard Id + * @param {String} space_id Id of space */ - _ dashboard_id: String, + _ space_id: String, /** - * @param {String} user_id User Id (default is requesting user if not specified) + * @param {String} fields Requested fields. */ - user_id: String? = nil, + fields: String? = nil, /** - * @param {Bool} all_users Return scheduled plans belonging to all users for the dashboard + * @param {String} sorts Fields to sort by. */ - all_users: Bool? = nil, + sorts: String? = nil, /** - * @param {String} fields Requested fields. + * @param {String} name Match Space name. */ - fields: String? = nil, + name: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.get("/scheduled_plans/dashboard/\(path_dashboard_id)", - ["user_id": user_id, "all_users": all_users as Any?, "fields": fields], nil, options) + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.get("/spaces/\(path_space_id)/children/search", + ["fields": fields, "sorts": sorts, "name": name], nil, options) return result } /** - * ### Get Scheduled Plans for a LookML Dashboard - * - * Returns all scheduled plans for a LookML Dashboard which belong to the caller or given user. - * - * If no user_id is provided, this function returns the scheduled plans owned by the caller. + * ### Get the parent of a space * - * - * To list all schedules for all users, pass `all_users=true`. - * - * - * The caller must have `see_schedules` permission to see other users' scheduled plans. - * - * GET /scheduled_plans/lookml_dashboard/{lookml_dashboard_id} -> [ScheduledPlan] + * GET /spaces/{space_id}/parent -> Space */ - public func scheduled_plans_for_lookml_dashboard( - /** - * @param {String} lookml_dashboard_id LookML Dashboard Id - */ - _ lookml_dashboard_id: String, + @available(*, deprecated) + public func space_parent( /** - * @param {String} user_id User Id (default is requesting user if not specified) + * @param {String} space_id Id of space */ - user_id: String? = nil, + _ space_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, - /** - * @param {Bool} all_users Return scheduled plans belonging to all users for the dashboard - */ - all_users: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) - let result: SDKResponse = self.get("/scheduled_plans/lookml_dashboard/\(path_lookml_dashboard_id)", - ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.get("/spaces/\(path_space_id)/parent", + ["fields": fields], nil, options) return result } /** - * ### Run a Scheduled Plan By Id Immediately - * This function creates a run-once schedule plan based on an existing scheduled plan, - * applies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately. - * This can be useful for testing modifications to an existing scheduled plan before committing to a production schedule. - * - * This function internally performs the following operations: - * - * 1. Copies the properties of the existing scheduled plan into a new scheduled plan - * 2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values) - * 3. Creates the new scheduled plan - * 4. Runs the new scheduled plan - * - * The original scheduled plan is not modified by this operation. - * Admins can create, modify, and run scheduled plans on behalf of other users by specifying a user id. - * Non-admins can only create, modify, and run their own scheduled plans. - * - * #### Email Permissions: - * - * For details about permissions required to schedule delivery to email and the safeguards - * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). - * - * - * #### Scheduled Plan Destination Formats - * - * Scheduled plan destinations must specify the data format to produce and send to the destination. - * - * Formats: - * - * | format | Description - * | :-----------: | :--- | - * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. - * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query - * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. - * | csv | Comma separated values with a header - * | txt | Tab separated values with a header - * | html | Simple html - * | xlsx | MS Excel spreadsheet - * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document - * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document - * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image - * || - * - * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. - * + * ### Get the ancestors of a space * - * - * This API is rate limited to prevent it from being used for relay spam or DoS attacks - * - * POST /scheduled_plans/{scheduled_plan_id}/run_once -> ScheduledPlan + * GET /spaces/{space_id}/ancestors -> [Space] */ - public func scheduled_plan_run_once_by_id( + @available(*, deprecated) + public func space_ancestors( /** - * @param {String} scheduled_plan_id Id of schedule plan to copy and run + * @param {String} space_id Id of space */ - _ scheduled_plan_id: String, + _ space_id: String, /** - * @param {WriteScheduledPlan} body + * @param {String} fields Requested fields. */ - body: WriteScheduledPlan?, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_scheduled_plan_id = encodeParam(scheduled_plan_id) - let result: SDKResponse = self.post("/scheduled_plans/\(path_scheduled_plan_id)/run_once", nil, try! self.encode(body), options) + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.get("/spaces/\(path_space_id)/ancestors", + ["fields": fields], nil, options) return result } - - - // MARK Session: Session Information - /** - * ### Get API Session + * ### Get all looks in a space. + * In API 3.x, this will return all looks in a space, including looks in the trash. + * In API 4.0+, all looks in a space will be returned, excluding looks in the trash. * - * Returns information about the current API session, such as which workspace is selected for the session. - * - * GET /session -> ApiSession + * GET /spaces/{space_id}/looks -> [LookWithQuery] */ - public func session( + @available(*, deprecated) + public func space_looks( + /** + * @param {String} space_id Id of space + */ + _ space_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/session", nil, nil, options) + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.get("/spaces/\(path_space_id)/looks", + ["fields": fields], nil, options) return result } /** - * ### Update API Session - * - * #### API Session Workspace - * - * You can use this endpoint to change the active workspace for the current API session. - * - * Only one workspace can be active in a session. The active workspace can be changed - * any number of times in a session. - * - * The default workspace for API sessions is the "production" workspace. - * - * All Looker APIs that use projects or lookml models (such as running queries) will - * use the version of project and model files defined by this workspace for the lifetime of the - * current API session or until the session workspace is changed again. - * - * An API session has the same lifetime as the access_token used to authenticate API requests. Each successful - * API login generates a new access_token and a new API session. + * ### Get the dashboards in a space * - * If your Looker API client application needs to work in a dev workspace across multiple - * API sessions, be sure to select the dev workspace after each login. - * - * PATCH /session -> ApiSession + * GET /spaces/{space_id}/dashboards -> [Dashboard] */ - public func update_session( + @available(*, deprecated) + public func space_dashboards( /** - * @param {WriteApiSession} body + * @param {String} space_id Id of space */ - _ body: WriteApiSession, + _ space_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/session", nil, try! self.encode(body), options) + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.get("/spaces/\(path_space_id)/dashboards", + ["fields": fields], nil, options) return result } @@ -10264,9 +8284,9 @@ open class LookerSDKStream: APIMethods { */ public func search_themes( /** - * @param {String} id Match theme id. + * @param {Int64} id Match theme id. */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} name Match theme name. */ @@ -10515,77 +8535,6 @@ open class LookerSDKStream: APIMethods { // MARK User: Manage Users - /** - * ### Search email credentials - * - * Returns all credentials_email records that match the given search criteria. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. - * - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * GET /credentials_email/search -> [CredentialsEmailSearch] - */ - public func search_credentials_email( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Int64} limit Number of results to return (used with `offset`). - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any (used with `limit`). - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {String} id Match credentials_email id. - */ - id: String? = nil, - /** - * @param {String} email Match credentials_email email. - */ - email: String? = nil, - /** - * @param {String} emails Find credentials_email that match given emails. - */ - emails: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression. - */ - filter_or: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/credentials_email/search", - ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "email": email, "emails": emails, "filter_or": filter_or as Any?], nil, options) - return result - } - /** * ### Get information about the current user; i.e. the user account currently calling the API. * @@ -10614,33 +8563,25 @@ open class LookerSDKStream: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + * @param {Int64} page Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} per_page Return N rows of data per page */ per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ sorts: String? = nil, /** - * @param {DelimArray} ids Optional list of ids to get specific users. + * @param {DelimArray} ids Optional list of ids to get specific users. */ - ids: DelimArray? = nil, + ids: DelimArray? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let result: SDKResponse = self.get("/users", - ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "ids": ids as Any?], nil, options) + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "ids": ids as Any?], nil, options) return result } @@ -10705,29 +8646,21 @@ open class LookerSDKStream: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + * @param {Int64} page Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} per_page Return N rows of data per page */ per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ sorts: String? = nil, /** - * @param {String} id Match User Id. + * @param {Int64} id Match User Id. */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} first_name Match First name. */ @@ -10757,17 +8690,17 @@ open class LookerSDKStream: APIMethods { */ filter_or: Bool? = nil, /** - * @param {String} content_metadata_id Search for users who have access to this content_metadata item + * @param {Int64} content_metadata_id Search for users who have access to this content_metadata item */ - content_metadata_id: String? = nil, + content_metadata_id: Int64? = nil, /** - * @param {String} group_id Search for users who are direct members of this group + * @param {Int64} group_id Search for users who are direct members of this group */ - group_id: String? = nil, + group_id: Int64? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let result: SDKResponse = self.get("/users/search", - ["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 as Any?, "embed_user": embed_user as Any?, "email": email, "is_disabled": is_disabled as Any?, "filter_or": filter_or as Any?, "content_metadata_id": content_metadata_id, "group_id": group_id], nil, options) + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "id": id, "first_name": first_name, "last_name": last_name, "verified_looker_employee": verified_looker_employee as Any?, "embed_user": embed_user as Any?, "email": email, "is_disabled": is_disabled as Any?, "filter_or": filter_or as Any?, "content_metadata_id": content_metadata_id, "group_id": group_id], nil, options) return result } @@ -10791,29 +8724,21 @@ open class LookerSDKStream: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + * @param {Int64} page Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + * @param {Int64} per_page Return N rows of data per page */ per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, /** * @param {String} sorts Fields to sort by */ sorts: String? = nil, /** - * @param {String} id Match User Id + * @param {Int64} id Match User Id */ - id: String? = nil, + id: Int64? = nil, /** * @param {String} first_name Match First name */ @@ -10838,7 +8763,7 @@ open class LookerSDKStream: APIMethods { ) -> SDKResponse { let path_pattern = encodeParam(pattern) let result: SDKResponse = self.get("/users/search/names/\(path_pattern)", - ["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 as Any?, "email": email, "is_disabled": is_disabled as Any?], nil, options) + ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "id": id, "first_name": first_name, "last_name": last_name, "verified_looker_employee": verified_looker_employee as Any?, "email": email, "is_disabled": is_disabled as Any?], nil, options) return result } @@ -10853,9 +8778,9 @@ open class LookerSDKStream: APIMethods { */ public func user( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -10875,9 +8800,9 @@ open class LookerSDKStream: APIMethods { */ public func update_user( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {WriteUser} body */ @@ -10903,9 +8828,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -10978,9 +8903,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_email( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11002,9 +8927,9 @@ open class LookerSDKStream: APIMethods { */ public func create_user_credentials_email( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {WriteCredentialsEmail} body */ @@ -11030,9 +8955,9 @@ open class LookerSDKStream: APIMethods { */ public func update_user_credentials_email( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {WriteCredentialsEmail} body */ @@ -11058,9 +8983,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_email( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11077,9 +9002,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_totp( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11101,9 +9026,9 @@ open class LookerSDKStream: APIMethods { */ public func create_user_credentials_totp( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {CredentialsTotp} body WARNING: no writeable properties found for POST, PUT, or PATCH */ @@ -11129,9 +9054,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_totp( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11148,9 +9073,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_ldap( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11172,9 +9097,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_ldap( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11191,9 +9116,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_google( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11215,9 +9140,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_google( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11234,9 +9159,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_saml( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11258,9 +9183,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_saml( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11277,9 +9202,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_oidc( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11301,9 +9226,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_oidc( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11320,13 +9245,13 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_api3( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} credentials_api3_id Id of API Credential + * @param {Int64} credentials_api3_id Id of API Credential */ - _ credentials_api3_id: String, + _ credentials_api3_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11349,13 +9274,13 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_api3( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} credentials_api3_id Id of API Credential + * @param {Int64} credentials_api3_id Id of API Credential */ - _ credentials_api3_id: String, + _ credentials_api3_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11373,9 +9298,9 @@ open class LookerSDKStream: APIMethods { */ public func all_user_credentials_api3s( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11393,13 +9318,17 @@ open class LookerSDKStream: APIMethods { * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /users/{user_id}/credentials_api3 -> CreateCredentialsApi3 + * POST /users/{user_id}/credentials_api3 -> CredentialsApi3 */ public func create_user_credentials_api3( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, + /** + * @param {CredentialsApi3} body WARNING: no writeable properties found for POST, PUT, or PATCH + */ + body: CredentialsApi3?, /** * @param {String} fields Requested fields. */ @@ -11408,7 +9337,7 @@ open class LookerSDKStream: APIMethods { ) -> SDKResponse { let path_user_id = encodeParam(user_id) let result: SDKResponse = self.post("/users/\(path_user_id)/credentials_api3", - ["fields": fields], nil, options) + ["fields": fields], try! self.encode(body), options) return result } @@ -11421,13 +9350,13 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_embed( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} credentials_embed_id Id of Embedding Credential + * @param {Int64} credentials_embed_id Id of Embedding Credential */ - _ credentials_embed_id: String, + _ credentials_embed_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11450,13 +9379,13 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_embed( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} credentials_embed_id Id of Embedding Credential + * @param {Int64} credentials_embed_id Id of Embedding Credential */ - _ credentials_embed_id: String, + _ credentials_embed_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11474,9 +9403,9 @@ open class LookerSDKStream: APIMethods { */ public func all_user_credentials_embeds( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11498,9 +9427,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_looker_openid( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11522,9 +9451,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_looker_openid( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11541,13 +9470,13 @@ open class LookerSDKStream: APIMethods { */ public func user_session( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} session_id Id of Web Login Session + * @param {Int64} session_id Id of Web Login Session */ - _ session_id: String, + _ session_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11570,13 +9499,13 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_session( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} session_id Id of Web Login Session + * @param {Int64} session_id Id of Web Login Session */ - _ session_id: String, + _ session_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11594,9 +9523,9 @@ open class LookerSDKStream: APIMethods { */ public func all_user_sessions( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11626,9 +9555,9 @@ open class LookerSDKStream: APIMethods { */ public func create_user_credentials_email_password_reset( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {Bool} expires Expiring token. */ @@ -11652,9 +9581,9 @@ open class LookerSDKStream: APIMethods { */ public func user_roles( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11678,9 +9607,9 @@ open class LookerSDKStream: APIMethods { */ public func set_user_roles( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {[String]} body */ @@ -11719,17 +9648,17 @@ open class LookerSDKStream: APIMethods { */ public func user_attribute_user_values( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {DelimArray} user_attribute_ids Specific user attributes to request. Omit or leave blank to request all user attributes. + * @param {DelimArray} user_attribute_ids Specific user attributes to request. Omit or leave blank to request all user attributes. */ - user_attribute_ids: DelimArray? = nil, + user_attribute_ids: DelimArray? = nil, /** * @param {Bool} all_values If true, returns all values in the search path instead of just the first value found. Useful for debugging group precedence. */ @@ -11755,13 +9684,13 @@ open class LookerSDKStream: APIMethods { */ public func set_user_attribute_user_value( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, /** * @param {WriteUserAttributeWithValue} body */ @@ -11786,13 +9715,13 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_attribute_user_value( /** - * @param {String} user_id Id of user + * @param {Int64} user_id Id of user */ - _ user_id: String, + _ user_id: Int64, /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -11801,87 +9730,6 @@ open class LookerSDKStream: APIMethods { return result } - /** - * ### Send a password reset token. - * This will send a password reset email to the user. If a password reset token does not already exist - * for this user, it will create one and then send it. - * If the user has not yet set up their account, it will send a setup email to the user. - * The URL sent in the email is expressed as the 'password_reset_url' of the user's email/password credential object. - * Password reset URLs will expire in 60 minutes. - * This method can be called with an empty body. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * POST /users/{user_id}/credentials_email/send_password_reset -> CredentialsEmail - */ - public func send_user_credentials_email_password_reset( - /** - * @param {String} user_id Id of user - */ - _ user_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.post("/users/\(path_user_id)/credentials_email/send_password_reset", - ["fields": fields], nil, options) - return result - } - - /** - * ### Change a disabled user's email addresses - * - * Allows the admin to change the email addresses for all the user's - * associated credentials. Will overwrite all associated email addresses with - * the value supplied in the 'email' body param. - * The user's 'is_disabled' status must be true. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). - * - * POST /users/{user_id}/update_emails -> User - */ - public func wipeout_user_emails( - /** - * @param {String} user_id Id of user - */ - _ user_id: String, - /** - * @param {UserEmailOnly} body - */ - _ body: UserEmailOnly, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.post("/users/\(path_user_id)/update_emails", - ["fields": fields], try! self.encode(body), options) - return result - } - - /** - * Create an embed user from an external user ID - * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled - * - * POST /users/embed_user -> UserPublic - */ - public func create_embed_user( - /** - * @param {CreateEmbedUserRequest} body - */ - _ body: CreateEmbedUserRequest, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/users/embed_user", nil, try! self.encode(body), options) - return result - } - // MARK UserAttribute: Manage User Attributes @@ -11944,9 +9792,9 @@ open class LookerSDKStream: APIMethods { */ public func user_attribute( /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, /** * @param {String} fields Requested fields. */ @@ -11966,9 +9814,9 @@ open class LookerSDKStream: APIMethods { */ public func update_user_attribute( /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, /** * @param {WriteUserAttribute} body */ @@ -11992,9 +9840,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_attribute( /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_attribute_id = encodeParam(user_attribute_id) @@ -12015,9 +9863,9 @@ open class LookerSDKStream: APIMethods { */ public func all_user_attribute_group_values( /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, /** * @param {String} fields Requested fields. */ @@ -12056,9 +9904,9 @@ open class LookerSDKStream: APIMethods { */ public func set_user_attribute_group_values( /** - * @param {String} user_attribute_id Id of user attribute + * @param {Int64} user_attribute_id Id of user attribute */ - _ user_attribute_id: String, + _ user_attribute_id: Int64, /** * @param {[UserAttributeGroupValue]} body */ From 57e96ce2d16eb7d4277e0811461087a08e666fcb Mon Sep 17 00:00:00 2001 From: Fabio Beltramini Date: Fri, 11 Aug 2023 20:19:14 -0400 Subject: [PATCH 2/5] feat: generate SDKs for Looker 23.14 Release-As: 23.14.0 --- csharp/rtl/Constants.cs | 2 +- go/sdk/v4/methods.go | 54 +- go/sdk/v4/models.go | 64 +- kotlin/src/main/com/looker/sdk/4.0/methods.kt | 54 +- kotlin/src/main/com/looker/sdk/4.0/models.kt | 88 +- kotlin/src/main/com/looker/sdk/4.0/streams.kt | 54 +- kotlin/src/main/com/looker/sdk/Constants.kt | 2 +- swift/looker/rtl/constants.swift | 2 +- swift/looker/sdk/methods.swift | 7376 ++++--- swift/looker/sdk/models.swift | 16243 ++++++++++------ swift/looker/sdk/streams.swift | 10720 ++++++---- 11 files changed, 22066 insertions(+), 12593 deletions(-) diff --git a/csharp/rtl/Constants.cs b/csharp/rtl/Constants.cs index e0cff6cf6..292bb969c 100644 --- a/csharp/rtl/Constants.cs +++ b/csharp/rtl/Constants.cs @@ -59,7 +59,7 @@ public struct Constants internal static readonly Regex ContentPatternBinary = new Regex(MatchModeBinary, RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Compiled); - public const string DefaultApiVersion = "3.1"; + public const string DefaultApiVersion = "4.0"; public const string AgentPrefix = "CS-SDK"; public const string LookerVersion = "23.14"; diff --git a/go/sdk/v4/methods.go b/go/sdk/v4/methods.go index 8321523a3..91ba2707d 100644 --- a/go/sdk/v4/methods.go +++ b/go/sdk/v4/methods.go @@ -518,35 +518,39 @@ func (l *LookerSDK) DeleteEmbedSecret( } -// ### Create SSO Embed URL +// ### Create Signed Embed URL // -// Creates an SSO embed URL and cryptographically signs it with an embed secret. +// Creates a signed embed URL and cryptographically signs it with an embed secret. // This signed URL can then be used to instantiate a Looker embed session in a PBL web application. -// Do not make any modifications to this URL - any change may invalidate the signature and +// Do not make any modifications to the returned URL - any change may invalidate the signature and // cause the URL to fail to load a Looker embed session. // -// A signed SSO embed URL can only be used once. After it has been used to request a page from the -// Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent +// A signed embed URL can only be **used once**. After the URL has been used to request a page from the +// Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent // 'replay attacks'. // // The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. // To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. -// The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, -// copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. +// The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option +// to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. // -// Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) +// Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) // and the lists of models and permissions assigned to the embed user. -// At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. +// At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. // These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. // -// The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. +// The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. // // This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the -// SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. +// embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. +// // To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. // // The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. -// if not specified, the URL will be signed using the newest active secret defined in the Looker instance. +// if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, +// a default secret will be created. This default secret is encrypted using HMAC/SHA-256. +// +// The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. // // #### Security Note // Protect this signed URL as you would an access token or password credentials - do not write @@ -694,7 +698,7 @@ func (l *LookerSDK) GenerateTokensForCookielessSession( // // Configuring LDAP impacts authentication for all users. This configuration should be done carefully. // -// Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). +// Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). // // LDAP is enabled or disabled for Looker using the **enabled** field. // @@ -772,9 +776,9 @@ func (l *LookerSDK) TestLdapConfigConnection( // ### Test the connection authentication settings for an LDAP configuration. // -// This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. +// This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. // -// **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. +// **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. // // Example: // ```json @@ -789,7 +793,7 @@ func (l *LookerSDK) TestLdapConfigConnection( // // ``` // -// Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. +// Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. // // The active LDAP settings are not modified. // @@ -807,9 +811,9 @@ func (l *LookerSDK) TestLdapConfigAuth( // ### Test the user authentication settings for an LDAP configuration without authenticating the user. // -// This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. +// This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. // -// This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. +// This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. // // **test_ldap_user** is required. // @@ -829,9 +833,9 @@ func (l *LookerSDK) TestLdapConfigUserInfo( // ### Test the user authentication settings for an LDAP configuration. // -// This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. +// This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. // -// Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. +// Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. // // **test_ldap_user** and **test_ldap_password** are required. // @@ -1051,7 +1055,7 @@ func (l *LookerSDK) DeactivateAppUser( // // Configuring OIDC impacts authentication for all users. This configuration should be done carefully. // -// Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). +// Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). // // OIDC is enabled or disabled for Looker using the **enabled** field. // @@ -1181,7 +1185,7 @@ func (l *LookerSDK) ForcePasswordResetAtNextLoginForAllUsers( // // Configuring SAML impacts authentication for all users. This configuration should be done carefully. // -// Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). +// Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). // // SAML is enabled or disabled for Looker using the **enabled** field. // @@ -2085,8 +2089,10 @@ func (l *LookerSDK) MobileSettings( // - extension_framework_enabled // - extension_load_url_enabled // - marketplace_auto_install_enabled +// - marketplace_automation // - marketplace_terms_accepted // - marketplace_enabled +// - marketplace_site // - onboarding_enabled // - privatelabel_configuration // - timezone @@ -2094,6 +2100,7 @@ func (l *LookerSDK) MobileSettings( // - email_domain_allowlist // - embed_cookieless_v2 // - embed_enabled +// - embed_config // // GET /setting -> Setting func (l *LookerSDK) GetSetting( @@ -2114,8 +2121,10 @@ func (l *LookerSDK) GetSetting( // - extension_framework_enabled // - extension_load_url_enabled // - marketplace_auto_install_enabled +// - marketplace_automation // - marketplace_terms_accepted // - marketplace_enabled +// - marketplace_site // - onboarding_enabled // - privatelabel_configuration // - timezone @@ -2123,6 +2132,7 @@ func (l *LookerSDK) GetSetting( // - email_domain_allowlist // - embed_cookieless_v2 // - embed_enabled +// - embed_config // // See the `Setting` type for more information on the specific values that can be configured. // diff --git a/go/sdk/v4/models.go b/go/sdk/v4/models.go index 0cd290502..a7dfae9d5 100644 --- a/go/sdk/v4/models.go +++ b/go/sdk/v4/models.go @@ -26,7 +26,7 @@ SOFTWARE. /* -387 API models: 245 Spec, 60 Request, 60 Write, 22 Enum +389 API models: 247 Spec, 60 Request, 60 Write, 22 Enum */ // NOTE: Do not edit this file generated by Looker SDK Codegen for API v4 @@ -1091,10 +1091,24 @@ type EgressIpAddresses struct { EgressIpAddresses *[]string `json:"egress_ip_addresses,omitempty"` // Egress IP addresses } +type EmbedConfig struct { + DomainAllowlist *[]string `json:"domain_allowlist,omitempty"` // List of domains to allow for embedding + AlertUrlAllowlist *[]string `json:"alert_url_allowlist,omitempty"` // List of base urls to allow for alert/schedule + AlertUrlParamOwner *string `json:"alert_url_param_owner,omitempty"` // Owner of who defines the alert/schedule params on the base url + AlertUrlLabel *string `json:"alert_url_label,omitempty"` // Label for the alert/schedule url + SsoAuthEnabled *bool `json:"sso_auth_enabled,omitempty"` // Is SSO embedding enabled for this Looker + EmbedCookielessV2 *bool `json:"embed_cookieless_v2,omitempty"` // Is Cookieless embedding enabled for this Looker + EmbedContentNavigation *bool `json:"embed_content_navigation,omitempty"` // Is embed content navigation enabled for this looker + EmbedContentManagement *bool `json:"embed_content_management,omitempty"` // Is embed content management enabled for this Looker + StrictSameoriginForLogin *bool `json:"strict_sameorigin_for_login,omitempty"` // 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. + LookFilters *bool `json:"look_filters,omitempty"` // When true, filters are enabled on embedded Looks + HideLookNavigation *bool `json:"hide_look_navigation,omitempty"` // When true, removes navigation to Looks from embedded dashboards and explores. +} + type EmbedCookielessSessionAcquire struct { - SessionLength *int64 `json:"session_length,omitempty"` // Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + SessionLength *int64 `json:"session_length,omitempty"` // 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). ForceLogoutLogin *bool `json:"force_logout_login,omitempty"` // 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. - ExternalUserId *string `json:"external_user_id,omitempty"` // A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + ExternalUserId *string `json:"external_user_id,omitempty"` // A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. FirstName *string `json:"first_name,omitempty"` // First name of the embed user. Defaults to 'Embed' if not specified LastName *string `json:"last_name,omitempty"` // Last name of the embed user. Defaults to 'User' if not specified UserTimezone *string `json:"user_timezone,omitempty"` // Sets the user timezone for the embed user session, if the User Specific Timezones setting is enabled in the Looker admin settings. A value of `null` forces the embed user to use the Looker Application Default Timezone. You MUST omit this property from the request if the User Specific Timezones setting is disabled. Timezone values are validated against the IANA Timezone standard and can be seen in the Application Time Zone dropdown list on the Looker General Settings admin page. @@ -1103,8 +1117,8 @@ type EmbedCookielessSessionAcquire struct { GroupIds *[]string `json:"group_ids,omitempty"` // List of Looker group ids in which to enroll the embed user ExternalGroupId *string `json:"external_group_id,omitempty"` // A unique value identifying an embed-exclusive group. Multiple embed users using the same `external_group_id` value will be able to share Looker content with each other. Content and embed users associated with the `external_group_id` will not be accessible to normal Looker users or embed users not associated with this `external_group_id`. UserAttributes *map[string]interface{} `json:"user_attributes,omitempty"` // A dictionary of name-value pairs associating a Looker user attribute name with a value. - SessionReferenceToken *string `json:"session_reference_token,omitempty"` // Token referencing the embed session and is used to generate new authentication, navigation and api tokens. EmbedDomain *string `json:"embed_domain,omitempty"` // 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. + SessionReferenceToken *string `json:"session_reference_token,omitempty"` // Token referencing the embed session and is used to generate new authentication, navigation and api tokens. } type EmbedCookielessSessionAcquireResponse struct { @@ -1135,7 +1149,7 @@ type EmbedCookielessSessionGenerateTokensResponse struct { type EmbedParams struct { TargetUrl string `json:"target_url"` // The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. - SessionLength *int64 `json:"session_length,omitempty"` // Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + SessionLength *int64 `json:"session_length,omitempty"` // 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). ForceLogoutLogin *bool `json:"force_logout_login,omitempty"` // 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. } @@ -1151,9 +1165,9 @@ type EmbedSecret struct { type EmbedSsoParams struct { TargetUrl string `json:"target_url"` // The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. - SessionLength *int64 `json:"session_length,omitempty"` // Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + SessionLength *int64 `json:"session_length,omitempty"` // 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). ForceLogoutLogin *bool `json:"force_logout_login,omitempty"` // 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. - ExternalUserId *string `json:"external_user_id,omitempty"` // A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + ExternalUserId *string `json:"external_user_id,omitempty"` // A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. FirstName *string `json:"first_name,omitempty"` // First name of the embed user. Defaults to 'Embed' if not specified LastName *string `json:"last_name,omitempty"` // Last name of the embed user. Defaults to 'User' if not specified UserTimezone *string `json:"user_timezone,omitempty"` // Sets the user timezone for the embed user session, if the User Specific Timezones setting is enabled in the Looker admin settings. A value of `null` forces the embed user to use the Looker Application Default Timezone. You MUST omit this property from the request if the User Specific Timezones setting is disabled. Timezone values are validated against the IANA Timezone standard and can be seen in the Application Time Zone dropdown list on the Looker General Settings admin page. @@ -1163,6 +1177,7 @@ type EmbedSsoParams struct { ExternalGroupId *string `json:"external_group_id,omitempty"` // A unique value identifying an embed-exclusive group. Multiple embed users using the same `external_group_id` value will be able to share Looker content with each other. Content and embed users associated with the `external_group_id` will not be accessible to normal Looker users or embed users not associated with this `external_group_id`. UserAttributes *map[string]interface{} `json:"user_attributes,omitempty"` // A dictionary of name-value pairs associating a Looker user attribute name with a value. SecretId *string `json:"secret_id,omitempty"` // 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. + EmbedDomain *string `json:"embed_domain,omitempty"` // 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 } type EmbedUrlResponse struct { @@ -1943,6 +1958,12 @@ type Manifest struct { LocalizationSettings *LocalizationSettings `json:"localization_settings,omitempty"` } +type MarketplaceAutomation struct { + InstallEnabled *bool `json:"install_enabled,omitempty"` // Whether marketplace auto installation is enabled + UpdateLookerEnabled *bool `json:"update_looker_enabled,omitempty"` // Whether marketplace auto update is enabled for looker extensions + UpdateThirdPartyEnabled *bool `json:"update_third_party_enabled,omitempty"` // Whether marketplace auto update is enabled for third party extensions +} + type MaterializePDT struct { MaterializationId *string `json:"materialization_id,omitempty"` // The ID of the enqueued materialization task RespText *string `json:"resp_text,omitempty"` // Detailed response in text format @@ -3298,10 +3319,12 @@ type SessionConfig struct { type Setting struct { ExtensionFrameworkEnabled *bool `json:"extension_framework_enabled,omitempty"` // Toggle extension framework on or off - ExtensionLoadUrlEnabled *bool `json:"extension_load_url_enabled,omitempty"` // (DEPRECATED) Toggle extension extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. - MarketplaceAutoInstallEnabled *bool `json:"marketplace_auto_install_enabled,omitempty"` // Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled. - MarketplaceEnabled *bool `json:"marketplace_enabled,omitempty"` // Toggle marketplace on or off - MarketplaceTermsAccepted *bool `json:"marketplace_terms_accepted,omitempty"` // 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. + ExtensionLoadUrlEnabled *bool `json:"extension_load_url_enabled,omitempty"` // (DEPRECATED) Toggle extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. + MarketplaceAutoInstallEnabled *bool `json:"marketplace_auto_install_enabled,omitempty"` // (DEPRECATED) Toggle marketplace auto install on or off. Deprecated - do not use. Auto install can now be enabled via marketplace automation settings + MarketplaceAutomation *MarketplaceAutomation `json:"marketplace_automation,omitempty"` + MarketplaceEnabled *bool `json:"marketplace_enabled,omitempty"` // Toggle marketplace on or off + MarketplaceSite *string `json:"marketplace_site,omitempty"` // Location of Looker marketplace CDN + MarketplaceTermsAccepted *bool `json:"marketplace_terms_accepted,omitempty"` // 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. PrivatelabelConfiguration *PrivatelabelConfiguration `json:"privatelabel_configuration,omitempty"` CustomWelcomeEmail *CustomWelcomeEmail `json:"custom_welcome_email,omitempty"` OnboardingEnabled *bool `json:"onboarding_enabled,omitempty"` // Toggle onboarding on or off @@ -3311,8 +3334,9 @@ type Setting struct { HostUrl *string `json:"host_url,omitempty"` // Change the base portion of your Looker instance URL setting OverrideWarnings *bool `json:"override_warnings,omitempty"` // (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. EmailDomainAllowlist *[]string `json:"email_domain_allowlist,omitempty"` // An array of Email Domain Allowlist of type string for Scheduled Content - EmbedCookielessV2 *bool `json:"embed_cookieless_v2,omitempty"` // Toggle cookieless embed setting + EmbedCookielessV2 *bool `json:"embed_cookieless_v2,omitempty"` // (DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value. EmbedEnabled *bool `json:"embed_enabled,omitempty"` // True if embedding is enabled https://cloud.google.com/looker/docs/r/looker-core-feature-embed, false otherwise + EmbedConfig *EmbedConfig `json:"embed_config,omitempty"` } type SmtpNodeStatus struct { @@ -4421,14 +4445,15 @@ type WriteSessionConfig struct { } // Dynamic writeable type for Setting removes: -// embed_enabled +// marketplace_site, embed_enabled type WriteSetting struct { ExtensionFrameworkEnabled *bool `json:"extension_framework_enabled,omitempty"` // Toggle extension framework on or off - ExtensionLoadUrlEnabled *bool `json:"extension_load_url_enabled,omitempty"` // (DEPRECATED) Toggle extension extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. - MarketplaceAutoInstallEnabled *bool `json:"marketplace_auto_install_enabled,omitempty"` // Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled. - MarketplaceEnabled *bool `json:"marketplace_enabled,omitempty"` // Toggle marketplace on or off - MarketplaceTermsAccepted *bool `json:"marketplace_terms_accepted,omitempty"` // 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. - PrivatelabelConfiguration *WritePrivatelabelConfiguration `json:"privatelabel_configuration,omitempty"` // Dynamic writeable type for PrivatelabelConfiguration removes: + ExtensionLoadUrlEnabled *bool `json:"extension_load_url_enabled,omitempty"` // (DEPRECATED) Toggle extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. + MarketplaceAutoInstallEnabled *bool `json:"marketplace_auto_install_enabled,omitempty"` // (DEPRECATED) Toggle marketplace auto install on or off. Deprecated - do not use. Auto install can now be enabled via marketplace automation settings + MarketplaceAutomation *MarketplaceAutomation `json:"marketplace_automation,omitempty"` + MarketplaceEnabled *bool `json:"marketplace_enabled,omitempty"` // Toggle marketplace on or off + MarketplaceTermsAccepted *bool `json:"marketplace_terms_accepted,omitempty"` // 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. + PrivatelabelConfiguration *WritePrivatelabelConfiguration `json:"privatelabel_configuration,omitempty"` // Dynamic writeable type for PrivatelabelConfiguration removes: // logo_url, favicon_url CustomWelcomeEmail *CustomWelcomeEmail `json:"custom_welcome_email,omitempty"` OnboardingEnabled *bool `json:"onboarding_enabled,omitempty"` // Toggle onboarding on or off @@ -4438,7 +4463,8 @@ type WriteSetting struct { HostUrl *string `json:"host_url,omitempty"` // Change the base portion of your Looker instance URL setting OverrideWarnings *bool `json:"override_warnings,omitempty"` // (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. EmailDomainAllowlist *[]string `json:"email_domain_allowlist,omitempty"` // An array of Email Domain Allowlist of type string for Scheduled Content - EmbedCookielessV2 *bool `json:"embed_cookieless_v2,omitempty"` // Toggle cookieless embed setting + EmbedCookielessV2 *bool `json:"embed_cookieless_v2,omitempty"` // (DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value. + EmbedConfig *EmbedConfig `json:"embed_config,omitempty"` } // Dynamic writeable type for SshServer removes: 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 3757f49e9..6327207c4 100644 --- a/kotlin/src/main/com/looker/sdk/4.0/methods.kt +++ b/kotlin/src/main/com/looker/sdk/4.0/methods.kt @@ -652,35 +652,39 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { /** - * ### Create SSO Embed URL + * ### Create Signed Embed URL * - * Creates an SSO embed URL and cryptographically signs it with an embed secret. + * Creates a signed embed URL and cryptographically signs it with an embed secret. * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to this URL - any change may invalidate the signature and + * Do not make any modifications to the returned URL - any change may invalidate the signature and * cause the URL to fail to load a Looker embed session. * - * A signed SSO embed URL can only be used once. After it has been used to request a page from the - * Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent * 'replay attacks'. * * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. * - * Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. * - * The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. * * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. * * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. * * #### Security Note * Protect this signed URL as you would an access token or password credentials - do not write @@ -840,7 +844,7 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * LDAP is enabled or disabled for Looker using the **enabled** field. * @@ -921,9 +925,9 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { /** * ### Test the connection authentication settings for an LDAP configuration. * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. * * Example: * ```json @@ -936,7 +940,7 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * } * ``` * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * The active LDAP settings are not modified. * @@ -956,9 +960,9 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { /** * ### Test the user authentication settings for an LDAP configuration without authenticating the user. * - * This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. * - * This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. * * **test_ldap_user** is required. * @@ -980,9 +984,9 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { /** * ### Test the user authentication settings for an LDAP configuration. * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * **test_ldap_user** and **test_ldap_password** are required. * @@ -1242,7 +1246,7 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * OIDC is enabled or disabled for Looker using the **enabled** field. * @@ -1385,7 +1389,7 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * SAML is enabled or disabled for Looker using the **enabled** field. * @@ -2514,8 +2518,10 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * - extension_framework_enabled * - extension_load_url_enabled * - marketplace_auto_install_enabled + * - marketplace_automation * - marketplace_terms_accepted * - marketplace_enabled + * - marketplace_site * - onboarding_enabled * - privatelabel_configuration * - timezone @@ -2523,6 +2529,7 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * - email_domain_allowlist * - embed_cookieless_v2 * - embed_enabled + * - embed_config * * @param {String} fields Requested fields * @@ -2546,8 +2553,10 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * - extension_framework_enabled * - extension_load_url_enabled * - marketplace_auto_install_enabled + * - marketplace_automation * - marketplace_terms_accepted * - marketplace_enabled + * - marketplace_site * - onboarding_enabled * - privatelabel_configuration * - timezone @@ -2555,6 +2564,7 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * - email_domain_allowlist * - embed_cookieless_v2 * - embed_enabled + * - embed_config * * See the `Setting` type for more information on the specific values that can be configured. * 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 4c3026bc6..f919f77de 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 @@ */ /** - * 327 API models: 245 Spec, 0 Request, 60 Write, 22 Enum + * 329 API models: 247 Spec, 0 Request, 60 Write, 22 Enum */ @@ -2031,9 +2031,36 @@ data class EgressIpAddresses ( ) : Serializable /** - * @property session_length Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + * @property domain_allowlist List of domains to allow for embedding + * @property alert_url_allowlist List of base urls to allow for alert/schedule + * @property alert_url_param_owner Owner of who defines the alert/schedule params on the base url + * @property alert_url_label Label for the alert/schedule url + * @property sso_auth_enabled Is SSO embedding enabled for this Looker + * @property embed_cookieless_v2 Is Cookieless embedding enabled for this Looker + * @property embed_content_navigation Is embed content navigation enabled for this looker + * @property embed_content_management Is embed content management enabled for this Looker + * @property 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. + * @property look_filters When true, filters are enabled on embedded Looks + * @property hide_look_navigation When true, removes navigation to Looks from embedded dashboards and explores. + */ +data class EmbedConfig ( + var domain_allowlist: Array? = null, + var alert_url_allowlist: Array? = null, + var alert_url_param_owner: String? = null, + var alert_url_label: String? = null, + var sso_auth_enabled: Boolean? = null, + var embed_cookieless_v2: Boolean? = null, + var embed_content_navigation: Boolean? = null, + var embed_content_management: Boolean? = null, + var strict_sameorigin_for_login: Boolean? = null, + var look_filters: Boolean? = null, + var hide_look_navigation: Boolean? = null +) : Serializable + +/** + * @property 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). * @property 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. - * @property external_user_id A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + * @property external_user_id A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. * @property first_name First name of the embed user. Defaults to 'Embed' if not specified * @property last_name Last name of the embed user. Defaults to 'User' if not specified * @property user_timezone Sets the user timezone for the embed user session, if the User Specific Timezones setting is enabled in the Looker admin settings. A value of `null` forces the embed user to use the Looker Application Default Timezone. You MUST omit this property from the request if the User Specific Timezones setting is disabled. Timezone values are validated against the IANA Timezone standard and can be seen in the Application Time Zone dropdown list on the Looker General Settings admin page. @@ -2042,8 +2069,8 @@ data class EgressIpAddresses ( * @property group_ids List of Looker group ids in which to enroll the embed user * @property external_group_id A unique value identifying an embed-exclusive group. Multiple embed users using the same `external_group_id` value will be able to share Looker content with each other. Content and embed users associated with the `external_group_id` will not be accessible to normal Looker users or embed users not associated with this `external_group_id`. * @property user_attributes A dictionary of name-value pairs associating a Looker user attribute name with a value. - * @property session_reference_token Token referencing the embed session and is used to generate new authentication, navigation and api tokens. * @property 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. + * @property session_reference_token Token referencing the embed session and is used to generate new authentication, navigation and api tokens. */ data class EmbedCookielessSessionAcquire ( var session_length: Long? = null, @@ -2057,8 +2084,8 @@ data class EmbedCookielessSessionAcquire ( var group_ids: Array? = null, var external_group_id: String? = null, var user_attributes: Map? = null, - var session_reference_token: String? = null, - var embed_domain: String? = null + var embed_domain: String? = null, + var session_reference_token: String? = null ) : Serializable /** @@ -2112,7 +2139,7 @@ data class EmbedCookielessSessionGenerateTokensResponse ( /** * @property target_url The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. - * @property session_length Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + * @property 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). * @property 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. */ data class EmbedParams ( @@ -2142,9 +2169,9 @@ data class EmbedSecret ( /** * @property target_url The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. - * @property session_length Number of seconds the SSO embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). + * @property 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). * @property 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. - * @property external_user_id A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. + * @property external_user_id A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. * @property first_name First name of the embed user. Defaults to 'Embed' if not specified * @property last_name Last name of the embed user. Defaults to 'User' if not specified * @property user_timezone Sets the user timezone for the embed user session, if the User Specific Timezones setting is enabled in the Looker admin settings. A value of `null` forces the embed user to use the Looker Application Default Timezone. You MUST omit this property from the request if the User Specific Timezones setting is disabled. Timezone values are validated against the IANA Timezone standard and can be seen in the Application Time Zone dropdown list on the Looker General Settings admin page. @@ -2154,6 +2181,7 @@ data class EmbedSecret ( * @property external_group_id A unique value identifying an embed-exclusive group. Multiple embed users using the same `external_group_id` value will be able to share Looker content with each other. Content and embed users associated with the `external_group_id` will not be accessible to normal Looker users or embed users not associated with this `external_group_id`. * @property user_attributes A dictionary of name-value pairs associating a Looker user attribute name with a value. * @property 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. + * @property 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 */ data class EmbedSsoParams ( var target_url: String, @@ -2168,7 +2196,8 @@ data class EmbedSsoParams ( var group_ids: Array? = null, var external_group_id: String? = null, var user_attributes: Map? = null, - var secret_id: String? = null + var secret_id: String? = null, + var embed_domain: String? = null ) : Serializable /** @@ -3660,6 +3689,17 @@ data class Manifest ( var localization_settings: LocalizationSettings? = null ) : Serializable +/** + * @property install_enabled Whether marketplace auto installation is enabled + * @property update_looker_enabled Whether marketplace auto update is enabled for looker extensions + * @property update_third_party_enabled Whether marketplace auto update is enabled for third party extensions + */ +data class MarketplaceAutomation ( + var install_enabled: Boolean? = null, + var update_looker_enabled: Boolean? = null, + var update_third_party_enabled: Boolean? = null +) : Serializable + /** * @property materialization_id The ID of the enqueued materialization task (read-only) * @property resp_text Detailed response in text format (read-only) @@ -4956,9 +4996,11 @@ data class SessionConfig ( /** * @property extension_framework_enabled Toggle extension framework on or off - * @property extension_load_url_enabled (DEPRECATED) Toggle extension extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. - * @property marketplace_auto_install_enabled Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled. + * @property 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. + * @property 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 + * @property marketplace_automation * @property marketplace_enabled Toggle marketplace on or off + * @property marketplace_site Location of Looker marketplace CDN (read-only) * @property 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. * @property privatelabel_configuration * @property custom_welcome_email @@ -4969,14 +5011,17 @@ data class SessionConfig ( * @property host_url Change the base portion of your Looker instance URL setting * @property 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. * @property email_domain_allowlist An array of Email Domain Allowlist of type string for Scheduled Content - * @property embed_cookieless_v2 Toggle cookieless embed setting + * @property embed_cookieless_v2 (DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value. * @property embed_enabled True if embedding is enabled https://cloud.google.com/looker/docs/r/looker-core-feature-embed, false otherwise (read-only) + * @property embed_config */ data class Setting ( var extension_framework_enabled: Boolean? = null, var extension_load_url_enabled: Boolean? = null, var marketplace_auto_install_enabled: Boolean? = null, + var marketplace_automation: MarketplaceAutomation? = null, var marketplace_enabled: Boolean? = null, + var marketplace_site: String? = null, var marketplace_terms_accepted: Boolean? = null, var privatelabel_configuration: PrivatelabelConfiguration? = null, var custom_welcome_email: CustomWelcomeEmail? = null, @@ -4988,7 +5033,8 @@ data class Setting ( var override_warnings: Boolean? = null, var email_domain_allowlist: Array? = null, var embed_cookieless_v2: Boolean? = null, - var embed_enabled: Boolean? = null + var embed_enabled: Boolean? = null, + var embed_config: EmbedConfig? = null ) : Serializable /** @@ -7014,11 +7060,12 @@ data class WriteSessionConfig ( /** * Dynamic writeable type for Setting removes: - * embed_enabled + * marketplace_site, embed_enabled * * @property extension_framework_enabled Toggle extension framework on or off - * @property extension_load_url_enabled (DEPRECATED) Toggle extension extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. - * @property marketplace_auto_install_enabled Toggle marketplace auto install on or off. Note that auto install only runs if marketplace is enabled. + * @property 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. + * @property 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 + * @property marketplace_automation * @property marketplace_enabled Toggle marketplace on or off * @property 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. * @property privatelabel_configuration Dynamic writeable type for PrivatelabelConfiguration removes: @@ -7031,12 +7078,14 @@ data class WriteSessionConfig ( * @property host_url Change the base portion of your Looker instance URL setting * @property 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. * @property email_domain_allowlist An array of Email Domain Allowlist of type string for Scheduled Content - * @property embed_cookieless_v2 Toggle cookieless embed setting + * @property embed_cookieless_v2 (DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value. + * @property embed_config */ data class WriteSetting ( var extension_framework_enabled: Boolean? = null, var extension_load_url_enabled: Boolean? = null, var marketplace_auto_install_enabled: Boolean? = null, + var marketplace_automation: MarketplaceAutomation? = null, var marketplace_enabled: Boolean? = null, var marketplace_terms_accepted: Boolean? = null, var privatelabel_configuration: WritePrivatelabelConfiguration? = null, @@ -7048,7 +7097,8 @@ data class WriteSetting ( var host_url: String? = null, var override_warnings: Boolean? = null, var email_domain_allowlist: Array? = null, - var embed_cookieless_v2: Boolean? = null + var embed_cookieless_v2: Boolean? = null, + var embed_config: EmbedConfig? = null ) : Serializable /** 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 4b0ff0b81..f8949d669 100644 --- a/kotlin/src/main/com/looker/sdk/4.0/streams.kt +++ b/kotlin/src/main/com/looker/sdk/4.0/streams.kt @@ -651,35 +651,39 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { /** - * ### Create SSO Embed URL + * ### Create Signed Embed URL * - * Creates an SSO embed URL and cryptographically signs it with an embed secret. + * Creates a signed embed URL and cryptographically signs it with an embed secret. * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to this URL - any change may invalidate the signature and + * Do not make any modifications to the returned URL - any change may invalidate the signature and * cause the URL to fail to load a Looker embed session. * - * A signed SSO embed URL can only be used once. After it has been used to request a page from the - * Looker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent * 'replay attacks'. * * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, - * copy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. * - * Permissions for the embed user are defined by the groups in which the embed user is a member (group_ids property) + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the group_ids property, or both the models and permissions properties. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. * - * The embed user's access is the union of permissions granted by the group_ids, models, and permissions properties. + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. * * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * SSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. * * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the newest active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. * * #### Security Note * Protect this signed URL as you would an access token or password credentials - do not write @@ -839,7 +843,7 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * LDAP is enabled or disabled for Looker using the **enabled** field. * @@ -920,9 +924,9 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { /** * ### Test the connection authentication settings for an LDAP configuration. * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. * * Example: * ```json @@ -935,7 +939,7 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * } * ``` * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * The active LDAP settings are not modified. * @@ -955,9 +959,9 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { /** * ### Test the user authentication settings for an LDAP configuration without authenticating the user. * - * This test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user. + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. * - * This test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server. + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. * * **test_ldap_user** is required. * @@ -979,9 +983,9 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { /** * ### Test the user authentication settings for an LDAP configuration. * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * * **test_ldap_user** and **test_ldap_password** are required. * @@ -1241,7 +1245,7 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * OIDC is enabled or disabled for Looker using the **enabled** field. * @@ -1384,7 +1388,7 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * * Configuring SAML impacts authentication for all users. This configuration should be done carefully. * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * * SAML is enabled or disabled for Looker using the **enabled** field. * @@ -2513,8 +2517,10 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * - extension_framework_enabled * - extension_load_url_enabled * - marketplace_auto_install_enabled + * - marketplace_automation * - marketplace_terms_accepted * - marketplace_enabled + * - marketplace_site * - onboarding_enabled * - privatelabel_configuration * - timezone @@ -2522,6 +2528,7 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * - email_domain_allowlist * - embed_cookieless_v2 * - embed_enabled + * - embed_config * * @param {String} fields Requested fields * @@ -2545,8 +2552,10 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * - extension_framework_enabled * - extension_load_url_enabled * - marketplace_auto_install_enabled + * - marketplace_automation * - marketplace_terms_accepted * - marketplace_enabled + * - marketplace_site * - onboarding_enabled * - privatelabel_configuration * - timezone @@ -2554,6 +2563,7 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * - email_domain_allowlist * - embed_cookieless_v2 * - embed_enabled + * - embed_config * * See the `Setting` type for more information on the specific values that can be configured. * diff --git a/kotlin/src/main/com/looker/sdk/Constants.kt b/kotlin/src/main/com/looker/sdk/Constants.kt index d5dc3ad76..257b160ec 100644 --- a/kotlin/src/main/com/looker/sdk/Constants.kt +++ b/kotlin/src/main/com/looker/sdk/Constants.kt @@ -29,6 +29,6 @@ package com.looker.sdk const val ENVIRONMENT_PREFIX = "LOOKERSDK" const val SDK_TAG = "KT-SDK" const val LOOKER_VERSION = "23.14" -const val API_VERSION = "3.1" +const val API_VERSION = "4.0" const val AGENT_TAG = "$SDK_TAG $LOOKER_VERSION" const val LOOKER_APPID = "x-looker-appid" diff --git a/swift/looker/rtl/constants.swift b/swift/looker/rtl/constants.swift index 16bbdc82d..824ea57b0 100644 --- a/swift/looker/rtl/constants.swift +++ b/swift/looker/rtl/constants.swift @@ -52,7 +52,7 @@ extension String { public struct Constants { public static let lookerVersion = "23.14" - public static let apiVersion = "3.1" + public static let apiVersion = "4.0" public static let defaultApiVersion = "4.0" // Swift requires API 4.0 public static let sdkVersion = #"\#(apiVersion).\#(lookerVersion)"# public static let environmentPrefix = "LOOKERSDK" diff --git a/swift/looker/sdk/methods.swift b/swift/looker/sdk/methods.swift index 04d6c0ca5..3428977d4 100644 --- a/swift/looker/sdk/methods.swift +++ b/swift/looker/sdk/methods.swift @@ -25,11 +25,11 @@ */ /** - * 382 API methods + * 461 API methods */ -/// NOTE: Do not edit this file generated by Looker SDK Codegen for API 3.1 +/// NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0 import Foundation @@ -38,6 +38,289 @@ open class LookerSDK: APIMethods { public lazy var stream = LookerSDKStream(authSession) + // MARK Alert: Alert + + /** + * Follow an alert. + * + * POST /alerts/{alert_id}/follow -> Voidable + */ + public func follow_alert( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.post("/alerts/\(path_alert_id)/follow", nil, nil, options) + return result + } + + /** + * Unfollow an alert. + * + * DELETE /alerts/{alert_id}/follow -> Voidable + */ + public func unfollow_alert( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.delete("/alerts/\(path_alert_id)/follow", nil, nil, options) + return result + } + + /** + * ### Search Alerts + * + * GET /alerts/search -> [Alert] + */ + public func search_alerts( + /** + * @param {Int64} limit (Optional) Number of results to return (used with `offset`). + */ + limit: Int64? = nil, + /** + * @param {Int64} offset (Optional) Number of results to skip before returning any (used with `limit`). + */ + offset: Int64? = nil, + /** + * @param {String} group_by (Optional) Dimension by which to order the results(`dashboard` | `owner`) + */ + group_by: String? = nil, + /** + * @param {String} fields (Optional) Requested fields. + */ + fields: String? = nil, + /** + * @param {Bool} disabled (Optional) Filter on returning only enabled or disabled alerts. + */ + disabled: Bool? = nil, + /** + * @param {String} frequency (Optional) Filter on alert frequency, such as: monthly, weekly, daily, hourly, minutes + */ + frequency: String? = nil, + /** + * @param {Bool} condition_met (Optional) Filter on whether the alert has met its condition when it last executed + */ + condition_met: Bool? = nil, + /** + * @param {String} last_run_start (Optional) Filter on the start range of the last time the alerts were run. Example: 2021-01-01T01:01:01-08:00. + */ + last_run_start: String? = nil, + /** + * @param {String} last_run_end (Optional) Filter on the start range of the last time the alerts were run. Example: 2021-01-01T01:01:01-08:00. + */ + last_run_end: String? = nil, + /** + * @param {Bool} all_owners (Admin only) (Optional) Filter for all owners. + */ + all_owners: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[Alert], SDKError> { + let result: SDKResponse<[Alert], SDKError> = self.get("/alerts/search", + ["limit": limit, "offset": offset, "group_by": group_by, "fields": fields, "disabled": disabled as Any?, "frequency": frequency, "condition_met": condition_met as Any?, "last_run_start": last_run_start, "last_run_end": last_run_end, "all_owners": all_owners as Any?], nil, options) + return result + } + + /** + * ### Get an alert by a given alert ID + * + * GET /alerts/{alert_id} -> Alert + */ + public func get_alert( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.get("/alerts/\(path_alert_id)", nil, nil, options) + return result + } + + /** + * ### Update an alert + * # Required fields: `owner_id`, `field`, `destinations`, `comparison_type`, `threshold`, `cron` + * # + * + * PUT /alerts/{alert_id} -> Alert + */ + public func update_alert( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + /** + * @param {WriteAlert} body + */ + _ body: WriteAlert, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.put("/alerts/\(path_alert_id)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Update select alert fields + * # Available fields: `owner_id`, `is_disabled`, `disabled_reason`, `is_public`, `threshold` + * # + * + * PATCH /alerts/{alert_id} -> Alert + */ + public func update_alert_field( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + /** + * @param {AlertPatch} body + */ + _ body: AlertPatch, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.patch("/alerts/\(path_alert_id)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Delete an alert by a given alert ID + * + * DELETE /alerts/{alert_id} -> Voidable + */ + public func delete_alert( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.delete("/alerts/\(path_alert_id)", nil, nil, options) + return result + } + + /** + * ### Create a new alert and return details of the newly created object + * + * Required fields: `field`, `destinations`, `comparison_type`, `threshold`, `cron` + * + * Example Request: + * Run alert on dashboard element '103' at 5am every day. Send an email to 'test@test.com' if inventory for Los Angeles (using dashboard filter `Warehouse Name`) is lower than 1,000 + * ``` + * { + * "cron": "0 5 * * *", + * "custom_title": "Alert when LA inventory is low", + * "dashboard_element_id": 103, + * "applied_dashboard_filters": [ + * { + * "filter_title": "Warehouse Name", + * "field_name": "distribution_centers.name", + * "filter_value": "Los Angeles CA", + * "filter_description": "is Los Angeles CA" + * } + * ], + * "comparison_type": "LESS_THAN", + * "destinations": [ + * { + * "destination_type": "EMAIL", + * "email_address": "test@test.com" + * } + * ], + * "field": { + * "title": "Number on Hand", + * "name": "inventory_items.number_on_hand" + * }, + * "is_disabled": false, + * "is_public": true, + * "threshold": 1000 + * } + * ``` + * + * POST /alerts -> Alert + */ + public func create_alert( + /** + * @param {WriteAlert} body + */ + _ body: WriteAlert, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/alerts", nil, try! self.encode(body), options) + return result + } + + /** + * ### Enqueue an Alert by ID + * + * POST /alerts/{alert_id}/enqueue -> Voidable + */ + public func enqueue_alert( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + /** + * @param {Bool} force Whether to enqueue an alert again if its already running. + */ + force: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.post("/alerts/\(path_alert_id)/enqueue", + ["force": force as Any?], nil, options) + return result + } + + /** + * # Alert Notifications. + * The endpoint returns all the alert notifications received by the user on email in the past 7 days. It also returns whether the notifications have been read by the user. + * + * GET /alert_notifications -> [AlertNotifications] + */ + public func alert_notifications( + /** + * @param {Int64} limit (Optional) Number of results to return (used with `offset`). + */ + limit: Int64? = nil, + /** + * @param {Int64} offset (Optional) Number of results to skip before returning any (used with `limit`). + */ + offset: Int64? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[AlertNotifications], SDKError> { + let result: SDKResponse<[AlertNotifications], SDKError> = self.get("/alert_notifications", + ["limit": limit, "offset": offset], nil, options) + return result + } + + /** + * # Reads a Notification + * The endpoint marks a given alert notification as read by the user, in case it wasn't already read. The AlertNotification model is updated for this purpose. It returns the notification as a response. + * + * PATCH /alert_notifications/{alert_notification_id} -> AlertNotifications + */ + public func read_alert_notification( + /** + * @param {String} alert_notification_id ID of a notification + */ + _ alert_notification_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_notification_id = encodeParam(alert_notification_id) + let result: SDKResponse = self.patch("/alert_notifications/\(path_alert_notification_id)", nil, nil, options) + return result + } + + + // MARK ApiAuth: API Authentication /** @@ -112,9 +395,9 @@ open class LookerSDK: APIMethods { */ public func login_user( /** - * @param {Int64} user_id Id of user. + * @param {String} user_id Id of user. */ - _ user_id: Int64, + _ user_id: String, /** * @param {Bool} associative When true (default), API calls using the returned access_token are attributed to the admin user who created the access_token. When false, API activity is attributed to the user the access_token runs as. False requires a looker license. */ @@ -141,1950 +424,3666 @@ open class LookerSDK: APIMethods { - // MARK Auth: Manage User Authentication Configuration + // MARK Artifact: Artifact Storage /** - * ### Create Signed Embed URL - * - * Creates a signed embed URL and cryptographically signs it with an embed secret. - * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to the returned URL - any change may invalidate the signature and - * cause the URL to fail to load a Looker embed session. - * - * A signed embed URL can only be **used once**. After the URL has been used to request a page from the - * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent - * 'replay attacks'. - * - * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. - * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option - * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. - * - * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) - * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. - * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. - * - * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. - * - * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. - * - * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. - * - * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, - * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. - * - * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. - * - * #### Security Note - * Protect this signed URL as you would an access token or password credentials - do not write - * it to disk, do not pass it to a third party, and only pass it through a secure HTTPS - * encrypted transport. + * Get the maximum configured size of the entire artifact store, and the currently used storage in bytes. * + * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled - * - * POST /embed/sso_url -> EmbedUrlResponse + * GET /artifact/usage -> ArtifactUsage */ - public func create_sso_embed_url( + public func artifact_usage( /** - * @param {EmbedSsoParams} body + * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields */ - _ body: EmbedSsoParams, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/embed/sso_url", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/artifact/usage", + ["fields": fields], nil, options) return result } /** - * ### Get the LDAP configuration. - * - * Looker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server. - * LDAP setup requires coordination with an administrator of that directory server. - * - * Only Looker administrators can read and update the LDAP configuration. - * - * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. - * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). - * - * LDAP is enabled or disabled for Looker using the **enabled** field. - * - * Looker will never return an **auth_password** field. That value can be set, but never retrieved. - * - * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. + * Get all artifact namespaces and the count of artifacts in each namespace * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * GET /ldap_config -> LDAPConfig + * GET /artifact/namespaces -> [ArtifactNamespace] */ - public func ldap_config( + public func artifact_namespaces( + /** + * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields + */ + fields: String? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit) + */ + offset: Int64? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/ldap_config", nil, nil, options) + ) -> SDKResponse<[ArtifactNamespace], SDKError> { + let result: SDKResponse<[ArtifactNamespace], SDKError> = self.get("/artifact/namespaces", + ["fields": fields, "limit": limit, "offset": offset], nil, options) return result } /** - * ### Update the LDAP configuration. - * - * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. - * - * Only Looker administrators can read and update the LDAP configuration. + * ### Return the value of an artifact * - * LDAP is enabled or disabled for Looker using the **enabled** field. + * The MIME type for the API response is set to the `content_type` of the value * - * It is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally. + * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. + * GET /artifact/{namespace}/value -> String + */ + public func artifact_value( + /** + * @param {String} namespace Artifact storage namespace + */ + _ namespace: String, + /** + * @param {String} key Artifact storage key. Namespace + Key must be unique + */ + key: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_namespace = encodeParam(namespace) + let result: SDKResponse = self.get("/artifact/\(path_namespace)/value", + ["key": key], nil, options) + return result + } + + /** + * Remove *all* artifacts from a namespace. Purged artifacts are permanently deleted * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * PATCH /ldap_config -> LDAPConfig + * DELETE /artifact/{namespace}/purge -> Voidable */ - public func update_ldap_config( + public func purge_artifacts( /** - * @param {WriteLDAPConfig} body + * @param {String} namespace Artifact storage namespace */ - _ body: WriteLDAPConfig, + _ namespace: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/ldap_config", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_namespace = encodeParam(namespace) + let result: SDKResponse = self.delete("/artifact/\(path_namespace)/purge", nil, nil, options) return result } /** - * ### Test the connection settings for an LDAP configuration. + * ### Search all key/value pairs in a namespace for matching criteria. * - * This tests that the connection is possible given a connection_host and connection_port. + * Returns an array of artifacts matching the specified search criteria. * - * **connection_host** and **connection_port** are required. **connection_tls** is optional. + * Key search patterns use case-insensitive matching and can contain `%` and `_` as SQL LIKE pattern match wildcard expressions. * - * Example: - * ```json - * { - * "connection_host": "ldap.example.com", - * "connection_port": "636", - * "connection_tls": true - * } - * ``` + * The parameters `min_size` and `max_size` can be used individually or together. * - * No authentication to the LDAP server is attempted. + * - `min_size` finds artifacts with sizes greater than or equal to its value + * - `max_size` finds artifacts with sizes less than or equal to its value + * - using both parameters restricts the minimum and maximum size range for artifacts * - * The active LDAP settings are not modified. + * **NOTE**: Artifacts are always returned in alphanumeric order by key. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Get a **single artifact** by namespace and key with [`artifact`](#!/Artifact/artifact) * - * PUT /ldap_config/test_connection -> LDAPConfigTestResult + * **Note**: The artifact storage API can only be used by Looker-built extensions. + * + * GET /artifact/{namespace}/search -> [Artifact] */ - public func test_ldap_config_connection( + public func search_artifacts( /** - * @param {WriteLDAPConfig} body + * @param {String} namespace Artifact storage namespace */ - _ body: WriteLDAPConfig, + _ namespace: String, + /** + * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields + */ + fields: String? = nil, + /** + * @param {String} key Key pattern to match + */ + key: String? = nil, + /** + * @param {String} user_ids Ids of users who created or updated the artifact (comma-delimited list) + */ + user_ids: String? = nil, + /** + * @param {Int64} min_size Minimum storage size of the artifact + */ + min_size: Int64? = nil, + /** + * @param {Int64} max_size Maximum storage size of the artifact + */ + max_size: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit) + */ + offset: Int64? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_connection", nil, try! self.encode(body), options) + ) -> SDKResponse<[Artifact], SDKError> { + let path_namespace = encodeParam(namespace) + let result: SDKResponse<[Artifact], SDKError> = self.get("/artifact/\(path_namespace)/search", + ["fields": fields, "key": key, "user_ids": user_ids, "min_size": min_size, "max_size": max_size, "limit": limit, "offset": offset], nil, options) return result } /** - * ### Test the connection authentication settings for an LDAP configuration. + * ### Get one or more artifacts * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. - * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + * Returns an array of artifacts matching the specified key value(s). * - * Example: - * ```json - * { - * "connection_host": "ldap.example.com", - * "connection_port": "636", - * "connection_tls": true, - * "auth_username": "cn=looker,dc=example,dc=com", - * "auth_password": "secret" - * } - * ``` + * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * GET /artifact/{namespace} -> [Artifact] + */ + public func artifact( + /** + * @param {String} namespace Artifact storage namespace + */ + _ namespace: String, + /** + * @param {String} key Comma-delimited list of keys. Wildcards not allowed. + */ + _ key: String, + /** + * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields + */ + fields: String? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit) + */ + offset: Int64? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[Artifact], SDKError> { + let path_namespace = encodeParam(namespace) + let result: SDKResponse<[Artifact], SDKError> = self.get("/artifact/\(path_namespace)", + ["key": key, "fields": fields, "limit": limit, "offset": offset], nil, options) + return result + } + + /** + * ### Delete one or more artifacts * - * The active LDAP settings are not modified. + * To avoid rate limiting on deletion requests, multiple artifacts can be deleted at the same time by using a comma-delimited list of artifact keys. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * PUT /ldap_config/test_auth -> LDAPConfigTestResult + * DELETE /artifact/{namespace} -> Voidable */ - public func test_ldap_config_auth( + public func delete_artifact( /** - * @param {WriteLDAPConfig} body + * @param {String} namespace Artifact storage namespace */ - _ body: WriteLDAPConfig, + _ namespace: String, + /** + * @param {String} key Comma-delimited list of keys. Wildcards not allowed. + */ + _ key: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_auth", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_namespace = encodeParam(namespace) + let result: SDKResponse = self.delete("/artifact/\(path_namespace)", + ["key": key], nil, options) return result } /** - * ### Test the user authentication settings for an LDAP configuration without authenticating the user. + * ### Create or update one or more artifacts * - * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. + * Only `key` and `value` are required to _create_ an artifact. + * To _update_ an artifact, its current `version` value must be provided. * - * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. + * In the following example `body` payload, `one` and `two` are existing artifacts, and `three` is new: * - * **test_ldap_user** is required. + * ```json + * [ + * { "key": "one", "value": "[ \"updating\", \"existing\", \"one\" ]", "version": 10, "content_type": "application/json" }, + * { "key": "two", "value": "updating existing two", "version": 20 }, + * { "key": "three", "value": "creating new three" }, + * ] + * ``` * - * The active LDAP settings are not modified. + * Notes for this body: * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * - The `value` for `key` **one** is a JSON payload, so a `content_type` override is needed. This override must be done **every** time a JSON value is set. + * - The `version` values for **one** and **two** mean they have been saved 10 and 20 times, respectively. + * - If `version` is **not** provided for an existing artifact, the entire request will be refused and a `Bad Request` response will be sent. + * - If `version` is provided for an artifact, it is only used for helping to prevent inadvertent data overwrites. It cannot be used to **set** the version of an artifact. The Looker server controls `version`. + * - We suggest encoding binary values as base64. Because the MIME content type for base64 is detected as plain text, also provide `content_type` to correctly indicate the value's type for retrieval and client-side processing. * - * PUT /ldap_config/test_user_info -> LDAPConfigTestResult + * Because artifacts are stored encrypted, the same value can be written multiple times (provided the correct `version` number is used). Looker does not examine any values stored in the artifact store, and only decrypts when sending artifacts back in an API response. + * + * **Note**: The artifact storage API can only be used by Looker-built extensions. + * + * PUT /artifacts/{namespace} -> [Artifact] */ - public func test_ldap_config_user_info( + public func update_artifacts( /** - * @param {WriteLDAPConfig} body + * @param {String} namespace Artifact storage namespace */ - _ body: WriteLDAPConfig, + _ namespace: String, + /** + * @param {[UpdateArtifact]} body + */ + _ body: [UpdateArtifact], + /** + * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_user_info", nil, try! self.encode(body), options) + ) -> SDKResponse<[Artifact], SDKError> { + let path_namespace = encodeParam(namespace) + let result: SDKResponse<[Artifact], SDKError> = self.put("/artifacts/\(path_namespace)", + ["fields": fields], try! self.encode(body), options) return result } + + + // MARK Auth: Manage User Authentication Configuration + /** - * ### Test the user authentication settings for an LDAP configuration. - * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * ### Create an embed secret using the specified information. * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * The value of the `secret` field will be set by Looker and returned. * - * **test_ldap_user** and **test_ldap_password** are required. + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled * - * The active LDAP settings are not modified. + * POST /embed_config/secrets -> EmbedSecret + */ + public func create_embed_secret( + /** + * @param {WriteEmbedSecret} body + */ + body: WriteEmbedSecret?, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/embed_config/secrets", nil, try! self.encode(body), options) + return result + } + + /** + * ### Delete an embed secret. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled * - * PUT /ldap_config/test_user_auth -> LDAPConfigTestResult + * DELETE /embed_config/secrets/{embed_secret_id} -> String */ - public func test_ldap_config_user_auth( + public func delete_embed_secret( /** - * @param {WriteLDAPConfig} body + * @param {String} embed_secret_id Id of Embed Secret */ - _ body: WriteLDAPConfig, + _ embed_secret_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_user_auth", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_embed_secret_id = encodeParam(embed_secret_id) + let result: SDKResponse = self.delete("/embed_config/secrets/\(path_embed_secret_id)", nil, nil, options) return result } /** - * ### Get the OIDC configuration. + * ### Create Signed Embed URL * - * Looker can be optionally configured to authenticate users against an OpenID Connect (OIDC) - * authentication server. OIDC setup requires coordination with an administrator of that server. + * Creates a signed embed URL and cryptographically signs it with an embed secret. + * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. + * Do not make any modifications to the returned URL - any change may invalidate the signature and + * cause the URL to fail to load a Looker embed session. * - * Only Looker administrators can read and update the OIDC configuration. + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent + * 'replay attacks'. * - * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. + * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. + * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) + * and the lists of models and permissions assigned to the embed user. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. + * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. * - * OIDC is enabled or disabled for Looker using the **enabled** field. + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. * - * GET /oidc_config -> OIDCConfig + * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. + * + * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. + * + * #### Security Note + * Protect this signed URL as you would an access token or password credentials - do not write + * it to disk, do not pass it to a third party, and only pass it through a secure HTTPS + * encrypted transport. + * + * + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * POST /embed/sso_url -> EmbedUrlResponse */ - public func oidc_config( + public func create_sso_embed_url( + /** + * @param {EmbedSsoParams} body + */ + _ body: EmbedSsoParams, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/oidc_config", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/embed/sso_url", nil, try! self.encode(body), options) return result } /** - * ### Update the OIDC configuration. + * ### Create an Embed URL * - * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. + * Creates an embed URL that runs as the Looker user making this API call. ("Embed as me") + * This embed URL can then be used to instantiate a Looker embed session in a + * "Powered by Looker" (PBL) web application. * - * Only Looker administrators can read and update the OIDC configuration. + * This is similar to Private Embedding (https://cloud.google.com/looker/docs/r/admin/embed/private-embed). Instead of + * of logging into the Web UI to authenticate, the user has already authenticated against the API to be able to + * make this call. However, unlike Private Embed where the user has access to any other part of the Looker UI, + * the embed web session created by requesting the EmbedUrlResponse.url in a browser only has access to + * content visible under the `/embed` context. * - * OIDC is enabled or disabled for Looker using the **enabled** field. + * An embed URL can only be used once, and must be used within 5 minutes of being created. After it + * has been used to request a page from the Looker server, the URL is invalid. Future requests using + * the same URL will fail. This is to prevent 'replay attacks'. * - * It is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally. + * The `target_url` property must be a complete URL of a Looker Embedded UI page - scheme, hostname, path starting with "/embed" and query params. + * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker Embed URL would look like `https://myname.looker.com/embed/dashboards/56?Date=1%20years`. + * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, + * copy the URL shown in the browser address bar, insert "/embed" after the host/port, and paste it into the `target_url` property as a quoted string value in this API request. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * #### Security Note + * Protect this signed URL as you would an access token or password credentials - do not write + * it to disk, do not pass it to a third party, and only pass it through a secure HTTPS + * encrypted transport. * - * PATCH /oidc_config -> OIDCConfig + * + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * POST /embed/token_url/me -> EmbedUrlResponse */ - public func update_oidc_config( + public func create_embed_url_as_me( /** - * @param {WriteOIDCConfig} body + * @param {EmbedParams} body */ - _ body: WriteOIDCConfig, + _ body: EmbedParams, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/oidc_config", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/embed/token_url/me", nil, try! self.encode(body), options) return result } /** - * ### Get a OIDC test configuration by test_slug. + * ### Acquire a cookieless embed session. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * The acquire session endpoint negates the need for signing the embed url and passing it as a parameter + * to the embed login. This endpoint accepts an embed user definition and creates or updates it. This is + * similar behavior to the embed SSO login as they both can create and update embed user data. * - * GET /oidc_test_configs/{test_slug} -> OIDCConfig + * The endpoint also accepts an optional `session_reference_token`. If present and the session has not expired + * and the credentials match the credentials for the embed session, a new authentication token will be + * generated. This allows the embed session to attach a new embedded IFRAME to the embed session. Note that + * the session is NOT extended in this scenario. In other words the session_length parameter is ignored. + * + * **IMPORTANT:** If the `session_reference_token` is provided and the session has NOT expired, the embed user + * is NOT updated. This is done for performance reasons and to support the embed SSO usecase where the + * first IFRAME created on a page uses a signed url and subsequently created IFRAMEs do not. + * + * If the `session_reference_token` is provided but the session has expired, the token will be ignored and a + * new embed session will be created. Note that the embed user definition will be updated in this scenario. + * + * If the credentials do not match the credentials associated with an exisiting session_reference_token, a + * 404 will be returned. + * + * The endpoint returns the following: + * - Authentication token - a token that is passed to `/embed/login` endpoint that creates or attaches to the + * embed session. This token can be used once and has a lifetime of 30 seconds. + * - Session reference token - a token that lives for the length of the session. This token is used to + * generate new api and navigation tokens OR create new embed IFRAMEs. + * - Api token - lives for 10 minutes. The Looker client will ask for this token once it is loaded into the + * iframe. + * - Navigation token - lives for 10 minutes. The Looker client will ask for this token once it is loaded into + * the iframe. + * + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * POST /embed/cookieless_session/acquire -> EmbedCookielessSessionAcquireResponse */ - public func oidc_test_config( + public func acquire_embed_cookieless_session( /** - * @param {String} test_slug Slug of test config + * @param {EmbedCookielessSessionAcquire} body */ - _ test_slug: String, + _ body: EmbedCookielessSessionAcquire, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.get("/oidc_test_configs/\(path_test_slug)", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/embed/cookieless_session/acquire", nil, try! self.encode(body), options) return result } /** - * ### Delete a OIDC test configuration. + * ### Delete cookieless embed session * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * This will delete the session associated with the given session reference token. Calling this endpoint will result + * in the session and session reference data being cleared from the system. This endpoint can be used to log an embed + * user out of the Looker instance. * - * DELETE /oidc_test_configs/{test_slug} -> String + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * DELETE /embed/cookieless_session/{session_reference_token} -> String */ - public func delete_oidc_test_config( + public func delete_embed_cookieless_session( /** - * @param {String} test_slug Slug of test config + * @param {String} session_reference_token Embed session reference token */ - _ test_slug: String, + _ session_reference_token: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.delete("/oidc_test_configs/\(path_test_slug)", nil, nil, options) + let path_session_reference_token = encodeParam(session_reference_token) + let result: SDKResponse = self.delete("/embed/cookieless_session/\(path_session_reference_token)", nil, nil, options) return result } /** - * ### Create a OIDC test configuration. + * ### Generate api and navigation tokens for a cookieless embed session * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * The generate tokens endpoint is used to create new tokens of type: + * - Api token. + * - Navigation token. + * The generate tokens endpoint should be called every time the Looker client asks for a token (except for the + * first time when the tokens returned by the acquire_session endpoint should be used). * - * POST /oidc_test_configs -> OIDCConfig + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * PUT /embed/cookieless_session/generate_tokens -> EmbedCookielessSessionGenerateTokensResponse */ - public func create_oidc_test_config( + public func generate_tokens_for_cookieless_session( /** - * @param {WriteOIDCConfig} body + * @param {EmbedCookielessSessionGenerateTokens} body */ - _ body: WriteOIDCConfig, + _ body: EmbedCookielessSessionGenerateTokens, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/oidc_test_configs", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/embed/cookieless_session/generate_tokens", nil, try! self.encode(body), options) return result } /** - * ### Get password config. + * ### Get the LDAP configuration. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Looker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server. + * LDAP setup requires coordination with an administrator of that directory server. * - * GET /password_config -> PasswordConfig - */ - public func password_config( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/password_config", nil, nil, options) + * Only Looker administrators can read and update the LDAP configuration. + * + * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. + * + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * + * LDAP is enabled or disabled for Looker using the **enabled** field. + * + * Looker will never return an **auth_password** field. That value can be set, but never retrieved. + * + * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /ldap_config -> LDAPConfig + */ + public func ldap_config( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/ldap_config", nil, nil, options) return result } /** - * ### Update password config. + * ### Update the LDAP configuration. + * + * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. + * + * Only Looker administrators can read and update the LDAP configuration. + * + * LDAP is enabled or disabled for Looker using the **enabled** field. + * + * It is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally. + * + * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PATCH /password_config -> PasswordConfig + * PATCH /ldap_config -> LDAPConfig */ - public func update_password_config( + public func update_ldap_config( /** - * @param {WritePasswordConfig} body + * @param {WriteLDAPConfig} body */ - _ body: WritePasswordConfig, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/password_config", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/ldap_config", nil, try! self.encode(body), options) return result } /** - * ### Force all credentials_email users to reset their login passwords upon their next login. + * ### Test the connection settings for an LDAP configuration. + * + * This tests that the connection is possible given a connection_host and connection_port. + * + * **connection_host** and **connection_port** are required. **connection_tls** is optional. + * + * Example: + * ```json + * { + * "connection_host": "ldap.example.com", + * "connection_port": "636", + * "connection_tls": true + * } + * ``` + * + * No authentication to the LDAP server is attempted. + * + * The active LDAP settings are not modified. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /password_config/force_password_reset_at_next_login_for_all_users -> String + * PUT /ldap_config/test_connection -> LDAPConfigTestResult */ - public func force_password_reset_at_next_login_for_all_users( + public func test_ldap_config_connection( + /** + * @param {WriteLDAPConfig} body + */ + _ body: WriteLDAPConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/password_config/force_password_reset_at_next_login_for_all_users", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/ldap_config/test_connection", nil, try! self.encode(body), options) return result } /** - * ### Get the SAML configuration. + * ### Test the connection authentication settings for an LDAP configuration. * - * Looker can be optionally configured to authenticate users against a SAML authentication server. - * SAML setup requires coordination with an administrator of that server. + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. * - * Only Looker administrators can read and update the SAML configuration. + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. * - * Configuring SAML impacts authentication for all users. This configuration should be done carefully. + * Example: + * ```json + * { + * "connection_host": "ldap.example.com", + * "connection_port": "636", + * "connection_tls": true, + * "auth_username": "cn=looker,dc=example,dc=com", + * "auth_password": "secret" + * } + * ``` * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. * - * SAML is enabled or disabled for Looker using the **enabled** field. + * The active LDAP settings are not modified. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /saml_config -> SamlConfig + * PUT /ldap_config/test_auth -> LDAPConfigTestResult */ - public func saml_config( + public func test_ldap_config_auth( + /** + * @param {WriteLDAPConfig} body + */ + _ body: WriteLDAPConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/saml_config", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/ldap_config/test_auth", nil, try! self.encode(body), options) return result } /** - * ### Update the SAML configuration. + * ### Test the user authentication settings for an LDAP configuration without authenticating the user. * - * Configuring SAML impacts authentication for all users. This configuration should be done carefully. + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. * - * Only Looker administrators can read and update the SAML configuration. + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. * - * SAML is enabled or disabled for Looker using the **enabled** field. + * **test_ldap_user** is required. * - * It is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally. + * The active LDAP settings are not modified. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PATCH /saml_config -> SamlConfig + * PUT /ldap_config/test_user_info -> LDAPConfigTestResult */ - public func update_saml_config( + public func test_ldap_config_user_info( /** - * @param {WriteSamlConfig} body + * @param {WriteLDAPConfig} body */ - _ body: WriteSamlConfig, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/saml_config", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/ldap_config/test_user_info", nil, try! self.encode(body), options) return result } /** - * ### Get a SAML test configuration by test_slug. + * ### Test the user authentication settings for an LDAP configuration. + * + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * + * **test_ldap_user** and **test_ldap_password** are required. + * + * The active LDAP settings are not modified. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /saml_test_configs/{test_slug} -> SamlConfig + * PUT /ldap_config/test_user_auth -> LDAPConfigTestResult */ - public func saml_test_config( + public func test_ldap_config_user_auth( /** - * @param {String} test_slug Slug of test config + * @param {WriteLDAPConfig} body */ - _ test_slug: String, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.get("/saml_test_configs/\(path_test_slug)", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/ldap_config/test_user_auth", nil, try! self.encode(body), options) return result } /** - * ### Delete a SAML test configuration. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Registers a mobile device. + * # Required fields: [:device_token, :device_type] * - * DELETE /saml_test_configs/{test_slug} -> String + * POST /mobile/device -> MobileToken */ - public func delete_saml_test_config( + public func register_mobile_device( /** - * @param {String} test_slug Slug of test config + * @param {WriteMobileToken} body */ - _ test_slug: String, + _ body: WriteMobileToken, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.delete("/saml_test_configs/\(path_test_slug)", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/mobile/device", nil, try! self.encode(body), options) return result } /** - * ### Create a SAML test configuration. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Updates the mobile device registration * - * POST /saml_test_configs -> SamlConfig + * PATCH /mobile/device/{device_id} -> MobileToken */ - public func create_saml_test_config( + public func update_mobile_device_registration( /** - * @param {WriteSamlConfig} body + * @param {String} device_id Unique id of the device. */ - _ body: WriteSamlConfig, + _ device_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/saml_test_configs", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_device_id = encodeParam(device_id) + let result: SDKResponse = self.patch("/mobile/device/\(path_device_id)", nil, nil, options) return result } /** - * ### Parse the given xml as a SAML IdP metadata document and return the result. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Deregister a mobile device. * - * POST /parse_saml_idp_metadata -> SamlMetadataParseResult + * DELETE /mobile/device/{device_id} -> Voidable */ - public func parse_saml_idp_metadata( + public func deregister_mobile_device( /** - * @param {String} body + * @param {String} device_id Unique id of the device. */ - _ body: String, + _ device_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/parse_saml_idp_metadata", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_device_id = encodeParam(device_id) + let result: SDKResponse = self.delete("/mobile/device/\(path_device_id)", nil, nil, options) return result } /** - * ### Fetch the given url and parse it as a SAML IdP metadata document and return the result. - * Note that this requires that the url be public or at least at a location where the Looker instance - * can fetch it without requiring any special authentication. + * ### List All OAuth Client Apps * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Lists all applications registered to use OAuth2 login with this Looker instance, including + * enabled and disabled apps. * - * POST /fetch_and_parse_saml_idp_metadata -> SamlMetadataParseResult + * Results are filtered to include only the apps that the caller (current user) + * has permission to see. + * + * GET /oauth_client_apps -> [OauthClientApp] */ - public func fetch_and_parse_saml_idp_metadata( + public func all_oauth_client_apps( /** - * @param {String} body + * @param {String} fields Requested fields. */ - _ body: String, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/fetch_and_parse_saml_idp_metadata", nil, try! self.encode(body), options) + ) -> SDKResponse<[OauthClientApp], SDKError> { + let result: SDKResponse<[OauthClientApp], SDKError> = self.get("/oauth_client_apps", + ["fields": fields], nil, options) return result } /** - * ### Get session config. + * ### Get Oauth Client App * - * GET /session_config -> SessionConfig + * Returns the registered app client with matching client_guid. + * + * GET /oauth_client_apps/{client_guid} -> OauthClientApp */ - public func session_config( + public func oauth_client_app( + /** + * @param {String} client_guid The unique id of this application + */ + _ client_guid: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/session_config", nil, nil, options) + ) -> SDKResponse { + let path_client_guid = encodeParam(client_guid) + let result: SDKResponse = self.get("/oauth_client_apps/\(path_client_guid)", + ["fields": fields], nil, options) return result } /** - * ### Update session config. + * ### Register an OAuth2 Client App * - * PATCH /session_config -> SessionConfig + * Registers details identifying an external web app or native app as an OAuth2 login client of the Looker instance. + * The app registration must provide a unique client_guid and redirect_uri that the app will present + * in OAuth login requests. If the client_guid and redirect_uri parameters in the login request do not match + * the app details registered with the Looker instance, the request is assumed to be a forgery and is rejected. + * + * POST /oauth_client_apps/{client_guid} -> OauthClientApp */ - public func update_session_config( + public func register_oauth_client_app( /** - * @param {WriteSessionConfig} body + * @param {String} client_guid The unique id of this application */ - _ body: WriteSessionConfig, + _ client_guid: String, + /** + * @param {WriteOauthClientApp} body + */ + _ body: WriteOauthClientApp, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/session_config", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_client_guid = encodeParam(client_guid) + let result: SDKResponse = self.post("/oauth_client_apps/\(path_client_guid)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Get currently locked-out users. + * ### Update OAuth2 Client App Details * - * GET /user_login_lockouts -> [UserLoginLockout] + * Modifies the details a previously registered OAuth2 login client app. + * + * PATCH /oauth_client_apps/{client_guid} -> OauthClientApp */ - public func all_user_login_lockouts( + public func update_oauth_client_app( /** - * @param {String} fields Include only these fields in the response + * @param {String} client_guid The unique id of this application + */ + _ client_guid: String, + /** + * @param {WriteOauthClientApp} body + */ + _ body: WriteOauthClientApp, + /** + * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[UserLoginLockout], SDKError> { - let result: SDKResponse<[UserLoginLockout], SDKError> = self.get("/user_login_lockouts", - ["fields": fields], nil, options) + ) -> SDKResponse { + let path_client_guid = encodeParam(client_guid) + let result: SDKResponse = self.patch("/oauth_client_apps/\(path_client_guid)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Search currently locked-out users. + * ### Delete OAuth Client App * - * GET /user_login_lockouts/search -> [UserLoginLockout] + * Deletes the registration info of the app with the matching client_guid. + * All active sessions and tokens issued for this app will immediately become invalid. + * + * As with most REST DELETE operations, this endpoint does not return an error if the + * indicated resource does not exist. + * + * ### Note: this deletion cannot be undone. + * + * DELETE /oauth_client_apps/{client_guid} -> String */ - public func search_user_login_lockouts( + public func delete_oauth_client_app( /** - * @param {String} fields Include only these fields in the response + * @param {String} client_guid The unique id of this application */ - fields: String? = nil, + _ client_guid: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_client_guid = encodeParam(client_guid) + let result: SDKResponse = self.delete("/oauth_client_apps/\(path_client_guid)", nil, nil, options) + return result + } + + /** + * ### Invalidate All Issued Tokens + * + * Immediately invalidates all auth codes, sessions, access tokens and refresh tokens issued for + * this app for ALL USERS of this app. + * + * DELETE /oauth_client_apps/{client_guid}/tokens -> String + */ + public func invalidate_tokens( /** - * @param {Int64} page Return only page N of paginated results + * @param {String} client_guid The unique id of the application */ - page: Int64? = nil, - /** - * @param {Int64} per_page Return N rows of data per page - */ - per_page: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {String} auth_type Auth type user is locked out for (email, ldap, totp, api) - */ - auth_type: String? = nil, - /** - * @param {String} full_name Match name - */ - full_name: String? = nil, - /** - * @param {String} email Match email - */ - email: String? = nil, - /** - * @param {String} remote_id Match remote LDAP ID - */ - remote_id: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, + _ client_guid: String, options: ITransportSettings? = nil - ) -> SDKResponse<[UserLoginLockout], SDKError> { - let result: SDKResponse<[UserLoginLockout], SDKError> = self.get("/user_login_lockouts/search", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "auth_type": auth_type, "full_name": full_name, "email": email, "remote_id": remote_id, "filter_or": filter_or as Any?], nil, options) + ) -> SDKResponse { + let path_client_guid = encodeParam(client_guid) + let result: SDKResponse = self.delete("/oauth_client_apps/\(path_client_guid)/tokens", nil, nil, options) return result } /** - * ### Removes login lockout for the associated user. + * ### Activate an app for a user * - * DELETE /user_login_lockout/{key} -> String + * Activates a user for a given oauth client app. This indicates the user has been informed that + * the app will have access to the user's looker data, and that the user has accepted and allowed + * the app to use their Looker account. + * + * Activating a user for an app that the user is already activated with returns a success response. + * + * POST /oauth_client_apps/{client_guid}/users/{user_id} -> String */ - public func delete_user_login_lockout( + public func activate_app_user( /** - * @param {String} key The key associated with the locked user + * @param {String} client_guid The unique id of this application */ - _ key: String, + _ client_guid: String, + /** + * @param {String} user_id The id of the user to enable use of this app + */ + _ user_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_key = encodeParam(key) - let result: SDKResponse = self.delete("/user_login_lockout/\(path_key)", nil, nil, options) + let path_client_guid = encodeParam(client_guid) + let path_user_id = encodeParam(user_id) + let result: SDKResponse = self.post("/oauth_client_apps/\(path_client_guid)/users/\(path_user_id)", + ["fields": fields], nil, options) return result } - - - // MARK ColorCollection: Manage Color Collections - /** - * ### Get an array of all existing Color Collections - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) + * ### Deactivate an app for a user * - * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) + * Deactivate a user for a given oauth client app. All tokens issued to the app for + * this user will be invalid immediately. Before the user can use the app with their + * Looker account, the user will have to read and accept an account use disclosure statement for the app. * - * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * Admin users can deactivate other users, but non-admin users can only deactivate themselves. * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * As with most REST DELETE operations, this endpoint does not return an error if the indicated + * resource (app or user) does not exist or has already been deactivated. * - * GET /color_collections -> [ColorCollection] + * DELETE /oauth_client_apps/{client_guid}/users/{user_id} -> String */ - public func all_color_collections( + public func deactivate_app_user( + /** + * @param {String} client_guid The unique id of this application + */ + _ client_guid: String, + /** + * @param {String} user_id The id of the user to enable use of this app + */ + _ user_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[ColorCollection], SDKError> { - let result: SDKResponse<[ColorCollection], SDKError> = self.get("/color_collections", + ) -> SDKResponse { + let path_client_guid = encodeParam(client_guid) + let path_user_id = encodeParam(user_id) + let result: SDKResponse = self.delete("/oauth_client_apps/\(path_client_guid)/users/\(path_user_id)", ["fields": fields], nil, options) return result } /** - * ### Create a custom color collection with the specified information + * ### Get the OIDC configuration. * - * Creates a new custom color collection object, returning the details, including the created id. + * Looker can be optionally configured to authenticate users against an OpenID Connect (OIDC) + * authentication server. OIDC setup requires coordination with an administrator of that server. * - * **Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection) + * Only Looker administrators can read and update the OIDC configuration. * - * **Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection) + * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). * - * POST /color_collections -> ColorCollection + * OIDC is enabled or disabled for Looker using the **enabled** field. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /oidc_config -> OIDCConfig */ - public func create_color_collection( - /** - * @param {WriteColorCollection} body - */ - _ body: WriteColorCollection, + public func oidc_config( options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/color_collections", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/oidc_config", nil, nil, options) return result } /** - * ### Get an array of all existing **Custom** Color Collections - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) + * ### Update the OIDC configuration. * - * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) + * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Only Looker administrators can read and update the OIDC configuration. * - * GET /color_collections/custom -> [ColorCollection] + * OIDC is enabled or disabled for Looker using the **enabled** field. + * + * It is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * PATCH /oidc_config -> OIDCConfig */ - public func color_collections_custom( + public func update_oidc_config( /** - * @param {String} fields Requested fields. + * @param {WriteOIDCConfig} body */ - fields: String? = nil, + _ body: WriteOIDCConfig, options: ITransportSettings? = nil - ) -> SDKResponse<[ColorCollection], SDKError> { - let result: SDKResponse<[ColorCollection], SDKError> = self.get("/color_collections/custom", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/oidc_config", nil, try! self.encode(body), options) return result } /** - * ### Get an array of all existing **Standard** Color Collections - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) - * - * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * ### Get a OIDC test configuration by test_slug. * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /color_collections/standard -> [ColorCollection] + * GET /oidc_test_configs/{test_slug} -> OIDCConfig */ - public func color_collections_standard( + public func oidc_test_config( /** - * @param {String} fields Requested fields. + * @param {String} test_slug Slug of test config */ - fields: String? = nil, + _ test_slug: String, options: ITransportSettings? = nil - ) -> SDKResponse<[ColorCollection], SDKError> { - let result: SDKResponse<[ColorCollection], SDKError> = self.get("/color_collections/standard", - ["fields": fields], nil, options) + ) -> SDKResponse { + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.get("/oidc_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Get the default color collection - * - * Use this to retrieve the default Color Collection. + * ### Delete a OIDC test configuration. * - * Set the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection) + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /color_collections/default -> ColorCollection + * DELETE /oidc_test_configs/{test_slug} -> String */ - public func default_color_collection( + public func delete_oidc_test_config( + /** + * @param {String} test_slug Slug of test config + */ + _ test_slug: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/color_collections/default", nil, nil, options) + ) -> SDKResponse { + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.delete("/oidc_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Set the global default Color Collection by ID + * ### Create a OIDC test configuration. * - * Returns the new specified default Color Collection object. - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /color_collections/default -> ColorCollection + * POST /oidc_test_configs -> OIDCConfig */ - public func set_default_color_collection( + public func create_oidc_test_config( /** - * @param {String} collection_id ID of color collection to set as default + * @param {WriteOIDCConfig} body */ - _ collection_id: String, + _ body: WriteOIDCConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/color_collections/default", - ["collection_id": collection_id], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/oidc_test_configs", nil, try! self.encode(body), options) return result } /** - * ### Get a Color Collection by ID - * - * Use this to retrieve a specific Color Collection. - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) - * - * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) - * - * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * ### Get password config. * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /color_collections/{collection_id} -> ColorCollection + * GET /password_config -> PasswordConfig */ - public func color_collection( - /** - * @param {String} collection_id Id of Color Collection - */ - _ collection_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func password_config( options: ITransportSettings? = nil - ) -> SDKResponse { - let path_collection_id = encodeParam(collection_id) - let result: SDKResponse = self.get("/color_collections/\(path_collection_id)", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/password_config", nil, nil, options) return result } /** - * ### Update a custom color collection by id. - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * ### Update password config. * - * PATCH /color_collections/{collection_id} -> ColorCollection + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * PATCH /password_config -> PasswordConfig */ - public func update_color_collection( - /** - * @param {String} collection_id Id of Custom Color Collection - */ - _ collection_id: String, + public func update_password_config( /** - * @param {WriteColorCollection} body + * @param {WritePasswordConfig} body */ - _ body: WriteColorCollection, + _ body: WritePasswordConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_collection_id = encodeParam(collection_id) - let result: SDKResponse = self.patch("/color_collections/\(path_collection_id)", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/password_config", nil, try! self.encode(body), options) return result } /** - * ### Delete a custom color collection by id - * - * This operation permanently deletes the identified **Custom** color collection. - * - * **Standard** color collections cannot be deleted + * ### Force all credentials_email users to reset their login passwords upon their next login. * - * Because multiple color collections can have the same label, they must be deleted by ID, not name. - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * DELETE /color_collections/{collection_id} -> String + * PUT /password_config/force_password_reset_at_next_login_for_all_users -> String */ - public func delete_color_collection( - /** - * @param {String} collection_id Id of Color Collection - */ - _ collection_id: String, + public func force_password_reset_at_next_login_for_all_users( options: ITransportSettings? = nil ) -> SDKResponse { - let path_collection_id = encodeParam(collection_id) - let result: SDKResponse = self.delete("/color_collections/\(path_collection_id)", nil, nil, options) + let result: SDKResponse = self.put("/password_config/force_password_reset_at_next_login_for_all_users", nil, nil, options) return result } - - - // MARK Config: Manage General Configuration - /** - * ### WARNING: The Looker internal database backup function has been deprecated. + * ### Get the SAML configuration. * - * GET /backup_configuration -> BackupConfiguration - */ - @available(*, deprecated) - public func backup_configuration( + * Looker can be optionally configured to authenticate users against a SAML authentication server. + * SAML setup requires coordination with an administrator of that server. + * + * Only Looker administrators can read and update the SAML configuration. + * + * Configuring SAML impacts authentication for all users. This configuration should be done carefully. + * + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * + * SAML is enabled or disabled for Looker using the **enabled** field. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /saml_config -> SamlConfig + */ + public func saml_config( options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/backup_configuration", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/saml_config", nil, nil, options) return result } /** - * ### WARNING: The Looker internal database backup function has been deprecated. + * ### Update the SAML configuration. + * + * Configuring SAML impacts authentication for all users. This configuration should be done carefully. + * + * Only Looker administrators can read and update the SAML configuration. * - * PATCH /backup_configuration -> BackupConfiguration + * SAML is enabled or disabled for Looker using the **enabled** field. + * + * It is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * PATCH /saml_config -> SamlConfig */ - @available(*, deprecated) - public func update_backup_configuration( + public func update_saml_config( /** - * @param {WriteBackupConfiguration} body + * @param {WriteSamlConfig} body */ - _ body: WriteBackupConfiguration, + _ body: WriteSamlConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/backup_configuration", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/saml_config", nil, try! self.encode(body), options) return result } /** - * Get the current Cloud Storage Configuration. + * ### Get a SAML test configuration by test_slug. * - * GET /cloud_storage -> BackupConfiguration - */ - public func cloud_storage_configuration( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/cloud_storage", nil, nil, options) - return result - } - - /** - * Update the current Cloud Storage Configuration. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PATCH /cloud_storage -> BackupConfiguration + * GET /saml_test_configs/{test_slug} -> SamlConfig */ - public func update_cloud_storage_configuration( + public func saml_test_config( /** - * @param {WriteBackupConfiguration} body + * @param {String} test_slug Slug of test config */ - _ body: WriteBackupConfiguration, + _ test_slug: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/cloud_storage", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.get("/saml_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Get the current status and content of custom welcome emails + * ### Delete a SAML test configuration. * - * GET /custom_welcome_email -> CustomWelcomeEmail - */ - public func custom_welcome_email( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/custom_welcome_email", nil, nil, options) - return result - } - - /** - * Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PATCH /custom_welcome_email -> CustomWelcomeEmail + * DELETE /saml_test_configs/{test_slug} -> String */ - public func update_custom_welcome_email( - /** - * @param {WriteCustomWelcomeEmail} body - */ - _ body: WriteCustomWelcomeEmail, + public func delete_saml_test_config( /** - * @param {Bool} send_test_welcome_email If true a test email with the content from the request will be sent to the current user after saving + * @param {String} test_slug Slug of test config */ - send_test_welcome_email: Bool? = nil, + _ test_slug: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/custom_welcome_email", - ["send_test_welcome_email": send_test_welcome_email as Any?], try! self.encode(body), options) + ) -> SDKResponse { + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.delete("/saml_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user. + * ### Create a SAML test configuration. * - * PUT /custom_welcome_email_test -> WelcomeEmailTest + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * POST /saml_test_configs -> SamlConfig */ - public func update_custom_welcome_email_test( + public func create_saml_test_config( /** - * @param {WelcomeEmailTest} body + * @param {WriteSamlConfig} body */ - _ body: WelcomeEmailTest, + _ body: WriteSamlConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/custom_welcome_email_test", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/saml_test_configs", nil, try! self.encode(body), options) return result } /** - * ### Retrieve the value for whether or not digest emails is enabled + * ### Parse the given xml as a SAML IdP metadata document and return the result. * - * GET /digest_emails_enabled -> DigestEmails - */ - public func digest_emails_enabled( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/digest_emails_enabled", nil, nil, options) - return result - } - - /** - * ### Update the setting for enabling/disabling digest emails + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PATCH /digest_emails_enabled -> DigestEmails + * POST /parse_saml_idp_metadata -> SamlMetadataParseResult */ - public func update_digest_emails_enabled( + public func parse_saml_idp_metadata( /** - * @param {DigestEmails} body + * @param {String} body */ - _ body: DigestEmails, + _ body: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/digest_emails_enabled", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/parse_saml_idp_metadata", nil, try! self.encode(body), options) return result } /** - * ### Trigger the generation of digest email records and send them to Looker's internal system. This does not send - * any actual emails, it generates records containing content which may be of interest for users who have become inactive. - * Emails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings. + * ### Fetch the given url and parse it as a SAML IdP metadata document and return the result. + * Note that this requires that the url be public or at least at a location where the Looker instance + * can fetch it without requiring any special authentication. * - * POST /digest_email_send -> DigestEmailSend + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * POST /fetch_and_parse_saml_idp_metadata -> SamlMetadataParseResult */ - public func create_digest_email_send( + public func fetch_and_parse_saml_idp_metadata( + /** + * @param {String} body + */ + _ body: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/digest_email_send", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/fetch_and_parse_saml_idp_metadata", nil, try! self.encode(body), options) return result } /** - * ### Set the menu item name and content for internal help resources + * ### Get session config. * - * GET /internal_help_resources_content -> InternalHelpResourcesContent + * GET /session_config -> SessionConfig */ - public func internal_help_resources_content( + public func session_config( options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/internal_help_resources_content", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/session_config", nil, nil, options) return result } /** - * Update internal help resources content + * ### Update session config. * - * PATCH /internal_help_resources_content -> InternalHelpResourcesContent + * PATCH /session_config -> SessionConfig */ - public func update_internal_help_resources_content( + public func update_session_config( /** - * @param {WriteInternalHelpResourcesContent} body + * @param {WriteSessionConfig} body */ - _ body: WriteInternalHelpResourcesContent, + _ body: WriteSessionConfig, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/internal_help_resources_content", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/session_config", nil, try! self.encode(body), options) return result } /** - * ### Get and set the options for internal help resources + * ### Get Support Access Allowlist Users * - * GET /internal_help_resources_enabled -> InternalHelpResources + * Returns the users that have been added to the Support Access Allowlist + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /support_access/allowlist -> [SupportAccessAllowlistEntry] */ - public func internal_help_resources( + public func get_support_access_allowlist_entries( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/internal_help_resources_enabled", nil, nil, options) + ) -> SDKResponse<[SupportAccessAllowlistEntry], SDKError> { + let result: SDKResponse<[SupportAccessAllowlistEntry], SDKError> = self.get("/support_access/allowlist", + ["fields": fields], nil, options) return result } /** - * Update internal help resources settings + * ### Add Support Access Allowlist Users * - * PATCH /internal_help_resources -> InternalHelpResources + * Adds a list of emails to the Allowlist, using the provided reason + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * POST /support_access/allowlist -> [SupportAccessAllowlistEntry] */ - public func update_internal_help_resources( + public func add_support_access_allowlist_entries( /** - * @param {WriteInternalHelpResources} body + * @param {SupportAccessAddEntries} body */ - _ body: WriteInternalHelpResources, + _ body: SupportAccessAddEntries, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/internal_help_resources", nil, try! self.encode(body), options) + ) -> SDKResponse<[SupportAccessAllowlistEntry], SDKError> { + let result: SDKResponse<[SupportAccessAllowlistEntry], SDKError> = self.post("/support_access/allowlist", nil, try! self.encode(body), options) return result } /** - * ### Get all legacy features. + * ### Delete Support Access Allowlist User + * + * Deletes the specified Allowlist Entry Id * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /legacy_features -> [LegacyFeature] + * DELETE /support_access/allowlist/{entry_id} -> String */ - public func all_legacy_features( + public func delete_support_access_allowlist_entry( + /** + * @param {String} entry_id Id of Allowlist Entry + */ + _ entry_id: String, options: ITransportSettings? = nil - ) -> SDKResponse<[LegacyFeature], SDKError> { - let result: SDKResponse<[LegacyFeature], SDKError> = self.get("/legacy_features", nil, nil, options) + ) -> SDKResponse { + let path_entry_id = encodeParam(entry_id) + let result: SDKResponse = self.delete("/support_access/allowlist/\(path_entry_id)", nil, nil, options) return result } /** - * ### Get information about the legacy feature with a specific id. + * ### Enable Support Access + * + * Enables Support Access for the provided duration * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /legacy_features/{legacy_feature_id} -> LegacyFeature + * PUT /support_access/enable -> SupportAccessStatus */ - public func legacy_feature( + public func enable_support_access( /** - * @param {Int64} legacy_feature_id id of legacy feature + * @param {SupportAccessEnable} body */ - _ legacy_feature_id: Int64, + _ body: SupportAccessEnable, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_legacy_feature_id = encodeParam(legacy_feature_id) - let result: SDKResponse = self.get("/legacy_features/\(path_legacy_feature_id)", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/support_access/enable", nil, try! self.encode(body), options) return result } /** - * ### Update information about the legacy feature with a specific id. + * ### Disable Support Access + * + * Disables Support Access immediately * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PATCH /legacy_features/{legacy_feature_id} -> LegacyFeature + * PUT /support_access/disable -> SupportAccessStatus */ - public func update_legacy_feature( - /** - * @param {Int64} legacy_feature_id id of legacy feature - */ - _ legacy_feature_id: Int64, - /** - * @param {WriteLegacyFeature} body - */ - _ body: WriteLegacyFeature, + public func disable_support_access( options: ITransportSettings? = nil - ) -> SDKResponse { - let path_legacy_feature_id = encodeParam(legacy_feature_id) - let result: SDKResponse = self.patch("/legacy_features/\(path_legacy_feature_id)", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/support_access/disable", nil, nil, options) return result } /** - * ### Get a list of locales that Looker supports. + * ### Support Access Status * - * GET /locales -> [LkLocale] + * Returns the current Support Access Status + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /support_access/status -> SupportAccessStatus */ - public func all_locales( + public func support_access_status( options: ITransportSettings? = nil - ) -> SDKResponse<[LkLocale], SDKError> { - let result: SDKResponse<[LkLocale], SDKError> = self.get("/locales", nil, nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/support_access/status", nil, nil, options) return result } /** - * ### Configure SMTP Settings - * This API allows users to configure the SMTP settings on the Looker instance. - * Only admin users are authorised to call this API. + * ### Get currently locked-out users. * - * POST /smtp_settings -> Voidable + * GET /user_login_lockouts -> [UserLoginLockout] */ - public func set_smtp_settings( + public func all_user_login_lockouts( /** - * @param {SmtpSettings} body + * @param {String} fields Include only these fields in the response */ - _ body: SmtpSettings, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/smtp_settings", nil, try! self.encode(body), options) + ) -> SDKResponse<[UserLoginLockout], SDKError> { + let result: SDKResponse<[UserLoginLockout], SDKError> = self.get("/user_login_lockouts", + ["fields": fields], nil, options) return result } /** - * ### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks). + * ### Search currently locked-out users. * - * GET /timezones -> [Timezone] + * GET /user_login_lockouts/search -> [UserLoginLockout] */ - public func all_timezones( + public func search_user_login_lockouts( + /** + * @param {String} fields Include only these fields in the response + */ + fields: String? = nil, + /** + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + */ + page: Int64? = nil, + /** + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + */ + per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {String} auth_type Auth type user is locked out for (email, ldap, totp, api) + */ + auth_type: String? = nil, + /** + * @param {String} full_name Match name + */ + full_name: String? = nil, + /** + * @param {String} email Match email + */ + email: String? = nil, + /** + * @param {String} remote_id Match remote LDAP ID + */ + remote_id: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Timezone], SDKError> { - let result: SDKResponse<[Timezone], SDKError> = self.get("/timezones", nil, nil, options) + ) -> SDKResponse<[UserLoginLockout], SDKError> { + let result: SDKResponse<[UserLoginLockout], SDKError> = self.get("/user_login_lockouts/search", + ["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 as Any?], nil, options) return result } /** - * ### Get information about all API versions supported by this Looker instance. + * ### Removes login lockout for the associated user. * - * GET /versions -> ApiVersion + * DELETE /user_login_lockout/{key} -> String */ - public func versions( + public func delete_user_login_lockout( /** - * @param {String} fields Requested fields. + * @param {String} key The key associated with the locked user */ - fields: String? = nil, + _ key: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/versions", - ["fields": fields], nil, options) + ) -> SDKResponse { + let path_key = encodeParam(key) + let result: SDKResponse = self.delete("/user_login_lockout/\(path_key)", nil, nil, options) return result } + + + // MARK Board: Manage Boards + /** - * ### This feature is enabled only by special license. - * ### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc. + * ### Get information about all boards. * - * GET /whitelabel_configuration -> WhitelabelConfiguration + * GET /boards -> [Board] */ - public func whitelabel_configuration( + public func all_boards( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/whitelabel_configuration", + ) -> SDKResponse<[Board], SDKError> { + let result: SDKResponse<[Board], SDKError> = self.get("/boards", ["fields": fields], nil, options) return result } /** - * ### Update the whitelabel configuration + * ### Create a new board. * - * PUT /whitelabel_configuration -> WhitelabelConfiguration + * POST /boards -> Board */ - public func update_whitelabel_configuration( + public func create_board( /** - * @param {WriteWhitelabelConfiguration} body + * @param {WriteBoard} body */ - _ body: WriteWhitelabelConfiguration, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/whitelabel_configuration", nil, try! self.encode(body), options) - return result - } - - - - // MARK Connection: Manage Database Connections - - /** - * ### Get information about all connections. - * - * GET /connections -> [DBConnection] - */ - public func all_connections( + _ body: WriteBoard, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[DBConnection], SDKError> { - let result: SDKResponse<[DBConnection], SDKError> = self.get("/connections", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/boards", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Create a connection using the specified configuration. + * ### Search Boards * - * POST /connections -> DBConnection + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /boards/search -> [Board] */ - public func create_connection( + public func search_boards( /** - * @param {WriteDBConnection} body + * @param {String} title Matches board title. */ - _ body: WriteDBConnection, + title: String? = nil, + /** + * @param {String} created_at Matches the timestamp for when the board was created. + */ + created_at: String? = nil, + /** + * @param {String} first_name The first name of the user who created this board. + */ + first_name: String? = nil, + /** + * @param {String} last_name The last name of the user who created this board. + */ + last_name: String? = nil, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Bool} favorited Return favorited boards when true. + */ + favorited: Bool? = nil, + /** + * @param {String} creator_id Filter on boards created by a particular user. + */ + creator_id: String? = nil, + /** + * @param {String} sorts The fields to sort the results by + */ + sorts: String? = nil, + /** + * @param {Int64} page The page to return. DEPRECATED. Use offset instead. + */ + page: Int64? = nil, + /** + * @param {Int64} per_page The number of items in the returned page. DEPRECATED. Use limit instead. + */ + per_page: Int64? = nil, + /** + * @param {Int64} offset The number of items to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, + /** + * @param {Int64} limit The maximum number of items to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + /** + * @param {String} permission Filter results based on permission, either show (default) or update + */ + permission: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/connections", nil, try! self.encode(body), options) + ) -> SDKResponse<[Board], SDKError> { + let result: SDKResponse<[Board], SDKError> = self.get("/boards/search", + ["title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited as Any?, "creator_id": creator_id, "sorts": sorts, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "filter_or": filter_or as Any?, "permission": permission], nil, options) return result } /** - * ### Get information about a connection. + * ### Get information about a board. * - * GET /connections/{connection_name} -> DBConnection + * GET /boards/{board_id} -> Board */ - public func connection( + public func board( /** - * @param {String} connection_name Name of connection + * @param {String} board_id Id of board */ - _ connection_name: String, + _ board_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.get("/connections/\(path_connection_name)", + ) -> SDKResponse { + let path_board_id = encodeParam(board_id) + let result: SDKResponse = self.get("/boards/\(path_board_id)", ["fields": fields], nil, options) return result } /** - * ### Update a connection using the specified configuration. + * ### Update a board definition. * - * PATCH /connections/{connection_name} -> DBConnection + * PATCH /boards/{board_id} -> Board */ - public func update_connection( + public func update_board( /** - * @param {String} connection_name Name of connection + * @param {String} board_id Id of board */ - _ connection_name: String, + _ board_id: String, /** - * @param {WriteDBConnection} body + * @param {WriteBoard} body */ - _ body: WriteDBConnection, + _ body: WriteBoard, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.patch("/connections/\(path_connection_name)", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_board_id = encodeParam(board_id) + let result: SDKResponse = self.patch("/boards/\(path_board_id)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Delete a connection. + * ### Delete a board. * - * DELETE /connections/{connection_name} -> String + * DELETE /boards/{board_id} -> String */ - public func delete_connection( + public func delete_board( /** - * @param {String} connection_name Name of connection + * @param {String} board_id Id of board */ - _ connection_name: String, + _ board_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.delete("/connections/\(path_connection_name)", nil, nil, options) + let path_board_id = encodeParam(board_id) + let result: SDKResponse = self.delete("/boards/\(path_board_id)", nil, nil, options) return result } /** - * ### Delete a connection override. + * ### Get information about all board items. * - * DELETE /connections/{connection_name}/connection_override/{override_context} -> String + * GET /board_items -> [BoardItem] */ - public func delete_connection_override( + public func all_board_items( /** - * @param {String} connection_name Name of connection + * @param {String} fields Requested fields. */ - _ connection_name: String, + fields: String? = nil, /** - * @param {String} override_context Context of connection override + * @param {String} sorts Fields to sort by. */ - _ override_context: String, + sorts: String? = nil, + /** + * @param {String} board_section_id Filter to a specific board section + */ + board_section_id: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let path_override_context = encodeParam(override_context) - let result: SDKResponse = self.delete("/connections/\(path_connection_name)/connection_override/\(path_override_context)", nil, nil, options) + ) -> SDKResponse<[BoardItem], SDKError> { + let result: SDKResponse<[BoardItem], SDKError> = self.get("/board_items", + ["fields": fields, "sorts": sorts, "board_section_id": board_section_id], nil, options) return result } /** - * ### Test an existing connection. - * - * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the - * specific types of tests that the connection supports. - * - * This API is rate limited. - * - * Unsupported tests in the request will be ignored. + * ### Create a new board item. * - * PUT /connections/{connection_name}/test -> [DBConnectionTestResult] + * POST /board_items -> BoardItem */ - public func test_connection( + public func create_board_item( /** - * @param {String} connection_name Name of connection + * @param {WriteBoardItem} body */ - _ connection_name: String, + _ body: WriteBoardItem, /** - * @param {DelimArray} tests Array of names of tests to run + * @param {String} fields Requested fields. */ - tests: DelimArray? = nil, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[DBConnectionTestResult], SDKError> { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse<[DBConnectionTestResult], SDKError> = self.put("/connections/\(path_connection_name)/test", - ["tests": tests as Any?], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/board_items", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Test a connection configuration. - * - * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the - * specific types of tests that the connection supports. - * - * This API is rate limited. - * - * Unsupported tests in the request will be ignored. + * ### Get information about a board item. * - * PUT /connections/test -> [DBConnectionTestResult] + * GET /board_items/{board_item_id} -> BoardItem */ - public func test_connection_config( + public func board_item( /** - * @param {WriteDBConnection} body + * @param {String} board_item_id Id of board item */ - _ body: WriteDBConnection, - /** - * @param {DelimArray} tests Array of names of tests to run - */ - tests: DelimArray? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[DBConnectionTestResult], SDKError> { - let result: SDKResponse<[DBConnectionTestResult], SDKError> = self.put("/connections/test", - ["tests": tests as Any?], try! self.encode(body), options) - return result - } - - /** - * ### Get information about all dialects. - * - * GET /dialect_info -> [DialectInfo] - */ - public func all_dialect_infos( + _ board_item_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[DialectInfo], SDKError> { - let result: SDKResponse<[DialectInfo], SDKError> = self.get("/dialect_info", + ) -> SDKResponse { + let path_board_item_id = encodeParam(board_item_id) + let result: SDKResponse = self.get("/board_items/\(path_board_item_id)", ["fields": fields], nil, options) return result } - - - // MARK Content: Manage Content - /** - * ### Search Favorite Content - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. + * ### Update a board item definition. * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. - * - * GET /content_favorite/search -> [ContentFavorite] + * PATCH /board_items/{board_item_id} -> BoardItem */ - public func search_content_favorites( + public func update_board_item( /** - * @param {Int64} id Match content favorite id(s) + * @param {String} board_item_id Id of board item */ - id: Int64? = nil, - /** - * @param {Int64} user_id Match user id(s) - */ - user_id: Int64? = nil, - /** - * @param {Int64} content_metadata_id Match content metadata id(s) - */ - content_metadata_id: Int64? = nil, - /** - * @param {Int64} dashboard_id Match dashboard id(s) - */ - dashboard_id: Int64? = nil, - /** - * @param {Int64} look_id Match look id(s) - */ - look_id: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit) - */ - offset: Int64? = nil, + _ board_item_id: String, /** - * @param {String} sorts Fields to sort by. + * @param {WriteBoardItem} body */ - sorts: String? = nil, + _ body: WriteBoardItem, /** * @param {String} fields Requested fields. */ fields: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[ContentFavorite], SDKError> { - let result: SDKResponse<[ContentFavorite], SDKError> = self.get("/content_favorite/search", - ["id": id, "user_id": user_id, "content_metadata_id": content_metadata_id, "dashboard_id": dashboard_id, "look_id": look_id, "limit": limit, "offset": offset, "sorts": sorts, "fields": fields, "filter_or": filter_or as Any?], nil, options) + ) -> SDKResponse { + let path_board_item_id = encodeParam(board_item_id) + let result: SDKResponse = self.patch("/board_items/\(path_board_item_id)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Get favorite content by its id + * ### Delete a board item. * - * GET /content_favorite/{content_favorite_id} -> ContentFavorite + * DELETE /board_items/{board_item_id} -> String */ - public func content_favorite( + public func delete_board_item( /** - * @param {Int64} content_favorite_id Id of favorite content + * @param {String} board_item_id Id of board item */ - _ content_favorite_id: Int64, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + _ board_item_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_favorite_id = encodeParam(content_favorite_id) - let result: SDKResponse = self.get("/content_favorite/\(path_content_favorite_id)", - ["fields": fields], nil, options) + ) -> SDKResponse { + let path_board_item_id = encodeParam(board_item_id) + let result: SDKResponse = self.delete("/board_items/\(path_board_item_id)", nil, nil, options) return result } /** - * ### Delete favorite content + * ### Get information about all board sections. * - * DELETE /content_favorite/{content_favorite_id} -> String + * GET /board_sections -> [BoardSection] */ - public func delete_content_favorite( + public func all_board_sections( /** - * @param {Int64} content_favorite_id Id of favorite content + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {String} sorts Fields to sort by. */ - _ content_favorite_id: Int64, + sorts: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_favorite_id = encodeParam(content_favorite_id) - let result: SDKResponse = self.delete("/content_favorite/\(path_content_favorite_id)", nil, nil, options) + ) -> SDKResponse<[BoardSection], SDKError> { + let result: SDKResponse<[BoardSection], SDKError> = self.get("/board_sections", + ["fields": fields, "sorts": sorts], nil, options) return result } /** - * ### Create favorite content + * ### Create a new board section. * - * POST /content_favorite -> ContentFavorite + * POST /board_sections -> BoardSection */ - public func create_content_favorite( + public func create_board_section( /** - * @param {WriteContentFavorite} body + * @param {WriteBoardSection} body */ - _ body: WriteContentFavorite, + _ body: WriteBoardSection, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/content_favorite", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/board_sections", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Get information about all content metadata in a space. + * ### Get information about a board section. * - * GET /content_metadata -> [ContentMeta] + * GET /board_sections/{board_section_id} -> BoardSection */ - public func all_content_metadatas( + public func board_section( /** - * @param {Int64} parent_id Parent space of content. + * @param {String} board_section_id Id of board section */ - _ parent_id: Int64, + _ board_section_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[ContentMeta], SDKError> { - let result: SDKResponse<[ContentMeta], SDKError> = self.get("/content_metadata", - ["parent_id": parent_id, "fields": fields], nil, options) + ) -> SDKResponse { + let path_board_section_id = encodeParam(board_section_id) + let result: SDKResponse = self.get("/board_sections/\(path_board_section_id)", + ["fields": fields], nil, options) return result } /** - * ### Get information about an individual content metadata record. + * ### Update a board section definition. * - * GET /content_metadata/{content_metadata_id} -> ContentMeta + * PATCH /board_sections/{board_section_id} -> BoardSection */ - public func content_metadata( + public func update_board_section( /** - * @param {Int64} content_metadata_id Id of content metadata + * @param {String} board_section_id Id of board section */ - _ content_metadata_id: Int64, + _ board_section_id: String, + /** + * @param {WriteBoardSection} body + */ + _ body: WriteBoardSection, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_metadata_id = encodeParam(content_metadata_id) - let result: SDKResponse = self.get("/content_metadata/\(path_content_metadata_id)", - ["fields": fields], nil, options) + ) -> SDKResponse { + let path_board_section_id = encodeParam(board_section_id) + let result: SDKResponse = self.patch("/board_sections/\(path_board_section_id)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Move a piece of content. + * ### Delete a board section. * - * PATCH /content_metadata/{content_metadata_id} -> ContentMeta + * DELETE /board_sections/{board_section_id} -> String */ - public func update_content_metadata( - /** - * @param {Int64} content_metadata_id Id of content metadata - */ - _ content_metadata_id: Int64, + public func delete_board_section( /** - * @param {WriteContentMeta} body + * @param {String} board_section_id Id of board section */ - _ body: WriteContentMeta, + _ board_section_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_metadata_id = encodeParam(content_metadata_id) - let result: SDKResponse = self.patch("/content_metadata/\(path_content_metadata_id)", nil, try! self.encode(body), options) + ) -> SDKResponse { + let path_board_section_id = encodeParam(board_section_id) + let result: SDKResponse = self.delete("/board_sections/\(path_board_section_id)", nil, nil, options) return result } + + + // MARK ColorCollection: Manage Color Collections + /** - * ### All content metadata access records for a content metadata item. + * ### Get an array of all existing Color Collections + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * GET /content_metadata_access -> [ContentMetaGroupUser] + * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) + * + * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * + * GET /color_collections -> [ColorCollection] */ - public func all_content_metadata_accesses( - /** - * @param {Int64} content_metadata_id Id of content metadata - */ - _ content_metadata_id: Int64, + public func all_color_collections( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[ContentMetaGroupUser], SDKError> { - let result: SDKResponse<[ContentMetaGroupUser], SDKError> = self.get("/content_metadata_access", - ["content_metadata_id": content_metadata_id, "fields": fields], nil, options) + ) -> SDKResponse<[ColorCollection], SDKError> { + let result: SDKResponse<[ColorCollection], SDKError> = self.get("/color_collections", + ["fields": fields], nil, options) return result } /** - * ### Create content metadata access. + * ### Create a custom color collection with the specified information * - * POST /content_metadata_access -> ContentMetaGroupUser + * Creates a new custom color collection object, returning the details, including the created id. + * + * **Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection) + * + * **Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection) + * + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * + * POST /color_collections -> ColorCollection */ - public func create_content_metadata_access( - /** - * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH - */ - _ body: ContentMetaGroupUser, + public func create_color_collection( /** - * @param {Bool} send_boards_notification_email Optionally sends notification email when granting access to a board. + * @param {WriteColorCollection} body */ - send_boards_notification_email: Bool? = nil, + _ body: WriteColorCollection, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/content_metadata_access", - ["send_boards_notification_email": send_boards_notification_email as Any?], try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/color_collections", nil, try! self.encode(body), options) return result } /** - * ### Update type of access for content metadata. + * ### Get an array of all existing **Custom** Color Collections + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * PUT /content_metadata_access/{content_metadata_access_id} -> ContentMetaGroupUser + * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) + * + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * + * GET /color_collections/custom -> [ColorCollection] */ - public func update_content_metadata_access( - /** - * @param {Int64} content_metadata_access_id Id of content metadata access - */ - _ content_metadata_access_id: Int64, + public func color_collections_custom( /** - * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH + * @param {String} fields Requested fields. */ - _ body: ContentMetaGroupUser, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_metadata_access_id = encodeParam(content_metadata_access_id) - let result: SDKResponse = self.put("/content_metadata_access/\(path_content_metadata_access_id)", nil, try! self.encode(body), options) + ) -> SDKResponse<[ColorCollection], SDKError> { + let result: SDKResponse<[ColorCollection], SDKError> = self.get("/color_collections/custom", + ["fields": fields], nil, options) return result } /** - * ### Remove content metadata access. + * ### Get an array of all existing **Standard** Color Collections + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * DELETE /content_metadata_access/{content_metadata_access_id} -> String + * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * + * GET /color_collections/standard -> [ColorCollection] */ - public func delete_content_metadata_access( + public func color_collections_standard( /** - * @param {Int64} content_metadata_access_id Id of content metadata access + * @param {String} fields Requested fields. */ - _ content_metadata_access_id: Int64, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_content_metadata_access_id = encodeParam(content_metadata_access_id) - let result: SDKResponse = self.delete("/content_metadata_access/\(path_content_metadata_access_id)", nil, nil, options) + ) -> SDKResponse<[ColorCollection], SDKError> { + let result: SDKResponse<[ColorCollection], SDKError> = self.get("/color_collections/standard", + ["fields": fields], nil, options) return result } /** - * ### Get an image representing the contents of a dashboard or look. + * ### Get the default color collection * - * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not - * reflect the actual data displayed in the respective visualizations. + * Use this to retrieve the default Color Collection. * - * GET /content_thumbnail/{type}/{resource_id} -> String + * Set the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection) * - * **Note**: Binary content may be returned by this method. + * GET /color_collections/default -> ColorCollection */ - public func content_thumbnail( - /** - * @param {String} type Either dashboard or look - */ - _ type: String, - /** - * @param {String} resource_id ID of the dashboard or look to render - */ - _ resource_id: String, - /** - * @param {String} reload Whether or not to refresh the rendered image with the latest content - */ - reload: String? = nil, - /** - * @param {String} theme Light or dark background. Default is "light" - */ - theme: String? = nil, - /** - * @param {String} format A value of png produces a thumbnail in PNG format instead of SVG (default) - */ - format: String? = nil, - /** - * @param {Int64} width The width of the image if format is supplied - */ - width: Int64? = nil, - /** - * @param {Int64} height The height of the image if format is supplied - */ - height: Int64? = nil, + public func default_color_collection( options: ITransportSettings? = nil - ) -> SDKResponse { - let path_type = encodeParam(type) - let path_resource_id = encodeParam(resource_id) - let result: SDKResponse = self.get("/content_thumbnail/\(path_type)/\(path_resource_id)", - ["reload": reload, "theme": theme, "format": format, "width": width, "height": height], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/color_collections/default", nil, nil, options) return result } /** - * ### Validate All Content + * ### Set the global default Color Collection by ID * - * Performs validation of all looks and dashboards - * Returns a list of errors found as well as metadata about the content validation run. + * Returns the new specified default Color Collection object. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * GET /content_validation -> ContentValidation + * PUT /color_collections/default -> ColorCollection */ - public func content_validation( + public func set_default_color_collection( /** - * @param {String} fields Requested fields. + * @param {String} collection_id ID of color collection to set as default */ - fields: String? = nil, + _ collection_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/content_validation", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.put("/color_collections/default", + ["collection_id": collection_id], nil, options) return result } /** - * ### Search Content Views - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. + * ### Get a Color Collection by ID * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" + * Use this to retrieve a specific Color Collection. + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. + * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. + * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) * - * Boolean search params accept only "true" and "false" as values. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * GET /content_view/search -> [ContentView] + * GET /color_collections/{collection_id} -> ColorCollection */ - public func search_content_views( - /** - * @param {Int64} view_count Match view count - */ - view_count: Int64? = nil, - /** - * @param {Int64} group_id Match Group Id - */ - group_id: Int64? = nil, - /** - * @param {String} look_id Match look_id - */ - look_id: String? = nil, - /** - * @param {String} dashboard_id Match dashboard_id - */ - dashboard_id: String? = nil, - /** - * @param {Int64} content_metadata_id Match content metadata id - */ - content_metadata_id: Int64? = nil, - /** - * @param {String} start_of_week_date Match start of week date (format is "YYYY-MM-DD") - */ - start_of_week_date: String? = nil, - /** - * @param {Bool} all_time True if only all time view records should be returned - */ - all_time: Bool? = nil, + public func color_collection( /** - * @param {Int64} user_id Match user id + * @param {String} collection_id Id of Color Collection */ - user_id: Int64? = nil, + _ collection_id: String, /** - * @param {String} fields Requested fields + * @param {String} fields Requested fields. */ fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_collection_id = encodeParam(collection_id) + let result: SDKResponse = self.get("/color_collections/\(path_collection_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update a custom color collection by id. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * + * PATCH /color_collections/{collection_id} -> ColorCollection + */ + public func update_color_collection( /** - * @param {Int64} limit Number of results to return. Use with `offset` to manage pagination of results - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning data - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by + * @param {String} collection_id Id of Custom Color Collection */ - sorts: String? = nil, + _ collection_id: String, /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {WriteColorCollection} body */ - filter_or: Bool? = nil, + _ body: WriteColorCollection, options: ITransportSettings? = nil - ) -> SDKResponse<[ContentView], SDKError> { - let result: SDKResponse<[ContentView], SDKError> = self.get("/content_view/search", - ["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 as Any?, "user_id": user_id, "fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) + ) -> SDKResponse { + let path_collection_id = encodeParam(collection_id) + let result: SDKResponse = self.patch("/color_collections/\(path_collection_id)", nil, try! self.encode(body), options) return result } /** - * ### Get a vector image representing the contents of a dashboard or look. + * ### Delete a custom color collection by id * - * # DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail) + * This operation permanently deletes the identified **Custom** color collection. * - * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not - * reflect the actual data displayed in the respective visualizations. + * **Standard** color collections cannot be deleted * - * GET /vector_thumbnail/{type}/{resource_id} -> String + * Because multiple color collections can have the same label, they must be deleted by ID, not name. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * + * DELETE /color_collections/{collection_id} -> String */ - @available(*, deprecated) - public func vector_thumbnail( - /** - * @param {String} type Either dashboard or look - */ - _ type: String, - /** - * @param {String} resource_id ID of the dashboard or look to render - */ - _ resource_id: String, + public func delete_color_collection( /** - * @param {String} reload Whether or not to refresh the rendered image with the latest content + * @param {String} collection_id Id of Color Collection */ - reload: String? = nil, + _ collection_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_type = encodeParam(type) - let path_resource_id = encodeParam(resource_id) - let result: SDKResponse = self.get("/vector_thumbnail/\(path_type)/\(path_resource_id)", - ["reload": reload], nil, options) + let path_collection_id = encodeParam(collection_id) + let result: SDKResponse = self.delete("/color_collections/\(path_collection_id)", nil, nil, options) return result } - // MARK Dashboard: Manage Dashboards + // MARK Config: Manage General Configuration /** - * ### Get information about all active dashboards. - * - * Returns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list. - * - * Get the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard) + * Get the current Cloud Storage Configuration. * - * Find **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards) + * GET /cloud_storage -> BackupConfiguration + */ + public func cloud_storage_configuration( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/cloud_storage", nil, nil, options) + return result + } + + /** + * Update the current Cloud Storage Configuration. * - * GET /dashboards -> [DashboardBase] + * PATCH /cloud_storage -> BackupConfiguration */ - public func all_dashboards( + public func update_cloud_storage_configuration( /** - * @param {String} fields Requested fields. + * @param {WriteBackupConfiguration} body */ - fields: String? = nil, + _ body: WriteBackupConfiguration, options: ITransportSettings? = nil - ) -> SDKResponse<[DashboardBase], SDKError> { - let result: SDKResponse<[DashboardBase], SDKError> = self.get("/dashboards", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/cloud_storage", nil, try! self.encode(body), options) return result } /** - * ### Create a new dashboard - * - * Creates a new dashboard object and returns the details of the newly created dashboard. - * - * `Title` and `space_id` are required fields. - * `Space_id` must contain the id of an existing space. - * A dashboard's `title` must be unique within the space in which it resides. - * - * If you receive a 422 error response when creating a dashboard, be sure to look at the - * response body for information about exactly which fields are missing or contain invalid data. - * - * You can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard) + * ### Get the current status and content of custom welcome emails * - * You can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard) + * GET /custom_welcome_email -> CustomWelcomeEmail + */ + @available(*, deprecated) + public func custom_welcome_email( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/custom_welcome_email", nil, nil, options) + return result + } + + /** + * Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user. * - * POST /dashboards -> Dashboard + * PATCH /custom_welcome_email -> CustomWelcomeEmail */ - public func create_dashboard( + @available(*, deprecated) + public func update_custom_welcome_email( /** - * @param {WriteDashboard} body + * @param {CustomWelcomeEmail} body */ - _ body: WriteDashboard, + _ body: CustomWelcomeEmail, + /** + * @param {Bool} send_test_welcome_email If true a test email with the content from the request will be sent to the current user after saving + */ + send_test_welcome_email: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/dashboards", nil, try! self.encode(body), options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/custom_welcome_email", + ["send_test_welcome_email": send_test_welcome_email as Any?], try! self.encode(body), options) return result } /** - * ### Search Dashboards - * - * Returns an array of **user-defined dashboard** objects that match the specified search criteria. - * Note, [search_dashboards()](#!/Dashboard/search_dashboards) does not return LookML dashboard objects. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. + * Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user. * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" + * PUT /custom_welcome_email_test -> WelcomeEmailTest + */ + public func update_custom_welcome_email_test( + /** + * @param {WelcomeEmailTest} body + */ + _ body: WelcomeEmailTest, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.put("/custom_welcome_email_test", nil, try! self.encode(body), options) + return result + } + + /** + * ### Retrieve the value for whether or not digest emails is enabled + * + * GET /digest_emails_enabled -> DigestEmails + */ + public func digest_emails_enabled( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/digest_emails_enabled", nil, nil, options) + return result + } + + /** + * ### Update the setting for enabling/disabling digest emails + * + * PATCH /digest_emails_enabled -> DigestEmails + */ + public func update_digest_emails_enabled( + /** + * @param {DigestEmails} body + */ + _ body: DigestEmails, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.patch("/digest_emails_enabled", nil, try! self.encode(body), options) + return result + } + + /** + * ### Trigger the generation of digest email records and send them to Looker's internal system. This does not send + * any actual emails, it generates records containing content which may be of interest for users who have become inactive. + * Emails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings. + * + * POST /digest_email_send -> DigestEmailSend + */ + public func create_digest_email_send( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/digest_email_send", nil, nil, options) + return result + } + + /** + * ### Get Egress IP Addresses + * + * Returns the list of public egress IP Addresses for a hosted customer's instance + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /public_egress_ip_addresses -> EgressIpAddresses + */ + public func public_egress_ip_addresses( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/public_egress_ip_addresses", nil, nil, options) + return result + } + + /** + * ### Set the menu item name and content for internal help resources + * + * GET /internal_help_resources_content -> InternalHelpResourcesContent + */ + public func internal_help_resources_content( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/internal_help_resources_content", nil, nil, options) + return result + } + + /** + * Update internal help resources content + * + * PATCH /internal_help_resources_content -> InternalHelpResourcesContent + */ + public func update_internal_help_resources_content( + /** + * @param {WriteInternalHelpResourcesContent} body + */ + _ body: WriteInternalHelpResourcesContent, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.patch("/internal_help_resources_content", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get and set the options for internal help resources + * + * GET /internal_help_resources_enabled -> InternalHelpResources + */ + public func internal_help_resources( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/internal_help_resources_enabled", nil, nil, options) + return result + } + + /** + * Update internal help resources settings + * + * PATCH /internal_help_resources -> InternalHelpResources + */ + public func update_internal_help_resources( + /** + * @param {WriteInternalHelpResources} body + */ + _ body: WriteInternalHelpResources, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.patch("/internal_help_resources", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get all legacy features. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /legacy_features -> [LegacyFeature] + */ + public func all_legacy_features( + options: ITransportSettings? = nil + ) -> SDKResponse<[LegacyFeature], SDKError> { + let result: SDKResponse<[LegacyFeature], SDKError> = self.get("/legacy_features", nil, nil, options) + return result + } + + /** + * ### Get information about the legacy feature with a specific id. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /legacy_features/{legacy_feature_id} -> LegacyFeature + */ + public func legacy_feature( + /** + * @param {String} legacy_feature_id id of legacy feature + */ + _ legacy_feature_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_legacy_feature_id = encodeParam(legacy_feature_id) + let result: SDKResponse = self.get("/legacy_features/\(path_legacy_feature_id)", nil, nil, options) + return result + } + + /** + * ### Update information about the legacy feature with a specific id. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * PATCH /legacy_features/{legacy_feature_id} -> LegacyFeature + */ + public func update_legacy_feature( + /** + * @param {String} legacy_feature_id id of legacy feature + */ + _ legacy_feature_id: String, + /** + * @param {WriteLegacyFeature} body + */ + _ body: WriteLegacyFeature, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_legacy_feature_id = encodeParam(legacy_feature_id) + let result: SDKResponse = self.patch("/legacy_features/\(path_legacy_feature_id)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get a list of locales that Looker supports. + * + * GET /locales -> [LkLocale] + */ + public func all_locales( + options: ITransportSettings? = nil + ) -> SDKResponse<[LkLocale], SDKError> { + let result: SDKResponse<[LkLocale], SDKError> = self.get("/locales", nil, nil, options) + return result + } + + /** + * ### Get all mobile settings. + * + * GET /mobile/settings -> MobileSettings + */ + public func mobile_settings( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/mobile/settings", nil, nil, options) + return result + } + + /** + * ### Get Looker Settings + * + * Available settings are: + * - allow_user_timezones + * - custom_welcome_email + * - data_connector_default_enabled + * - extension_framework_enabled + * - extension_load_url_enabled + * - marketplace_auto_install_enabled + * - marketplace_automation + * - marketplace_terms_accepted + * - marketplace_enabled + * - marketplace_site + * - onboarding_enabled + * - privatelabel_configuration + * - timezone + * - host_url + * - email_domain_allowlist + * - embed_cookieless_v2 + * - embed_enabled + * - embed_config + * + * GET /setting -> Setting + */ + public func get_setting( + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/setting", + ["fields": fields], nil, options) + return result + } + + /** + * ### Configure Looker Settings + * + * Available settings are: + * - allow_user_timezones + * - custom_welcome_email + * - data_connector_default_enabled + * - extension_framework_enabled + * - extension_load_url_enabled + * - marketplace_auto_install_enabled + * - marketplace_automation + * - marketplace_terms_accepted + * - marketplace_enabled + * - marketplace_site + * - onboarding_enabled + * - privatelabel_configuration + * - timezone + * - host_url + * - email_domain_allowlist + * - embed_cookieless_v2 + * - embed_enabled + * - embed_config + * + * See the `Setting` type for more information on the specific values that can be configured. + * + * If a setting update is rejected, the API error payload should provide information on the cause of the rejection. + * + * PATCH /setting -> Setting + */ + public func set_setting( + /** + * @param {WriteSetting} body + */ + _ body: WriteSetting, + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.patch("/setting", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Configure SMTP Settings + * This API allows users to configure the SMTP settings on the Looker instance. + * Only admin users are authorised to call this API. + * + * POST /smtp_settings -> Voidable + */ + public func set_smtp_settings( + /** + * @param {SmtpSettings} body + */ + _ body: SmtpSettings, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/smtp_settings", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get current SMTP status. + * + * GET /smtp_status -> SmtpStatus + */ + public func smtp_status( + /** + * @param {String} fields Include only these fields in the response + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/smtp_status", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks). + * + * GET /timezones -> [Timezone] + */ + public func all_timezones( + options: ITransportSettings? = nil + ) -> SDKResponse<[Timezone], SDKError> { + let result: SDKResponse<[Timezone], SDKError> = self.get("/timezones", nil, nil, options) + return result + } + + /** + * ### Get information about all API versions supported by this Looker instance. + * + * GET /versions -> ApiVersion + */ + public func versions( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/versions", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get an API specification for this Looker instance. + * + * The specification is returned as a JSON document in Swagger 2.x format + * + * GET /api_spec/{api_version}/{specification} -> AnyCodable + */ + public func api_spec( + /** + * @param {String} api_version API version + */ + _ api_version: String, + /** + * @param {String} specification Specification name. Typically, this is "swagger.json" + */ + _ specification: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_api_version = encodeParam(api_version) + let path_specification = encodeParam(specification) + let result: SDKResponse = self.get("/api_spec/\(path_api_version)/\(path_specification)", nil, nil, options) + return result + } + + /** + * ### This feature is enabled only by special license. + * ### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc. + * + * GET /whitelabel_configuration -> WhitelabelConfiguration + */ + @available(*, deprecated) + public func whitelabel_configuration( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/whitelabel_configuration", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update the whitelabel configuration + * + * PUT /whitelabel_configuration -> WhitelabelConfiguration + */ + @available(*, deprecated) + public func update_whitelabel_configuration( + /** + * @param {WriteWhitelabelConfiguration} body + */ + _ body: WriteWhitelabelConfiguration, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.put("/whitelabel_configuration", nil, try! self.encode(body), options) + return result + } + + + + // MARK Connection: Manage Database Connections + + /** + * ### Get information about all connections. + * + * GET /connections -> [DBConnection] + */ + public func all_connections( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[DBConnection], SDKError> { + let result: SDKResponse<[DBConnection], SDKError> = self.get("/connections", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create a connection using the specified configuration. + * + * POST /connections -> DBConnection + */ + public func create_connection( + /** + * @param {WriteDBConnection} body + */ + _ body: WriteDBConnection, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/connections", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get information about a connection. + * + * GET /connections/{connection_name} -> DBConnection + */ + public func connection( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.get("/connections/\(path_connection_name)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update a connection using the specified configuration. + * + * PATCH /connections/{connection_name} -> DBConnection + */ + public func update_connection( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {WriteDBConnection} body + */ + _ body: WriteDBConnection, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.patch("/connections/\(path_connection_name)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Delete a connection. + * + * DELETE /connections/{connection_name} -> String + */ + public func delete_connection( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.delete("/connections/\(path_connection_name)", nil, nil, options) + return result + } + + /** + * ### Delete a connection override. + * + * DELETE /connections/{connection_name}/connection_override/{override_context} -> String + */ + public func delete_connection_override( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {String} override_context Context of connection override + */ + _ override_context: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let path_override_context = encodeParam(override_context) + let result: SDKResponse = self.delete("/connections/\(path_connection_name)/connection_override/\(path_override_context)", nil, nil, options) + return result + } + + /** + * ### Test an existing connection. + * + * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the + * specific types of tests that the connection supports. + * + * This API is rate limited. + * + * Unsupported tests in the request will be ignored. + * + * PUT /connections/{connection_name}/test -> [DBConnectionTestResult] + */ + public func test_connection( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {DelimArray} tests Array of names of tests to run + */ + tests: DelimArray? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[DBConnectionTestResult], SDKError> { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse<[DBConnectionTestResult], SDKError> = self.put("/connections/\(path_connection_name)/test", + ["tests": tests as Any?], nil, options) + return result + } + + /** + * ### Test a connection configuration. + * + * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the + * specific types of tests that the connection supports. + * + * This API is rate limited. + * + * Unsupported tests in the request will be ignored. + * + * PUT /connections/test -> [DBConnectionTestResult] + */ + public func test_connection_config( + /** + * @param {WriteDBConnection} body + */ + _ body: WriteDBConnection, + /** + * @param {DelimArray} tests Array of names of tests to run + */ + tests: DelimArray? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[DBConnectionTestResult], SDKError> { + let result: SDKResponse<[DBConnectionTestResult], SDKError> = self.put("/connections/test", + ["tests": tests as Any?], try! self.encode(body), options) + return result + } + + /** + * ### Get information about all dialects. + * + * GET /dialect_info -> [DialectInfo] + */ + public func all_dialect_infos( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[DialectInfo], SDKError> { + let result: SDKResponse<[DialectInfo], SDKError> = self.get("/dialect_info", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get all External OAuth Applications. + * + * This is an OAuth Application which Looker uses to access external systems. + * + * GET /external_oauth_applications -> [ExternalOauthApplication] + */ + public func all_external_oauth_applications( + /** + * @param {String} name Application name + */ + name: String? = nil, + /** + * @param {String} client_id Application Client ID + */ + client_id: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[ExternalOauthApplication], SDKError> { + let result: SDKResponse<[ExternalOauthApplication], SDKError> = self.get("/external_oauth_applications", + ["name": name, "client_id": client_id], nil, options) + return result + } + + /** + * ### Create an OAuth Application using the specified configuration. + * + * This is an OAuth Application which Looker uses to access external systems. + * + * POST /external_oauth_applications -> ExternalOauthApplication + */ + public func create_external_oauth_application( + /** + * @param {WriteExternalOauthApplication} body + */ + _ body: WriteExternalOauthApplication, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/external_oauth_applications", nil, try! self.encode(body), options) + return result + } + + /** + * ### Create OAuth User state. + * + * POST /external_oauth_applications/user_state -> CreateOAuthApplicationUserStateResponse + */ + public func create_oauth_application_user_state( + /** + * @param {CreateOAuthApplicationUserStateRequest} body + */ + _ body: CreateOAuthApplicationUserStateRequest, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/external_oauth_applications/user_state", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get information about all SSH Servers. + * + * GET /ssh_servers -> [SshServer] + */ + public func all_ssh_servers( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[SshServer], SDKError> { + let result: SDKResponse<[SshServer], SDKError> = self.get("/ssh_servers", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create an SSH Server. + * + * POST /ssh_servers -> SshServer + */ + public func create_ssh_server( + /** + * @param {WriteSshServer} body + */ + _ body: WriteSshServer, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/ssh_servers", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get information about an SSH Server. + * + * GET /ssh_server/{ssh_server_id} -> SshServer + */ + public func ssh_server( + /** + * @param {String} ssh_server_id Id of SSH Server + */ + _ ssh_server_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_ssh_server_id = encodeParam(ssh_server_id) + let result: SDKResponse = self.get("/ssh_server/\(path_ssh_server_id)", nil, nil, options) + return result + } + + /** + * ### Update an SSH Server. + * + * PATCH /ssh_server/{ssh_server_id} -> SshServer + */ + public func update_ssh_server( + /** + * @param {String} ssh_server_id Id of SSH Server + */ + _ ssh_server_id: String, + /** + * @param {WriteSshServer} body + */ + _ body: WriteSshServer, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_ssh_server_id = encodeParam(ssh_server_id) + let result: SDKResponse = self.patch("/ssh_server/\(path_ssh_server_id)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Delete an SSH Server. + * + * DELETE /ssh_server/{ssh_server_id} -> String + */ + public func delete_ssh_server( + /** + * @param {String} ssh_server_id Id of SSH Server + */ + _ ssh_server_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_ssh_server_id = encodeParam(ssh_server_id) + let result: SDKResponse = self.delete("/ssh_server/\(path_ssh_server_id)", nil, nil, options) + return result + } + + /** + * ### Test the SSH Server + * + * GET /ssh_server/{ssh_server_id}/test -> SshServer + */ + public func test_ssh_server( + /** + * @param {String} ssh_server_id Id of SSH Server + */ + _ ssh_server_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_ssh_server_id = encodeParam(ssh_server_id) + let result: SDKResponse = self.get("/ssh_server/\(path_ssh_server_id)/test", nil, nil, options) + return result + } + + /** + * ### Get information about all SSH Tunnels. + * + * GET /ssh_tunnels -> [SshTunnel] + */ + public func all_ssh_tunnels( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[SshTunnel], SDKError> { + let result: SDKResponse<[SshTunnel], SDKError> = self.get("/ssh_tunnels", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create an SSH Tunnel + * + * POST /ssh_tunnels -> SshTunnel + */ + public func create_ssh_tunnel( + /** + * @param {WriteSshTunnel} body + */ + _ body: WriteSshTunnel, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/ssh_tunnels", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get information about an SSH Tunnel. + * + * GET /ssh_tunnel/{ssh_tunnel_id} -> SshTunnel + */ + public func ssh_tunnel( + /** + * @param {String} ssh_tunnel_id Id of SSH Tunnel + */ + _ ssh_tunnel_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) + let result: SDKResponse = self.get("/ssh_tunnel/\(path_ssh_tunnel_id)", nil, nil, options) + return result + } + + /** + * ### Update an SSH Tunnel + * + * PATCH /ssh_tunnel/{ssh_tunnel_id} -> SshTunnel + */ + public func update_ssh_tunnel( + /** + * @param {String} ssh_tunnel_id Id of SSH Tunnel + */ + _ ssh_tunnel_id: String, + /** + * @param {WriteSshTunnel} body + */ + _ body: WriteSshTunnel, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) + let result: SDKResponse = self.patch("/ssh_tunnel/\(path_ssh_tunnel_id)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Delete an SSH Tunnel + * + * DELETE /ssh_tunnel/{ssh_tunnel_id} -> String + */ + public func delete_ssh_tunnel( + /** + * @param {String} ssh_tunnel_id Id of SSH Tunnel + */ + _ ssh_tunnel_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) + let result: SDKResponse = self.delete("/ssh_tunnel/\(path_ssh_tunnel_id)", nil, nil, options) + return result + } + + /** + * ### Test the SSH Tunnel + * + * GET /ssh_tunnel/{ssh_tunnel_id}/test -> SshTunnel + */ + public func test_ssh_tunnel( + /** + * @param {String} ssh_tunnel_id Id of SSH Tunnel + */ + _ ssh_tunnel_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) + let result: SDKResponse = self.get("/ssh_tunnel/\(path_ssh_tunnel_id)/test", nil, nil, options) + return result + } + + /** + * ### Get the SSH public key + * + * Get the public key created for this instance to identify itself to a remote SSH server. + * + * GET /ssh_public_key -> SshPublicKey + */ + public func ssh_public_key( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/ssh_public_key", nil, nil, options) + return result + } + + + + // MARK Content: Manage Content + + /** + * ### Search Favorite Content + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /content_favorite/search -> [ContentFavorite] + */ + public func search_content_favorites( + /** + * @param {String} id Match content favorite id(s) + */ + id: String? = nil, + /** + * @param {String} user_id Match user id(s).To create a list of multiple ids, use commas as separators + */ + user_id: String? = nil, + /** + * @param {String} content_metadata_id Match content metadata id(s).To create a list of multiple ids, use commas as separators + */ + content_metadata_id: String? = nil, + /** + * @param {String} dashboard_id Match dashboard id(s).To create a list of multiple ids, use commas as separators + */ + dashboard_id: String? = nil, + /** + * @param {String} look_id Match look id(s).To create a list of multiple ids, use commas as separators + */ + look_id: String? = nil, + /** + * @param {String} board_id Match board id(s).To create a list of multiple ids, use commas as separators + */ + board_id: String? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit) + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[ContentFavorite], SDKError> { + let result: SDKResponse<[ContentFavorite], SDKError> = self.get("/content_favorite/search", + ["id": id, "user_id": user_id, "content_metadata_id": content_metadata_id, "dashboard_id": dashboard_id, "look_id": look_id, "board_id": board_id, "limit": limit, "offset": offset, "sorts": sorts, "fields": fields, "filter_or": filter_or as Any?], nil, options) + return result + } + + /** + * ### Get favorite content by its id + * + * GET /content_favorite/{content_favorite_id} -> ContentFavorite + */ + public func content_favorite( + /** + * @param {String} content_favorite_id Id of favorite content + */ + _ content_favorite_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_content_favorite_id = encodeParam(content_favorite_id) + let result: SDKResponse = self.get("/content_favorite/\(path_content_favorite_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Delete favorite content + * + * DELETE /content_favorite/{content_favorite_id} -> String + */ + public func delete_content_favorite( + /** + * @param {String} content_favorite_id Id of favorite content + */ + _ content_favorite_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_content_favorite_id = encodeParam(content_favorite_id) + let result: SDKResponse = self.delete("/content_favorite/\(path_content_favorite_id)", nil, nil, options) + return result + } + + /** + * ### Create favorite content + * + * POST /content_favorite -> ContentFavorite + */ + public func create_content_favorite( + /** + * @param {WriteContentFavorite} body + */ + _ body: WriteContentFavorite, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/content_favorite", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get information about all content metadata in a space. + * + * GET /content_metadata -> [ContentMeta] + */ + public func all_content_metadatas( + /** + * @param {String} parent_id Parent space of content. + */ + _ parent_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[ContentMeta], SDKError> { + let result: SDKResponse<[ContentMeta], SDKError> = self.get("/content_metadata", + ["parent_id": parent_id, "fields": fields], nil, options) + return result + } + + /** + * ### Get information about an individual content metadata record. + * + * GET /content_metadata/{content_metadata_id} -> ContentMeta + */ + public func content_metadata( + /** + * @param {String} content_metadata_id Id of content metadata + */ + _ content_metadata_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_content_metadata_id = encodeParam(content_metadata_id) + let result: SDKResponse = self.get("/content_metadata/\(path_content_metadata_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Move a piece of content. + * + * PATCH /content_metadata/{content_metadata_id} -> ContentMeta + */ + public func update_content_metadata( + /** + * @param {String} content_metadata_id Id of content metadata + */ + _ content_metadata_id: String, + /** + * @param {WriteContentMeta} body + */ + _ body: WriteContentMeta, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_content_metadata_id = encodeParam(content_metadata_id) + let result: SDKResponse = self.patch("/content_metadata/\(path_content_metadata_id)", nil, try! self.encode(body), options) + return result + } + + /** + * ### All content metadata access records for a content metadata item. + * + * GET /content_metadata_access -> [ContentMetaGroupUser] + */ + public func all_content_metadata_accesses( + /** + * @param {String} content_metadata_id Id of content metadata + */ + _ content_metadata_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[ContentMetaGroupUser], SDKError> { + let result: SDKResponse<[ContentMetaGroupUser], SDKError> = self.get("/content_metadata_access", + ["content_metadata_id": content_metadata_id, "fields": fields], nil, options) + return result + } + + /** + * ### Create content metadata access. + * + * POST /content_metadata_access -> ContentMetaGroupUser + */ + public func create_content_metadata_access( + /** + * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH + */ + _ body: ContentMetaGroupUser, + /** + * @param {Bool} send_boards_notification_email Optionally sends notification email when granting access to a board. + */ + send_boards_notification_email: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/content_metadata_access", + ["send_boards_notification_email": send_boards_notification_email as Any?], try! self.encode(body), options) + return result + } + + /** + * ### Update type of access for content metadata. + * + * PUT /content_metadata_access/{content_metadata_access_id} -> ContentMetaGroupUser + */ + public func update_content_metadata_access( + /** + * @param {String} content_metadata_access_id Id of content metadata access + */ + _ content_metadata_access_id: String, + /** + * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH + */ + _ body: ContentMetaGroupUser, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_content_metadata_access_id = encodeParam(content_metadata_access_id) + let result: SDKResponse = self.put("/content_metadata_access/\(path_content_metadata_access_id)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Remove content metadata access. + * + * DELETE /content_metadata_access/{content_metadata_access_id} -> String + */ + public func delete_content_metadata_access( + /** + * @param {String} content_metadata_access_id Id of content metadata access + */ + _ content_metadata_access_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_content_metadata_access_id = encodeParam(content_metadata_access_id) + let result: SDKResponse = self.delete("/content_metadata_access/\(path_content_metadata_access_id)", nil, nil, options) + return result + } + + /** + * ### Search across looks, dashboards, and lookml dashboards. The terms field will be matched against the + * title and description of the content and the closest results are returned. Content that has been frequently + * viewed and those pieces of content stored in public folders will be ranked more highly in the results. + * + * This endpoint does not return a full description of these content types. For more specific information + * about each type please refer to the individual content specific API endpoints. + * + * Get the **full details** of a specific dashboard (or lookml dashboard) by id with [dashboard()](#!/Dashboard/dashboard) + * Get the **full details** of a specific look by id with [look()](#!/Look/look) + * + * GET /content/{terms} -> [ContentSearch] + */ + public func search_content( + /** + * @param {String} terms Search terms + */ + _ terms: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {String} types Content types requested (dashboard, look, lookml_dashboard). + */ + types: String? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, + /** + * @param {Int64} page Requested page. + */ + page: Int64? = nil, + /** + * @param {Int64} per_page Results per page. + */ + per_page: Int64? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[ContentSearch], SDKError> { + let path_terms = encodeParam(terms) + let result: SDKResponse<[ContentSearch], SDKError> = self.get("/content/\(path_terms)", + ["fields": fields, "types": types, "limit": limit, "offset": offset, "page": page, "per_page": per_page], nil, options) + return result + } + + /** + * ### Get an image representing the contents of a dashboard or look. + * + * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not + * reflect the actual data displayed in the respective visualizations. + * + * GET /content_thumbnail/{type}/{resource_id} -> String + * + * **Note**: Binary content may be returned by this method. + */ + public func content_thumbnail( + /** + * @param {String} type Either dashboard or look + */ + _ type: String, + /** + * @param {String} resource_id ID of the dashboard or look to render + */ + _ resource_id: String, + /** + * @param {String} reload Whether or not to refresh the rendered image with the latest content + */ + reload: String? = nil, + /** + * @param {String} theme Light or dark background. Default is "light" + */ + theme: String? = nil, + /** + * @param {String} format A value of png produces a thumbnail in PNG format instead of SVG (default) + */ + format: String? = nil, + /** + * @param {Int64} width The width of the image if format is supplied + */ + width: Int64? = nil, + /** + * @param {Int64} height The height of the image if format is supplied + */ + height: Int64? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_type = encodeParam(type) + let path_resource_id = encodeParam(resource_id) + let result: SDKResponse = self.get("/content_thumbnail/\(path_type)/\(path_resource_id)", + ["reload": reload, "theme": theme, "format": format, "width": width, "height": height], nil, options) + return result + } + + /** + * ### Validate All Content + * + * Performs validation of all looks and dashboards + * Returns a list of errors found as well as metadata about the content validation run. + * + * GET /content_validation -> ContentValidation + */ + public func content_validation( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/content_validation", + ["fields": fields], nil, options) + return result + } + + /** + * ### Search Content Views + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /content_view/search -> [ContentView] + */ + public func search_content_views( + /** + * @param {String} view_count Match view count + */ + view_count: String? = nil, + /** + * @param {String} group_id Match Group Id + */ + group_id: String? = nil, + /** + * @param {String} look_id Match look_id + */ + look_id: String? = nil, + /** + * @param {String} dashboard_id Match dashboard_id + */ + dashboard_id: String? = nil, + /** + * @param {String} content_metadata_id Match content metadata id + */ + content_metadata_id: String? = nil, + /** + * @param {String} start_of_week_date Match start of week date (format is "YYYY-MM-DD") + */ + start_of_week_date: String? = nil, + /** + * @param {Bool} all_time True if only all time view records should be returned + */ + all_time: Bool? = nil, + /** + * @param {String} user_id Match user id + */ + user_id: String? = nil, + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + /** + * @param {Int64} limit Number of results to return. Use with `offset` to manage pagination of results + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning data + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by + */ + sorts: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[ContentView], SDKError> { + let result: SDKResponse<[ContentView], SDKError> = self.get("/content_view/search", + ["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 as Any?, "user_id": user_id, "fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) + return result + } + + /** + * ### Get a vector image representing the contents of a dashboard or look. + * + * # DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail) + * + * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not + * reflect the actual data displayed in the respective visualizations. + * + * GET /vector_thumbnail/{type}/{resource_id} -> String + */ + @available(*, deprecated) + public func vector_thumbnail( + /** + * @param {String} type Either dashboard or look + */ + _ type: String, + /** + * @param {String} resource_id ID of the dashboard or look to render + */ + _ resource_id: String, + /** + * @param {String} reload Whether or not to refresh the rendered image with the latest content + */ + reload: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_type = encodeParam(type) + let path_resource_id = encodeParam(resource_id) + let result: SDKResponse = self.get("/vector_thumbnail/\(path_type)/\(path_resource_id)", + ["reload": reload], nil, options) + return result + } + + + + // MARK Dashboard: Manage Dashboards + + /** + * ### Get information about all active dashboards. + * + * Returns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list. + * + * Get the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard) + * + * Find **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards) + * + * GET /dashboards -> [DashboardBase] + */ + public func all_dashboards( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[DashboardBase], SDKError> { + let result: SDKResponse<[DashboardBase], SDKError> = self.get("/dashboards", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create a new dashboard + * + * Creates a new dashboard object and returns the details of the newly created dashboard. + * + * `Title` and `space_id` are required fields. + * `Space_id` must contain the id of an existing space. + * A dashboard's `title` must be unique within the space in which it resides. + * + * If you receive a 422 error response when creating a dashboard, be sure to look at the + * response body for information about exactly which fields are missing or contain invalid data. + * + * You can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard) + * + * You can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard) + * + * POST /dashboards -> Dashboard + */ + public func create_dashboard( + /** + * @param {WriteDashboard} body + */ + _ body: WriteDashboard, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/dashboards", nil, try! self.encode(body), options) + return result + } + + /** + * ### Search Dashboards + * + * Returns an array of **user-defined dashboard** objects that match the specified search criteria. + * Note, [search_dashboards()](#!/Dashboard/search_dashboards) does not return LookML dashboard objects. + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" * example="D_m%" will match "Damage" and "dump" * * Integer search params can accept a single value or a comma separated list of values. The multiple @@ -2105,9 +4104,9 @@ open class LookerSDK: APIMethods { */ public func search_dashboards( /** - * @param {Int64} id Match dashboard id. + * @param {String} id Match dashboard id. */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} slug Match dashboard slug. */ @@ -2121,13 +4120,9 @@ open class LookerSDK: APIMethods { */ description: String? = nil, /** - * @param {Int64} content_favorite_id Filter on a content favorite id. + * @param {String} content_favorite_id Filter on a content favorite id. */ - content_favorite_id: Int64? = nil, - /** - * @param {String} space_id Filter on a particular space. - */ - space_id: String? = nil, + content_favorite_id: String? = nil, /** * @param {String} folder_id Filter on a particular space. */ @@ -2145,25 +4140,37 @@ open class LookerSDK: APIMethods { */ view_count: String? = nil, /** - * @param {Int64} content_metadata_id Filter on a content favorite id. + * @param {String} content_metadata_id Filter on a content favorite id. */ - content_metadata_id: Int64? = nil, + content_metadata_id: String? = nil, /** * @param {Bool} curate Exclude items that exist only in personal spaces other than the users */ curate: Bool? = nil, + /** + * @param {String} last_viewed_at Select dashboards based on when they were last viewed + */ + last_viewed_at: String? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {Int64} page Requested page. + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page Results per page. + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, /** * @param {String} sorts One or more fields to sort by. Sortable fields: [:title, :user_id, :id, :created_at, :space_id, :folder_id, :description, :view_count, :favorite_count, :slug, :content_favorite_id, :content_metadata_id, :deleted, :deleted_at, :last_viewed_at, :last_accessed_at] */ @@ -2172,10 +4179,14 @@ open class LookerSDK: APIMethods { * @param {Bool} filter_or Combine given search criteria in a boolean OR expression */ filter_or: Bool? = nil, + /** + * @param {Bool} not_owned_by Filter out the dashboards owned by the user passed at the :user_id params + */ + not_owned_by: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse<[Dashboard], SDKError> { let result: SDKResponse<[Dashboard], SDKError> = self.get("/dashboards/search", - ["id": id, "slug": slug, "title": title, "description": description, "content_favorite_id": content_favorite_id, "space_id": space_id, "folder_id": folder_id, "deleted": deleted, "user_id": user_id, "view_count": view_count, "content_metadata_id": content_metadata_id, "curate": curate as Any?, "fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) + ["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 as Any?, "last_viewed_at": last_viewed_at, "fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "not_owned_by": not_owned_by as Any?], nil, options) return result } @@ -2368,9 +4379,112 @@ open class LookerSDK: APIMethods { */ _ dashboard_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { + ) -> SDKResponse { + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.get("/dashboards/lookml/\(path_dashboard_id)", nil, nil, options) + return result + } + + /** + * ### Move an existing dashboard + * + * Moves a dashboard to a specified folder, and returns the moved dashboard. + * + * `dashboard_id` and `folder_id` are required. + * `dashboard_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard. + * + * PATCH /dashboards/{dashboard_id}/move -> Dashboard + */ + public func move_dashboard( + /** + * @param {String} dashboard_id Dashboard id to move. + */ + _ dashboard_id: String, + /** + * @param {String} folder_id Folder id to move to. + */ + _ folder_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.patch("/dashboards/\(path_dashboard_id)/move", + ["folder_id": folder_id], nil, options) + return result + } + + /** + * ### Creates a dashboard object based on LookML Dashboard YAML, and returns the details of the newly created dashboard. + * + * If a dashboard exists with the YAML-defined "preferred_slug", the new dashboard will overwrite it. Otherwise, a new + * dashboard will be created. Note that when a dashboard is overwritten, alerts will not be maintained. + * + * If a folder_id is specified: new dashboards will be placed in that folder, and overwritten dashboards will be moved to it + * If the folder_id isn't specified: new dashboards will be placed in the caller's personal folder, and overwritten dashboards + * will remain where they were + * + * LookML must contain valid LookML YAML code. It's recommended to use the LookML format returned + * from [dashboard_lookml()](#!/Dashboard/dashboard_lookml) as the input LookML (newlines replaced with + * ). + * + * Note that the created dashboard is not linked to any LookML Dashboard, + * i.e. [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard) will not update dashboards created by this method. + * + * POST /dashboards/lookml -> Dashboard + */ + public func import_dashboard_from_lookml( + /** + * @param {WriteDashboardLookml} body + */ + _ body: WriteDashboardLookml, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/dashboards/lookml", nil, try! self.encode(body), options) + return result + } + + /** + * # DEPRECATED: Use [import_dashboard_from_lookml()](#!/Dashboard/import_dashboard_from_lookml) + * + * POST /dashboards/from_lookml -> Dashboard + */ + public func create_dashboard_from_lookml( + /** + * @param {WriteDashboardLookml} body + */ + _ body: WriteDashboardLookml, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/dashboards/from_lookml", nil, try! self.encode(body), options) + return result + } + + /** + * ### Copy an existing dashboard + * + * Creates a copy of an existing dashboard, in a specified folder, and returns the copied dashboard. + * + * `dashboard_id` is required, `dashboard_id` and `folder_id` must already exist if specified. + * `folder_id` will default to the existing folder. + * + * If a dashboard with the same title already exists in the target folder, the copy will have '(copy)' + * or '(copy <# of copies>)' appended. + * + * POST /dashboards/{dashboard_id}/copy -> Dashboard + */ + public func copy_dashboard( + /** + * @param {String} dashboard_id Dashboard id to copy. + */ + _ dashboard_id: String, + /** + * @param {String} folder_id Folder id to copy to. + */ + folder_id: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.get("/dashboards/lookml/\(path_dashboard_id)", nil, nil, options) + let result: SDKResponse = self.post("/dashboards/\(path_dashboard_id)/copy", + ["folder_id": folder_id], nil, options) return result } @@ -2404,13 +4518,13 @@ open class LookerSDK: APIMethods { */ public func search_dashboard_elements( /** - * @param {Int64} dashboard_id Select elements that refer to a given dashboard id + * @param {String} dashboard_id Select elements that refer to a given dashboard id */ - dashboard_id: Int64? = nil, + dashboard_id: String? = nil, /** - * @param {Int64} look_id Select elements that refer to a given look id + * @param {String} look_id Select elements that refer to a given look id */ - look_id: Int64? = nil, + look_id: String? = nil, /** * @param {String} title Match the title of element */ @@ -3075,11 +5189,11 @@ open class LookerSDK: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page Return only page N of paginated results + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page Return N rows of data per page + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ per_page: Int64? = nil, /** @@ -3099,9 +5213,9 @@ open class LookerSDK: APIMethods { */ name: String? = nil, /** - * @param {Int64} id Match Space id + * @param {String} id Match Space id */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} parent_id Filter on a children of a particular folder. */ @@ -3246,13 +5360,21 @@ open class LookerSDK: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page Return only page N of paginated results + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page Return N rows of data per page + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ @@ -3261,7 +5383,7 @@ open class LookerSDK: APIMethods { ) -> SDKResponse<[Folder], SDKError> { let path_folder_id = encodeParam(folder_id) let result: SDKResponse<[Folder], SDKError> = self.get("/folders/\(path_folder_id)/children", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts], nil, options) + ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts], nil, options) return result } @@ -3400,25 +5522,33 @@ open class LookerSDK: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page Return only page N of paginated results + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page Return N rows of data per page + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ sorts: String? = nil, /** - * @param {DelimArray} ids Optional of ids to get specific groups. + * @param {DelimArray} ids Optional of ids to get specific groups. */ - ids: DelimArray? = nil, + ids: DelimArray? = nil, /** - * @param {Int64} content_metadata_id Id of content metadata to which groups must have access. + * @param {String} content_metadata_id Id of content metadata to which groups must have access. */ - content_metadata_id: Int64? = nil, + content_metadata_id: String? = nil, /** * @param {Bool} can_add_to_content_metadata Select only groups that either can/cannot be given access to content. */ @@ -3426,7 +5556,7 @@ open class LookerSDK: APIMethods { options: ITransportSettings? = nil ) -> SDKResponse<[LkGroup], SDKError> { let result: SDKResponse<[LkGroup], SDKError> = self.get("/groups", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "ids": ids as Any?, "content_metadata_id": content_metadata_id, "can_add_to_content_metadata": can_add_to_content_metadata as Any?], nil, options) + ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "ids": ids as Any?, "content_metadata_id": content_metadata_id, "can_add_to_content_metadata": can_add_to_content_metadata as Any?], nil, options) return result } @@ -3501,9 +5631,9 @@ open class LookerSDK: APIMethods { */ filter_or: Bool? = nil, /** - * @param {Int64} id Match group id. + * @param {String} id Match group id. */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} name Match group name. */ @@ -3528,308 +5658,86 @@ open class LookerSDK: APIMethods { } /** - * ### Get information about a group. + * ### Search groups include roles * - * GET /groups/{group_id} -> LkGroup - */ - public func group( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.get("/groups/\(path_group_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Updates the a group (admin only). + * Returns all group records that match the given search criteria, and attaches any associated roles. * - * PATCH /groups/{group_id} -> LkGroup - */ - public func update_group( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, - /** - * @param {WriteGroup} body - */ - _ body: WriteGroup, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.patch("/groups/\(path_group_id)", - ["fields": fields], try! self.encode(body), options) - return result - } - - /** - * ### Deletes a group (admin only). + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. * - * DELETE /groups/{group_id} -> String - */ - public func delete_group( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)", nil, nil, options) - return result - } - - /** - * ### Get information about all the groups in a group + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. * - * GET /groups/{group_id}/groups -> [LkGroup] - */ - public func all_group_groups( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[LkGroup], SDKError> { - let path_group_id = encodeParam(group_id) - let result: SDKResponse<[LkGroup], SDKError> = self.get("/groups/\(path_group_id)/groups", - ["fields": fields], nil, options) - return result - } - - /** - * ### Adds a new group to a group. + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" * - * POST /groups/{group_id}/groups -> LkGroup - */ - public func add_group_group( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, - /** - * @param {GroupIdForGroupInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH - */ - _ body: GroupIdForGroupInclusion, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.post("/groups/\(path_group_id)/groups", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get information about all the users directly included in a group. + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. * - * GET /groups/{group_id}/users -> [User] + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /groups/search/with_roles -> [GroupSearch] */ - public func all_group_users( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, + public func search_groups_with_roles( /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {Int64} page Return only page N of paginated results + * @param {Int64} limit Number of results to return (used with `offset`). */ - page: Int64? = nil, + limit: Int64? = nil, /** - * @param {Int64} per_page Return N rows of data per page + * @param {Int64} offset Number of results to skip before returning any (used with `limit`). */ - per_page: Int64? = nil, + offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ sorts: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[User], SDKError> { - let path_group_id = encodeParam(group_id) - let result: SDKResponse<[User], SDKError> = self.get("/groups/\(path_group_id)/users", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts], nil, options) - return result - } - - /** - * ### Adds a new user to a group. - * - * POST /groups/{group_id}/users -> User - */ - public func add_group_user( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, - /** - * @param {GroupIdForGroupUserInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH - */ - _ body: GroupIdForGroupUserInclusion, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.post("/groups/\(path_group_id)/users", nil, try! self.encode(body), options) - return result - } - - /** - * ### Removes a user from a group. - * - * DELETE /groups/{group_id}/users/{user_id} -> Voidable - */ - public func delete_group_user( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, - /** - * @param {Int64} user_id Id of user to remove from group - */ - _ user_id: Int64, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)/users/\(path_user_id)", nil, nil, options) - return result - } - - /** - * ### Removes a group from a group. - * - * DELETE /groups/{group_id}/groups/{deleting_group_id} -> Voidable - */ - public func delete_group_from_group( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, - /** - * @param {Int64} deleting_group_id Id of group to delete - */ - _ deleting_group_id: Int64, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_deleting_group_id = encodeParam(deleting_group_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)/groups/\(path_deleting_group_id)", nil, nil, options) - return result - } - - /** - * ### Set the value of a user attribute for a group. - * - * For information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values). - * - * PATCH /groups/{group_id}/attribute_values/{user_attribute_id} -> UserAttributeGroupValue - */ - public func update_user_attribute_group_value( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, - /** - * @param {Int64} user_attribute_id Id of user attribute - */ - _ user_attribute_id: Int64, - /** - * @param {UserAttributeGroupValue} body WARNING: no writeable properties found for POST, PUT, or PATCH - */ - _ body: UserAttributeGroupValue, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_user_attribute_id = encodeParam(user_attribute_id) - let result: SDKResponse = self.patch("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Remove a user attribute value from a group. - * - * DELETE /groups/{group_id}/attribute_values/{user_attribute_id} -> Voidable - */ - public func delete_user_attribute_group_value( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, - /** - * @param {Int64} user_attribute_id Id of user attribute - */ - _ user_attribute_id: Int64, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_user_attribute_id = encodeParam(user_attribute_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, nil, options) - return result - } - - - - // MARK Homepage: Manage Homepage - - /** - * ### Get information about all homepages. - * - * GET /homepages -> [Homepage] - */ - @available(*, deprecated) - public func all_homepages( /** - * @param {String} fields Requested fields. + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[Homepage], SDKError> { - let result: SDKResponse<[Homepage], SDKError> = self.get("/homepages", - ["fields": fields], nil, options) - return result - } - - /** - * ### Create a new homepage. - * - * POST /homepages -> Homepage - */ - @available(*, deprecated) - public func create_homepage( + filter_or: Bool? = nil, /** - * @param {WriteHomepage} body + * @param {String} id Match group id. */ - _ body: WriteHomepage, + id: String? = nil, /** - * @param {String} fields Requested fields. + * @param {String} name Match group name. */ - fields: String? = nil, + name: String? = nil, + /** + * @param {String} external_group_id Match group external_group_id. + */ + external_group_id: String? = nil, + /** + * @param {Bool} externally_managed Match group externally_managed. + */ + externally_managed: Bool? = nil, + /** + * @param {Bool} externally_orphaned Match group externally_orphaned. + */ + externally_orphaned: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/homepages", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse<[GroupSearch], SDKError> { + let result: SDKResponse<[GroupSearch], SDKError> = self.get("/groups/search/with_roles", + ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) return result } /** - * ### Search Homepages + * ### Search groups include hierarchy + * + * Returns all group records that match the given search criteria, and attaches + * associated role_ids and parent group_ids. * * If multiple search params are given and `filter_or` is FALSE or not specified, * search params are combined in a logical AND operation. @@ -3852,365 +5760,325 @@ open class LookerSDK: APIMethods { * * Boolean search params accept only "true" and "false" as values. * - * GET /homepages/search -> [Homepage] + * GET /groups/search/with_hierarchy -> [GroupHierarchy] */ - @available(*, deprecated) - public func search_homepages( - /** - * @param {String} title Matches homepage title. - */ - title: String? = nil, - /** - * @param {String} created_at Matches the timestamp for when the homepage was created. - */ - created_at: String? = nil, - /** - * @param {String} first_name The first name of the user who created this homepage. - */ - first_name: String? = nil, - /** - * @param {String} last_name The last name of the user who created this homepage. - */ - last_name: String? = nil, + public func search_groups_with_hierarchy( /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {Bool} favorited Return favorited homepages when true. + * @param {Int64} limit Number of results to return (used with `offset`). */ - favorited: Bool? = nil, + limit: Int64? = nil, /** - * @param {String} creator_id Filter on homepages created by a particular user. + * @param {Int64} offset Number of results to skip before returning any (used with `limit`). */ - creator_id: String? = nil, + offset: Int64? = nil, /** - * @param {Int64} page The page to return. + * @param {String} sorts Fields to sort by. */ - page: Int64? = nil, + sorts: String? = nil, /** - * @param {Int64} per_page The number of items in the returned page. + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression */ - per_page: Int64? = nil, + filter_or: Bool? = nil, /** - * @param {Int64} offset The number of items to skip before returning any. (used with limit and takes priority over page and per_page) + * @param {String} id Match group id. */ - offset: Int64? = nil, + id: String? = nil, /** - * @param {Int64} limit The maximum number of items to return. (used with offset and takes priority over page and per_page) + * @param {String} name Match group name. */ - limit: Int64? = nil, + name: String? = nil, /** - * @param {String} sorts The fields to sort the results by. + * @param {String} external_group_id Match group external_group_id. */ - sorts: String? = nil, + external_group_id: String? = nil, /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {Bool} externally_managed Match group externally_managed. */ - filter_or: Bool? = nil, + externally_managed: Bool? = nil, + /** + * @param {Bool} externally_orphaned Match group externally_orphaned. + */ + externally_orphaned: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Homepage], SDKError> { - let result: SDKResponse<[Homepage], SDKError> = self.get("/homepages/search", - ["title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited as Any?, "creator_id": creator_id, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) + ) -> SDKResponse<[GroupHierarchy], SDKError> { + let result: SDKResponse<[GroupHierarchy], SDKError> = self.get("/groups/search/with_hierarchy", + ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) return result } /** - * ### Get information about a homepage. + * ### Get information about a group. * - * GET /homepages/{homepage_id} -> Homepage + * GET /groups/{group_id} -> LkGroup */ - @available(*, deprecated) - public func homepage( + public func group( /** - * @param {Int64} homepage_id Id of homepage + * @param {String} group_id Id of group */ - _ homepage_id: Int64, + _ group_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_homepage_id = encodeParam(homepage_id) - let result: SDKResponse = self.get("/homepages/\(path_homepage_id)", + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.get("/groups/\(path_group_id)", ["fields": fields], nil, options) return result } /** - * ### Update a homepage definition. + * ### Updates the a group (admin only). * - * PATCH /homepages/{homepage_id} -> Homepage + * PATCH /groups/{group_id} -> LkGroup */ - @available(*, deprecated) - public func update_homepage( + public func update_group( /** - * @param {Int64} homepage_id Id of homepage + * @param {String} group_id Id of group */ - _ homepage_id: Int64, + _ group_id: String, /** - * @param {WriteHomepage} body + * @param {WriteGroup} body */ - _ body: WriteHomepage, + _ body: WriteGroup, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_homepage_id = encodeParam(homepage_id) - let result: SDKResponse = self.patch("/homepages/\(path_homepage_id)", + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.patch("/groups/\(path_group_id)", ["fields": fields], try! self.encode(body), options) return result } /** - * ### Delete a homepage. + * ### Deletes a group (admin only). * - * DELETE /homepages/{homepage_id} -> String + * DELETE /groups/{group_id} -> String */ - @available(*, deprecated) - public func delete_homepage( + public func delete_group( /** - * @param {Int64} homepage_id Id of homepage + * @param {String} group_id Id of group */ - _ homepage_id: Int64, + _ group_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_homepage_id = encodeParam(homepage_id) - let result: SDKResponse = self.delete("/homepages/\(path_homepage_id)", nil, nil, options) + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)", nil, nil, options) return result } /** - * ### Get information about all homepage items. + * ### Get information about all the groups in a group * - * GET /homepage_items -> [HomepageItem] + * GET /groups/{group_id}/groups -> [LkGroup] */ - @available(*, deprecated) - public func all_homepage_items( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func all_group_groups( /** - * @param {String} sorts Fields to sort by. + * @param {String} group_id Id of group */ - sorts: String? = nil, + _ group_id: String, /** - * @param {String} homepage_section_id Filter to a specific homepage section + * @param {String} fields Requested fields. */ - homepage_section_id: String? = nil, + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[HomepageItem], SDKError> { - let result: SDKResponse<[HomepageItem], SDKError> = self.get("/homepage_items", - ["fields": fields, "sorts": sorts, "homepage_section_id": homepage_section_id], nil, options) + ) -> SDKResponse<[LkGroup], SDKError> { + let path_group_id = encodeParam(group_id) + let result: SDKResponse<[LkGroup], SDKError> = self.get("/groups/\(path_group_id)/groups", + ["fields": fields], nil, options) return result } /** - * ### Create a new homepage item. + * ### Adds a new group to a group. * - * POST /homepage_items -> HomepageItem + * POST /groups/{group_id}/groups -> LkGroup */ - @available(*, deprecated) - public func create_homepage_item( + public func add_group_group( /** - * @param {WriteHomepageItem} body + * @param {String} group_id Id of group */ - _ body: WriteHomepageItem, + _ group_id: String, /** - * @param {String} fields Requested fields. + * @param {GroupIdForGroupInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH */ - fields: String? = nil, + _ body: GroupIdForGroupInclusion, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/homepage_items", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.post("/groups/\(path_group_id)/groups", nil, try! self.encode(body), options) return result } /** - * ### Get information about a homepage item. + * ### Get information about all the users directly included in a group. * - * GET /homepage_items/{homepage_item_id} -> HomepageItem + * GET /groups/{group_id}/users -> [User] */ - @available(*, deprecated) - public func homepage_item( + public func all_group_users( /** - * @param {Int64} homepage_item_id Id of homepage item + * @param {String} group_id Id of group */ - _ homepage_item_id: Int64, + _ group_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_homepage_item_id = encodeParam(homepage_item_id) - let result: SDKResponse = self.get("/homepage_items/\(path_homepage_item_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update a homepage item definition. - * - * PATCH /homepage_items/{homepage_item_id} -> HomepageItem - */ - @available(*, deprecated) - public func update_homepage_item( /** - * @param {Int64} homepage_item_id Id of homepage item + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ - _ homepage_item_id: Int64, + page: Int64? = nil, /** - * @param {WriteHomepageItem} body + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ - _ body: WriteHomepageItem, + per_page: Int64? = nil, /** - * @param {String} fields Requested fields. + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_homepage_item_id = encodeParam(homepage_item_id) - let result: SDKResponse = self.patch("/homepage_items/\(path_homepage_item_id)", - ["fields": fields], try! self.encode(body), options) - return result - } - - /** - * ### Delete a homepage item. - * - * DELETE /homepage_items/{homepage_item_id} -> String - */ - @available(*, deprecated) - public func delete_homepage_item( + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, /** - * @param {Int64} homepage_item_id Id of homepage item + * @param {String} sorts Fields to sort by. */ - _ homepage_item_id: Int64, + sorts: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_homepage_item_id = encodeParam(homepage_item_id) - let result: SDKResponse = self.delete("/homepage_items/\(path_homepage_item_id)", nil, nil, options) + ) -> SDKResponse<[User], SDKError> { + let path_group_id = encodeParam(group_id) + let result: SDKResponse<[User], SDKError> = self.get("/groups/\(path_group_id)/users", + ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts], nil, options) return result } /** - * ### Get information about all homepage sections. + * ### Adds a new user to a group. * - * GET /homepage_sections -> [HomepageSection] + * POST /groups/{group_id}/users -> User */ - @available(*, deprecated) - public func all_homepage_sections( + public func add_group_user( /** - * @param {String} fields Requested fields. + * @param {String} group_id Id of group */ - fields: String? = nil, + _ group_id: String, /** - * @param {String} sorts Fields to sort by. + * @param {GroupIdForGroupUserInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH */ - sorts: String? = nil, + _ body: GroupIdForGroupUserInclusion, options: ITransportSettings? = nil - ) -> SDKResponse<[HomepageSection], SDKError> { - let result: SDKResponse<[HomepageSection], SDKError> = self.get("/homepage_sections", - ["fields": fields, "sorts": sorts], nil, options) + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.post("/groups/\(path_group_id)/users", nil, try! self.encode(body), options) return result } /** - * ### Create a new homepage section. + * ### Removes a user from a group. * - * POST /homepage_sections -> HomepageSection + * DELETE /groups/{group_id}/users/{user_id} -> Voidable */ - @available(*, deprecated) - public func create_homepage_section( + public func delete_group_user( /** - * @param {WriteHomepageSection} body + * @param {String} group_id Id of group */ - _ body: WriteHomepageSection, + _ group_id: String, /** - * @param {String} fields Requested fields. + * @param {String} user_id Id of user to remove from group */ - fields: String? = nil, + _ user_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/homepage_sections", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let path_user_id = encodeParam(user_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)/users/\(path_user_id)", nil, nil, options) return result } /** - * ### Get information about a homepage section. + * ### Removes a group from a group. * - * GET /homepage_sections/{homepage_section_id} -> HomepageSection + * DELETE /groups/{group_id}/groups/{deleting_group_id} -> Voidable */ - @available(*, deprecated) - public func homepage_section( + public func delete_group_from_group( /** - * @param {Int64} homepage_section_id Id of homepage section + * @param {String} group_id Id of group */ - _ homepage_section_id: Int64, + _ group_id: String, /** - * @param {String} fields Requested fields. + * @param {String} deleting_group_id Id of group to delete */ - fields: String? = nil, + _ deleting_group_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_homepage_section_id = encodeParam(homepage_section_id) - let result: SDKResponse = self.get("/homepage_sections/\(path_homepage_section_id)", - ["fields": fields], nil, options) + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let path_deleting_group_id = encodeParam(deleting_group_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)/groups/\(path_deleting_group_id)", nil, nil, options) return result } /** - * ### Update a homepage section definition. + * ### Set the value of a user attribute for a group. + * + * For information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values). * - * PATCH /homepage_sections/{homepage_section_id} -> HomepageSection + * PATCH /groups/{group_id}/attribute_values/{user_attribute_id} -> UserAttributeGroupValue */ - @available(*, deprecated) - public func update_homepage_section( + public func update_user_attribute_group_value( /** - * @param {Int64} homepage_section_id Id of homepage section + * @param {String} group_id Id of group */ - _ homepage_section_id: Int64, + _ group_id: String, /** - * @param {WriteHomepageSection} body + * @param {String} user_attribute_id Id of user attribute */ - _ body: WriteHomepageSection, + _ user_attribute_id: String, /** - * @param {String} fields Requested fields. + * @param {UserAttributeGroupValue} body WARNING: no writeable properties found for POST, PUT, or PATCH */ - fields: String? = nil, + _ body: UserAttributeGroupValue, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_homepage_section_id = encodeParam(homepage_section_id) - let result: SDKResponse = self.patch("/homepage_sections/\(path_homepage_section_id)", - ["fields": fields], try! self.encode(body), options) + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let path_user_attribute_id = encodeParam(user_attribute_id) + let result: SDKResponse = self.patch("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, try! self.encode(body), options) return result } /** - * ### Delete a homepage section. + * ### Remove a user attribute value from a group. * - * DELETE /homepage_sections/{homepage_section_id} -> String + * DELETE /groups/{group_id}/attribute_values/{user_attribute_id} -> Voidable */ - @available(*, deprecated) - public func delete_homepage_section( + public func delete_user_attribute_group_value( + /** + * @param {String} group_id Id of group + */ + _ group_id: String, /** - * @param {Int64} homepage_section_id Id of homepage section + * @param {String} user_attribute_id Id of user attribute */ - _ homepage_section_id: Int64, + _ user_attribute_id: String, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_homepage_section_id = encodeParam(homepage_section_id) - let result: SDKResponse = self.delete("/homepage_sections/\(path_homepage_section_id)", nil, nil, options) + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let path_user_attribute_id = encodeParam(user_attribute_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, nil, options) return result } + + + // MARK Homepage: Manage Homepage + /** * ### Get information about the primary homepage's sections. * @@ -4279,9 +6147,9 @@ open class LookerSDK: APIMethods { */ public func integration_hub( /** - * @param {Int64} integration_hub_id Id of integration_hub + * @param {String} integration_hub_id Id of integration_hub */ - _ integration_hub_id: Int64, + _ integration_hub_id: String, /** * @param {String} fields Requested fields. */ @@ -4303,9 +6171,9 @@ open class LookerSDK: APIMethods { */ public func update_integration_hub( /** - * @param {Int64} integration_hub_id Id of integration_hub + * @param {String} integration_hub_id Id of integration_hub */ - _ integration_hub_id: Int64, + _ integration_hub_id: String, /** * @param {WriteIntegrationHub} body */ @@ -4329,9 +6197,9 @@ open class LookerSDK: APIMethods { */ public func delete_integration_hub( /** - * @param {Int64} integration_hub_id Id of integration_hub + * @param {String} integration_hub_id Id of integration_hub */ - _ integration_hub_id: Int64, + _ integration_hub_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_integration_hub_id = encodeParam(integration_hub_id) @@ -4346,9 +6214,9 @@ open class LookerSDK: APIMethods { */ public func accept_integration_hub_legal_agreement( /** - * @param {Int64} integration_hub_id Id of integration_hub + * @param {String} integration_hub_id Id of integration_hub */ - _ integration_hub_id: Int64, + _ integration_hub_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_integration_hub_id = encodeParam(integration_hub_id) @@ -4465,6 +6333,27 @@ open class LookerSDK: APIMethods { + // MARK JdbcInterface: LookML Model metadata for JDBC Clients + + /** + * ### Handle Avatica RPC Requests + * + * GET /__jdbc_interface__ -> JdbcInterface + */ + public func jdbc_interface( + /** + * @param {String} avatica_request Avatica RPC request + */ + avatica_request: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/__jdbc_interface__", + ["avatica_request": avatica_request], nil, options) + return result + } + + + // MARK Look: Run and Manage Looks /** @@ -4562,13 +6451,13 @@ open class LookerSDK: APIMethods { */ description: String? = nil, /** - * @param {Int64} content_favorite_id Select looks with a particular content favorite id + * @param {String} content_favorite_id Select looks with a particular content favorite id */ - content_favorite_id: Int64? = nil, + content_favorite_id: String? = nil, /** - * @param {String} space_id Select looks in a particular space. + * @param {String} folder_id Select looks in a particular folder. */ - space_id: String? = nil, + folder_id: String? = nil, /** * @param {String} user_id Select looks created by a particular user. */ @@ -4582,25 +6471,37 @@ open class LookerSDK: APIMethods { */ deleted: Bool? = nil, /** - * @param {Int64} query_id Select looks that reference a particular query by query_id + * @param {String} query_id Select looks that reference a particular query by query_id */ - query_id: Int64? = nil, + query_id: String? = nil, /** * @param {Bool} curate Exclude items that exist only in personal spaces other than the users */ curate: Bool? = nil, + /** + * @param {String} last_viewed_at Select looks based on when they were last viewed + */ + last_viewed_at: String? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {Int64} page Requested page. + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page Results per page. + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, /** * @param {String} sorts One or more fields to sort results by. Sortable fields: [:title, :user_id, :id, :created_at, :space_id, :folder_id, :description, :updated_at, :last_updater_id, :view_count, :favorite_count, :content_favorite_id, :deleted, :deleted_at, :last_viewed_at, :last_accessed_at, :query_id] */ @@ -4612,7 +6513,7 @@ open class LookerSDK: APIMethods { options: ITransportSettings? = nil ) -> SDKResponse<[Look], SDKError> { let result: SDKResponse<[Look], SDKError> = self.get("/looks/search", - ["id": id, "title": title, "description": description, "content_favorite_id": content_favorite_id, "space_id": space_id, "user_id": user_id, "view_count": view_count, "deleted": deleted as Any?, "query_id": query_id, "curate": curate as Any?, "fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) + ["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 as Any?, "query_id": query_id, "curate": curate as Any?, "last_viewed_at": last_viewed_at, "fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) return result } @@ -4625,9 +6526,9 @@ open class LookerSDK: APIMethods { */ public func look( /** - * @param {Int64} look_id Id of look + * @param {String} look_id Id of look */ - _ look_id: Int64, + _ look_id: String, /** * @param {String} fields Requested fields. */ @@ -4666,9 +6567,9 @@ open class LookerSDK: APIMethods { */ public func update_look( /** - * @param {Int64} look_id Id of look + * @param {String} look_id Id of look */ - _ look_id: Int64, + _ look_id: String, /** * @param {WriteLookWithQuery} body */ @@ -4698,9 +6599,9 @@ open class LookerSDK: APIMethods { */ public func delete_look( /** - * @param {Int64} look_id Id of look + * @param {String} look_id Id of look */ - _ look_id: Int64, + _ look_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_look_id = encodeParam(look_id) @@ -4734,9 +6635,9 @@ open class LookerSDK: APIMethods { */ public func run_look( /** - * @param {Int64} look_id Id of look + * @param {String} look_id Id of look */ - _ look_id: Int64, + _ look_id: String, /** * @param {String} result_format Format of result */ @@ -4798,6 +6699,61 @@ open class LookerSDK: APIMethods { return result } + /** + * ### Copy an existing look + * + * Creates a copy of an existing look, in a specified folder, and returns the copied look. + * + * `look_id` and `folder_id` are required. + * + * `look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard. + * + * POST /looks/{look_id}/copy -> LookWithQuery + */ + public func copy_look( + /** + * @param {String} look_id Look id to copy. + */ + _ look_id: String, + /** + * @param {String} folder_id Folder id to copy to. + */ + folder_id: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_look_id = encodeParam(look_id) + let result: SDKResponse = self.post("/looks/\(path_look_id)/copy", + ["folder_id": folder_id], nil, options) + return result + } + + /** + * ### Move an existing look + * + * Moves a look to a specified folder, and returns the moved look. + * + * `look_id` and `folder_id` are required. + * `look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard. + * + * PATCH /looks/{look_id}/move -> LookWithQuery + */ + public func move_look( + /** + * @param {String} look_id Look id to move. + */ + _ look_id: String, + /** + * @param {String} folder_id Folder id to move to. + */ + _ folder_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_look_id = encodeParam(look_id) + let result: SDKResponse = self.patch("/looks/\(path_look_id)/move", + ["folder_id": folder_id], nil, options) + return result + } + // MARK LookmlModel: Manage LookML Models @@ -4812,10 +6768,18 @@ open class LookerSDK: APIMethods { * @param {String} fields Requested fields. */ fields: String? = nil, + /** + * @param {Int64} limit Number of results to return. (can be used with offset) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (Defaults to 0 if not set when limit is used) + */ + offset: Int64? = nil, options: ITransportSettings? = nil ) -> SDKResponse<[LookmlModel], SDKError> { let result: SDKResponse<[LookmlModel], SDKError> = self.get("/lookml_models", - ["fields": fields], nil, options) + ["fields": fields, "limit": limit, "offset": offset], nil, options) return result } @@ -4826,106 +6790,435 @@ open class LookerSDK: APIMethods { */ public func create_lookml_model( /** - * @param {WriteLookmlModel} body + * @param {WriteLookmlModel} body + */ + _ body: WriteLookmlModel, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/lookml_models", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get information about a lookml model. + * + * GET /lookml_models/{lookml_model_name} -> LookmlModel + */ + public func lookml_model( + /** + * @param {String} lookml_model_name Name of lookml model. + */ + _ lookml_model_name: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_lookml_model_name = encodeParam(lookml_model_name) + let result: SDKResponse = self.get("/lookml_models/\(path_lookml_model_name)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update a lookml model using the specified configuration. + * + * PATCH /lookml_models/{lookml_model_name} -> LookmlModel + */ + public func update_lookml_model( + /** + * @param {String} lookml_model_name Name of lookml model. + */ + _ lookml_model_name: String, + /** + * @param {WriteLookmlModel} body + */ + _ body: WriteLookmlModel, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_lookml_model_name = encodeParam(lookml_model_name) + let result: SDKResponse = self.patch("/lookml_models/\(path_lookml_model_name)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Delete a lookml model. + * + * DELETE /lookml_models/{lookml_model_name} -> String + */ + public func delete_lookml_model( + /** + * @param {String} lookml_model_name Name of lookml model. + */ + _ lookml_model_name: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_lookml_model_name = encodeParam(lookml_model_name) + let result: SDKResponse = self.delete("/lookml_models/\(path_lookml_model_name)", nil, nil, options) + return result + } + + /** + * ### Get information about a lookml model explore. + * + * GET /lookml_models/{lookml_model_name}/explores/{explore_name} -> LookmlModelExplore + */ + public func lookml_model_explore( + /** + * @param {String} lookml_model_name Name of lookml model. + */ + _ lookml_model_name: String, + /** + * @param {String} explore_name Name of explore. + */ + _ explore_name: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_lookml_model_name = encodeParam(lookml_model_name) + let path_explore_name = encodeParam(explore_name) + let result: SDKResponse = self.get("/lookml_models/\(path_lookml_model_name)/explores/\(path_explore_name)", + ["fields": fields], nil, options) + return result + } + + + + // MARK Metadata: Connection Metadata Features + + /** + * ### Field name suggestions for a model and view + * + * `filters` is a string hash of values, with the key as the field name and the string value as the filter expression: + * + * ```ruby + * {'users.age': '>=60'} + * ``` + * + * or + * + * ```ruby + * {'users.age': '<30'} + * ``` + * + * or + * + * ```ruby + * {'users.age': '=50'} + * ``` + * + * GET /models/{model_name}/views/{view_name}/fields/{field_name}/suggestions -> ModelFieldSuggestions + */ + public func model_fieldname_suggestions( + /** + * @param {String} model_name Name of model + */ + _ model_name: String, + /** + * @param {String} view_name Name of view + */ + _ view_name: String, + /** + * @param {String} field_name Name of field to use for suggestions + */ + _ field_name: String, + /** + * @param {String} term Search term pattern (evaluated as as `%term%`) + */ + term: String? = nil, + /** + * @param {Any} filters Suggestion filters with field name keys and comparison expressions + */ + filters: Any? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_model_name = encodeParam(model_name) + let path_view_name = encodeParam(view_name) + let path_field_name = encodeParam(field_name) + let result: SDKResponse = self.get("/models/\(path_model_name)/views/\(path_view_name)/fields/\(path_field_name)/suggestions", + ["term": term, "filters": filters], nil, options) + return result + } + + /** + * ### Get a single model + * + * GET /models/{model_name} -> Model + */ + public func get_model( + /** + * @param {String} model_name Name of model + */ + _ model_name: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_model_name = encodeParam(model_name) + let result: SDKResponse = self.get("/models/\(path_model_name)", nil, nil, options) + return result + } + + /** + * ### List databases available to this connection + * + * Certain dialects can support multiple databases per single connection. + * If this connection supports multiple databases, the database names will be returned in an array. + * + * Connections using dialects that do not support multiple databases will return an empty array. + * + * **Note**: [Connection Features](#!/Metadata/connection_features) can be used to determine if a connection supports + * multiple databases. + * + * GET /connections/{connection_name}/databases -> [String] + */ + public func connection_databases( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + options: ITransportSettings? = nil + ) -> SDKResponse<[String], SDKError> { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse<[String], SDKError> = self.get("/connections/\(path_connection_name)/databases", nil, nil, options) + return result + } + + /** + * ### Retrieve metadata features for this connection + * + * Returns a list of feature names with `true` (available) or `false` (not available) + * + * GET /connections/{connection_name}/features -> ConnectionFeatures + */ + public func connection_features( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.get("/connections/\(path_connection_name)/features", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get the list of schemas and tables for a connection + * + * GET /connections/{connection_name}/schemas -> [Schema] + */ + public func connection_schemas( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {String} database For dialects that support multiple databases, optionally identify which to use + */ + database: String? = nil, + /** + * @param {Bool} cache True to use fetch from cache, false to load fresh + */ + cache: Bool? = nil, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[Schema], SDKError> { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse<[Schema], SDKError> = self.get("/connections/\(path_connection_name)/schemas", + ["database": database, "cache": cache as Any?, "fields": fields], nil, options) + return result + } + + /** + * ### Get the list of tables for a schema + * + * For dialects that support multiple databases, optionally identify which to use. If not provided, the default + * database for the connection will be used. + * + * For dialects that do **not** support multiple databases, **do not use** the database parameter + * + * GET /connections/{connection_name}/tables -> [SchemaTables] + */ + public func connection_tables( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {String} database Optional. Name of database to use for the query, only if applicable + */ + database: String? = nil, + /** + * @param {String} schema_name Optional. Return only tables for this schema + */ + schema_name: String? = nil, + /** + * @param {Bool} cache True to fetch from cache, false to load fresh + */ + cache: Bool? = nil, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {String} table_filter Optional. Return tables with names that contain this value */ - _ body: WriteLookmlModel, + table_filter: String? = nil, + /** + * @param {Int64} table_limit Optional. Return tables up to the table_limit + */ + table_limit: Int64? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/lookml_models", nil, try! self.encode(body), options) + ) -> SDKResponse<[SchemaTables], SDKError> { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse<[SchemaTables], SDKError> = self.get("/connections/\(path_connection_name)/tables", + ["database": database, "schema_name": schema_name, "cache": cache as Any?, "fields": fields, "table_filter": table_filter, "table_limit": table_limit], nil, options) return result } /** - * ### Get information about a lookml model. + * ### Get the columns (and therefore also the tables) in a specific schema * - * GET /lookml_models/{lookml_model_name} -> LookmlModel + * GET /connections/{connection_name}/columns -> [SchemaColumns] */ - public func lookml_model( + public func connection_columns( /** - * @param {String} lookml_model_name Name of lookml model. + * @param {String} connection_name Name of connection */ - _ lookml_model_name: String, + _ connection_name: String, + /** + * @param {String} database For dialects that support multiple databases, optionally identify which to use + */ + database: String? = nil, + /** + * @param {String} schema_name Name of schema to use. + */ + schema_name: String? = nil, + /** + * @param {Bool} cache True to fetch from cache, false to load fresh + */ + cache: Bool? = nil, + /** + * @param {Int64} table_limit limits the tables per schema returned + */ + table_limit: Int64? = nil, + /** + * @param {String} table_names only fetch columns for a given (comma-separated) list of tables + */ + table_names: String? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_lookml_model_name = encodeParam(lookml_model_name) - let result: SDKResponse = self.get("/lookml_models/\(path_lookml_model_name)", - ["fields": fields], nil, options) + ) -> SDKResponse<[SchemaColumns], SDKError> { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse<[SchemaColumns], SDKError> = self.get("/connections/\(path_connection_name)/columns", + ["database": database, "schema_name": schema_name, "cache": cache as Any?, "table_limit": table_limit, "table_names": table_names, "fields": fields], nil, options) return result } /** - * ### Update a lookml model using the specified configuration. + * ### Search a connection for columns matching the specified name * - * PATCH /lookml_models/{lookml_model_name} -> LookmlModel + * **Note**: `column_name` must be a valid column name. It is not a search pattern. + * + * GET /connections/{connection_name}/search_columns -> [ColumnSearch] */ - public func update_lookml_model( + public func connection_search_columns( /** - * @param {String} lookml_model_name Name of lookml model. + * @param {String} connection_name Name of connection */ - _ lookml_model_name: String, + _ connection_name: String, /** - * @param {WriteLookmlModel} body + * @param {String} column_name Column name to find */ - _ body: WriteLookmlModel, + column_name: String? = nil, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_lookml_model_name = encodeParam(lookml_model_name) - let result: SDKResponse = self.patch("/lookml_models/\(path_lookml_model_name)", nil, try! self.encode(body), options) + ) -> SDKResponse<[ColumnSearch], SDKError> { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse<[ColumnSearch], SDKError> = self.get("/connections/\(path_connection_name)/search_columns", + ["column_name": column_name, "fields": fields], nil, options) return result } /** - * ### Delete a lookml model. + * ### Connection cost estimating * - * DELETE /lookml_models/{lookml_model_name} -> String + * Assign a `sql` statement to the body of the request. e.g., for Ruby, `{sql: 'select * from users'}` + * + * **Note**: If the connection's dialect has no support for cost estimates, an error will be returned + * + * POST /connections/{connection_name}/cost_estimate -> CostEstimate */ - public func delete_lookml_model( + public func connection_cost_estimate( /** - * @param {String} lookml_model_name Name of lookml model. + * @param {String} connection_name Name of connection */ - _ lookml_model_name: String, + _ connection_name: String, + /** + * @param {CreateCostEstimate} body WARNING: no writeable properties found for POST, PUT, or PATCH + */ + _ body: CreateCostEstimate, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_lookml_model_name = encodeParam(lookml_model_name) - let result: SDKResponse = self.delete("/lookml_models/\(path_lookml_model_name)", nil, nil, options) + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.post("/connections/\(path_connection_name)/cost_estimate", + ["fields": fields], try! self.encode(body), options) return result } + + + // MARK Project: Manage Projects + /** - * ### Get information about a lookml model explore. + * ### Generate Lockfile for All LookML Dependencies * - * GET /lookml_models/{lookml_model_name}/explores/{explore_name} -> LookmlModelExplore + * Git must have been configured, must be in dev mode and deploy permission required + * + * Install_all is a two step process + * 1. For each remote_dependency in a project the dependency manager will resolve any ambiguous ref. + * 2. The project will then write out a lockfile including each remote_dependency with its resolved ref. + * + * POST /projects/{project_id}/manifest/lock_all -> String */ - public func lookml_model_explore( + public func lock_all( /** - * @param {String} lookml_model_name Name of lookml model. - */ - _ lookml_model_name: String, - /** - * @param {String} explore_name Name of explore. + * @param {String} project_id Id of project */ - _ explore_name: String, + _ project_id: String, /** - * @param {String} fields Requested fields. + * @param {String} fields Requested fields */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_lookml_model_name = encodeParam(lookml_model_name) - let path_explore_name = encodeParam(explore_name) - let result: SDKResponse = self.get("/lookml_models/\(path_lookml_model_name)/explores/\(path_explore_name)", + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/manifest/lock_all", ["fields": fields], nil, options) return result } - - - // MARK Project: Manage Projects - /** * ### Get All Git Branches * @@ -5782,11 +8075,11 @@ open class LookerSDK: APIMethods { */ server_table_calcs: Bool? = nil, /** - * @param {Int64} image_width Render width for image formats. + * @param {Int64} image_width DEPRECATED. Render width for image formats. Note that this parameter is always ignored by this method. */ image_width: Int64? = nil, /** - * @param {Int64} image_height Render height for image formats. + * @param {Int64} image_height DEPRECATED. Render height for image formats. Note that this parameter is always ignored by this method. */ image_height: Int64? = nil, /** @@ -5913,9 +8206,9 @@ open class LookerSDK: APIMethods { */ public func query( /** - * @param {Int64} query_id Id of query + * @param {String} query_id Id of query */ - _ query_id: Int64, + _ query_id: String, /** * @param {String} fields Requested fields. */ @@ -6023,9 +8316,9 @@ open class LookerSDK: APIMethods { */ public func run_query( /** - * @param {Int64} query_id Id of query + * @param {String} query_id Id of query */ - _ query_id: Int64, + _ query_id: String, /** * @param {String} result_format Format of result */ @@ -6078,12 +8371,16 @@ open class LookerSDK: APIMethods { * @param {Bool} server_table_calcs Perform table calculations on query results */ server_table_calcs: Bool? = nil, + /** + * @param {String} source Specifies the source of this call. + */ + source: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let path_query_id = encodeParam(query_id) let path_result_format = encodeParam(result_format) let result: SDKResponse = self.get("/queries/\(path_query_id)/run/\(path_result_format)", - ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?], nil, options) + ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?, "source": source], nil, options) return result } @@ -6446,60 +8743,6 @@ open class LookerSDK: APIMethods { // MARK RenderTask: Manage Render Tasks - /** - * ### Create a new task to render a lookml dashboard to a document or image. - * - * # DEPRECATED: Use [create_dashboard_render_task()](#!/RenderTask/create_dashboard_render_task) in API 4.0+ - * - * Returns a render task object. - * To check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task). - * Once the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results). - * - * POST /render_tasks/lookml_dashboards/{dashboard_id}/{result_format} -> RenderTask - */ - @available(*, deprecated) - public func create_lookml_dashboard_render_task( - /** - * @param {String} dashboard_id Id of lookml dashboard to render - */ - _ dashboard_id: String, - /** - * @param {String} result_format Output type: pdf, png, or jpg - */ - _ result_format: String, - /** - * @param {CreateDashboardRenderTask} body - */ - _ body: CreateDashboardRenderTask, - /** - * @param {Int64} width Output width in pixels - */ - _ width: Int64, - /** - * @param {Int64} height Output height in pixels - */ - _ height: Int64, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {String} pdf_paper_size Paper size for pdf. Value can be one of: ["letter","legal","tabloid","a0","a1","a2","a3","a4","a5"] - */ - pdf_paper_size: String? = nil, - /** - * @param {Bool} pdf_landscape Whether to render pdf in landscape - */ - pdf_landscape: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let path_result_format = encodeParam(result_format) - let result: SDKResponse = self.post("/render_tasks/lookml_dashboards/\(path_dashboard_id)/\(path_result_format)", - ["width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape as Any?], try! self.encode(body), options) - return result - } - /** * ### Create a new task to render a look to an image. * @@ -6511,9 +8754,9 @@ open class LookerSDK: APIMethods { */ public func create_look_render_task( /** - * @param {Int64} look_id Id of look to render + * @param {String} look_id Id of look to render */ - _ look_id: Int64, + _ look_id: String, /** * @param {String} result_format Output type: png, or jpg */ @@ -6550,9 +8793,9 @@ open class LookerSDK: APIMethods { */ public func create_query_render_task( /** - * @param {Int64} query_id Id of the query to render + * @param {String} query_id Id of the query to render */ - _ query_id: Int64, + _ query_id: String, /** * @param {String} result_format Output type: png or jpg */ @@ -6589,9 +8832,9 @@ open class LookerSDK: APIMethods { */ public func create_dashboard_render_task( /** - * @param {Int64} dashboard_id Id of dashboard to render + * @param {String} dashboard_id Id of dashboard to render. The ID can be a LookML dashboard also. */ - _ dashboard_id: Int64, + _ dashboard_id: String, /** * @param {String} result_format Output type: pdf, png, or jpg */ @@ -6620,12 +8863,16 @@ open class LookerSDK: APIMethods { * @param {Bool} pdf_landscape Whether to render pdf in landscape paper orientation */ pdf_landscape: Bool? = nil, + /** + * @param {Bool} long_tables Whether or not to expand table vis to full length + */ + long_tables: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let path_dashboard_id = encodeParam(dashboard_id) let path_result_format = encodeParam(result_format) let result: SDKResponse = self.post("/render_tasks/dashboards/\(path_dashboard_id)/\(path_result_format)", - ["width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape as Any?], try! self.encode(body), options) + ["width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape as Any?, "long_tables": long_tables as Any?], try! self.encode(body), options) return result } @@ -6691,6 +8938,45 @@ open class LookerSDK: APIMethods { return result } + /** + * ### Create a new task to render a dashboard element to an image. + * + * Returns a render task object. + * To check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task). + * Once the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results). + * + * POST /render_tasks/dashboard_elements/{dashboard_element_id}/{result_format} -> RenderTask + */ + public func create_dashboard_element_render_task( + /** + * @param {String} dashboard_element_id Id of dashboard element to render: UDD dashboard element would be numeric and LookML dashboard element would be model_name::dashboard_title::lookml_link_id + */ + _ dashboard_element_id: String, + /** + * @param {String} result_format Output type: png or jpg + */ + _ result_format: String, + /** + * @param {Int64} width Output width in pixels + */ + _ width: Int64, + /** + * @param {Int64} height Output height in pixels + */ + _ height: Int64, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_dashboard_element_id = encodeParam(dashboard_element_id) + let path_result_format = encodeParam(result_format) + let result: SDKResponse = self.post("/render_tasks/dashboard_elements/\(path_dashboard_element_id)/\(path_result_format)", + ["width": width, "height": height, "fields": fields], nil, options) + return result + } + // MARK Role: Manage Roles @@ -6739,9 +9025,9 @@ open class LookerSDK: APIMethods { */ sorts: String? = nil, /** - * @param {Int64} id Match model set id. + * @param {String} id Match model set id. */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} name Match model set name. */ @@ -6772,9 +9058,9 @@ open class LookerSDK: APIMethods { */ public func model_set( /** - * @param {Int64} model_set_id Id of model set + * @param {String} model_set_id Id of model set */ - _ model_set_id: Int64, + _ model_set_id: String, /** * @param {String} fields Requested fields. */ @@ -6794,9 +9080,9 @@ open class LookerSDK: APIMethods { */ public func update_model_set( /** - * @param {Int64} model_set_id id of model set + * @param {String} model_set_id id of model set */ - _ model_set_id: Int64, + _ model_set_id: String, /** * @param {WriteModelSet} body */ @@ -6815,9 +9101,9 @@ open class LookerSDK: APIMethods { */ public func delete_model_set( /** - * @param {Int64} model_set_id id of model set + * @param {String} model_set_id id of model set */ - _ model_set_id: Int64, + _ model_set_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_model_set_id = encodeParam(model_set_id) @@ -6914,9 +9200,9 @@ open class LookerSDK: APIMethods { */ sorts: String? = nil, /** - * @param {Int64} id Match permission set id. + * @param {String} id Match permission set id. */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} name Match permission set name. */ @@ -6947,9 +9233,9 @@ open class LookerSDK: APIMethods { */ public func permission_set( /** - * @param {Int64} permission_set_id Id of permission set + * @param {String} permission_set_id Id of permission set */ - _ permission_set_id: Int64, + _ permission_set_id: String, /** * @param {String} fields Requested fields. */ @@ -6969,9 +9255,9 @@ open class LookerSDK: APIMethods { */ public func update_permission_set( /** - * @param {Int64} permission_set_id Id of permission set + * @param {String} permission_set_id Id of permission set */ - _ permission_set_id: Int64, + _ permission_set_id: String, /** * @param {WritePermissionSet} body */ @@ -6990,9 +9276,9 @@ open class LookerSDK: APIMethods { */ public func delete_permission_set( /** - * @param {Int64} permission_set_id Id of permission set + * @param {String} permission_set_id Id of permission set */ - _ permission_set_id: Int64, + _ permission_set_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_permission_set_id = encodeParam(permission_set_id) @@ -7040,40 +9326,109 @@ open class LookerSDK: APIMethods { */ public func all_roles( /** - * @param {String} fields Requested fields. + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {DelimArray} ids Optional list of ids to get specific roles. + */ + ids: DelimArray? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[Role], SDKError> { + let result: SDKResponse<[Role], SDKError> = self.get("/roles", + ["fields": fields, "ids": ids as Any?], nil, options) + return result + } + + /** + * ### Create a role with the specified information. + * + * POST /roles -> Role + */ + public func create_role( + /** + * @param {WriteRole} body + */ + _ body: WriteRole, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/roles", nil, try! self.encode(body), options) + return result + } + + /** + * ### Search roles + * + * Returns all role records that match the given search criteria. + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /roles/search -> [Role] + */ + public func search_roles( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Int64} limit Number of results to return (used with `offset`). + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any (used with `limit`). */ - fields: String? = nil, + offset: Int64? = nil, /** - * @param {DelimArray} ids Optional list of ids to get specific roles. + * @param {String} sorts Fields to sort by. */ - ids: DelimArray? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[Role], SDKError> { - let result: SDKResponse<[Role], SDKError> = self.get("/roles", - ["fields": fields, "ids": ids as Any?], nil, options) - return result - } - - /** - * ### Create a role with the specified information. - * - * POST /roles -> Role - */ - public func create_role( + sorts: String? = nil, /** - * @param {WriteRole} body + * @param {String} id Match role id. */ - _ body: WriteRole, + id: String? = nil, + /** + * @param {String} name Match role name. + */ + name: String? = nil, + /** + * @param {Bool} built_in Match roles by built_in status. + */ + built_in: Bool? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression. + */ + filter_or: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/roles", nil, try! self.encode(body), options) + ) -> SDKResponse<[Role], SDKError> { + let result: SDKResponse<[Role], SDKError> = self.get("/roles/search", + ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "name": name, "built_in": built_in as Any?, "filter_or": filter_or as Any?], nil, options) return result } /** - * ### Search roles + * ### Search roles include user count * - * Returns all role records that match the given search criteria. + * Returns all role records that match the given search criteria, and attaches + * associated user counts. * * If multiple search params are given and `filter_or` is FALSE or not specified, * search params are combined in a logical AND operation. @@ -7096,9 +9451,9 @@ open class LookerSDK: APIMethods { * * Boolean search params accept only "true" and "false" as values. * - * GET /roles/search -> [Role] + * GET /roles/search/with_user_count -> [RoleSearch] */ - public func search_roles( + public func search_roles_with_user_count( /** * @param {String} fields Requested fields. */ @@ -7116,9 +9471,9 @@ open class LookerSDK: APIMethods { */ sorts: String? = nil, /** - * @param {Int64} id Match role id. + * @param {String} id Match role id. */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} name Match role name. */ @@ -7132,8 +9487,8 @@ open class LookerSDK: APIMethods { */ filter_or: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Role], SDKError> { - let result: SDKResponse<[Role], SDKError> = self.get("/roles/search", + ) -> SDKResponse<[RoleSearch], SDKError> { + let result: SDKResponse<[RoleSearch], SDKError> = self.get("/roles/search/with_user_count", ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "name": name, "built_in": built_in as Any?, "filter_or": filter_or as Any?], nil, options) return result } @@ -7145,9 +9500,9 @@ open class LookerSDK: APIMethods { */ public func role( /** - * @param {Int64} role_id id of role + * @param {String} role_id id of role */ - _ role_id: Int64, + _ role_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_role_id = encodeParam(role_id) @@ -7162,9 +9517,9 @@ open class LookerSDK: APIMethods { */ public func update_role( /** - * @param {Int64} role_id id of role + * @param {String} role_id id of role */ - _ role_id: Int64, + _ role_id: String, /** * @param {WriteRole} body */ @@ -7183,9 +9538,9 @@ open class LookerSDK: APIMethods { */ public func delete_role( /** - * @param {Int64} role_id id of role + * @param {String} role_id id of role */ - _ role_id: Int64, + _ role_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_role_id = encodeParam(role_id) @@ -7200,9 +9555,9 @@ open class LookerSDK: APIMethods { */ public func role_groups( /** - * @param {Int64} role_id id of role + * @param {String} role_id id of role */ - _ role_id: Int64, + _ role_id: String, /** * @param {String} fields Requested fields. */ @@ -7224,9 +9579,9 @@ open class LookerSDK: APIMethods { */ public func set_role_groups( /** - * @param {Int64} role_id id of role + * @param {String} role_id id of role */ - _ role_id: Int64, + _ role_id: String, /** * @param {[String]} body */ @@ -7245,9 +9600,9 @@ open class LookerSDK: APIMethods { */ public func role_users( /** - * @param {Int64} role_id id of role + * @param {String} role_id id of role */ - _ role_id: Int64, + _ role_id: String, /** * @param {String} fields Requested fields. */ @@ -7271,9 +9626,9 @@ open class LookerSDK: APIMethods { */ public func set_role_users( /** - * @param {Int64} role_id id of role + * @param {String} role_id id of role */ - _ role_id: Int64, + _ role_id: String, /** * @param {[String]} body */ @@ -7294,250 +9649,64 @@ open class LookerSDK: APIMethods { * * Returns scheduled plans owned by the caller for a given space id. * - * GET /scheduled_plans/space/{space_id} -> [ScheduledPlan] - */ - public func scheduled_plans_for_space( - /** - * @param {Int64} space_id Space Id - */ - _ space_id: Int64, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[ScheduledPlan], SDKError> { - let path_space_id = encodeParam(space_id) - let result: SDKResponse<[ScheduledPlan], SDKError> = self.get("/scheduled_plans/space/\(path_space_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Get Information About a Scheduled Plan - * - * Admins can fetch information about other users' Scheduled Plans. - * - * GET /scheduled_plans/{scheduled_plan_id} -> ScheduledPlan - */ - public func scheduled_plan( - /** - * @param {Int64} scheduled_plan_id Scheduled Plan Id - */ - _ scheduled_plan_id: Int64, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_scheduled_plan_id = encodeParam(scheduled_plan_id) - let result: SDKResponse = self.get("/scheduled_plans/\(path_scheduled_plan_id)", - ["fields": fields], nil, options) - return result - } - - /** - * ### Update a Scheduled Plan - * - * Admins can update other users' Scheduled Plans. - * - * Note: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations - * currently defined for the scheduled plan. - * - * For Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan - * specifying only B in the destinations, then destinations A and C will be deleted by the update. - * - * Updating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination. - * - * If you omit the scheduled_plan_destinations property from the object passed to update, then the destinations - * defined on the original scheduled plan will remain unchanged. - * - * #### Email Permissions: - * - * For details about permissions required to schedule delivery to email and the safeguards - * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). - * - * - * #### Scheduled Plan Destination Formats - * - * Scheduled plan destinations must specify the data format to produce and send to the destination. - * - * Formats: - * - * | format | Description - * | :-----------: | :--- | - * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. - * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query - * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. - * | csv | Comma separated values with a header - * | txt | Tab separated values with a header - * | html | Simple html - * | xlsx | MS Excel spreadsheet - * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document - * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document - * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image - * || - * - * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. - * - * PATCH /scheduled_plans/{scheduled_plan_id} -> ScheduledPlan - */ - public func update_scheduled_plan( - /** - * @param {Int64} scheduled_plan_id Scheduled Plan Id - */ - _ scheduled_plan_id: Int64, - /** - * @param {WriteScheduledPlan} body - */ - _ body: WriteScheduledPlan, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_scheduled_plan_id = encodeParam(scheduled_plan_id) - let result: SDKResponse = self.patch("/scheduled_plans/\(path_scheduled_plan_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete a Scheduled Plan - * - * Normal users can only delete their own scheduled plans. - * Admins can delete other users' scheduled plans. - * This delete cannot be undone. - * - * DELETE /scheduled_plans/{scheduled_plan_id} -> String - */ - public func delete_scheduled_plan( - /** - * @param {Int64} scheduled_plan_id Scheduled Plan Id - */ - _ scheduled_plan_id: Int64, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_scheduled_plan_id = encodeParam(scheduled_plan_id) - let result: SDKResponse = self.delete("/scheduled_plans/\(path_scheduled_plan_id)", nil, nil, options) - return result - } - - /** - * ### List All Scheduled Plans - * - * Returns all scheduled plans which belong to the caller or given user. - * - * If no user_id is provided, this function returns the scheduled plans owned by the caller. - * - * - * To list all schedules for all users, pass `all_users=true`. - * - * - * The caller must have `see_schedules` permission to see other users' scheduled plans. - * - * GET /scheduled_plans -> [ScheduledPlan] - */ - public func all_scheduled_plans( - /** - * @param {Int64} user_id Return scheduled plans belonging to this user_id. If not provided, returns scheduled plans owned by the caller. - */ - user_id: Int64? = nil, - /** - * @param {String} fields Comma delimited list of field names. If provided, only the fields specified will be included in the response - */ - fields: String? = nil, - /** - * @param {Bool} all_users Return scheduled plans belonging to all users (caller needs see_schedules permission) - */ - all_users: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[ScheduledPlan], SDKError> { - let result: SDKResponse<[ScheduledPlan], SDKError> = self.get("/scheduled_plans", - ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) - return result - } - - /** - * ### Create a Scheduled Plan - * - * Create a scheduled plan to render a Look or Dashboard on a recurring schedule. - * - * To create a scheduled plan, you MUST provide values for the following fields: - * `name` - * and - * `look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id` - * and - * `cron_tab` or `datagroup` - * and - * at least one scheduled_plan_destination - * - * A scheduled plan MUST have at least one scheduled_plan_destination defined. - * - * When `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required. - * - * If `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible. - * - * The queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan. - * - * When `run_as_recipient` is `false` or not specified, the queries that provide the data for the - * look or dashboard are run in the context of user account that owns the scheduled plan. - * - * When `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the - * queries are run in the context of each recipient, so different recipients may see different - * data from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://cloud.google.com/looker/docs/r/admin/run-as-recipient). - * - * Admins can create and modify scheduled plans on behalf of other users by specifying a user id. - * Non-admin users may not create or modify scheduled plans by or for other users. - * - * #### Email Permissions: - * - * For details about permissions required to schedule delivery to email and the safeguards - * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). - * - * - * #### Scheduled Plan Destination Formats - * - * Scheduled plan destinations must specify the data format to produce and send to the destination. - * - * Formats: - * - * | format | Description - * | :-----------: | :--- | - * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. - * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query - * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. - * | csv | Comma separated values with a header - * | txt | Tab separated values with a header - * | html | Simple html - * | xlsx | MS Excel spreadsheet - * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document - * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document - * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image - * || - * - * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. + * GET /scheduled_plans/space/{space_id} -> [ScheduledPlan] + */ + public func scheduled_plans_for_space( + /** + * @param {String} space_id Space Id + */ + _ space_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[ScheduledPlan], SDKError> { + let path_space_id = encodeParam(space_id) + let result: SDKResponse<[ScheduledPlan], SDKError> = self.get("/scheduled_plans/space/\(path_space_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get Information About a Scheduled Plan * - * POST /scheduled_plans -> ScheduledPlan + * Admins can fetch information about other users' Scheduled Plans. + * + * GET /scheduled_plans/{scheduled_plan_id} -> ScheduledPlan */ - public func create_scheduled_plan( + public func scheduled_plan( /** - * @param {WriteScheduledPlan} body + * @param {String} scheduled_plan_id Scheduled Plan Id */ - _ body: WriteScheduledPlan, + _ scheduled_plan_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/scheduled_plans", nil, try! self.encode(body), options) + let path_scheduled_plan_id = encodeParam(scheduled_plan_id) + let result: SDKResponse = self.get("/scheduled_plans/\(path_scheduled_plan_id)", + ["fields": fields], nil, options) return result } /** - * ### Run a Scheduled Plan Immediately + * ### Update a Scheduled Plan * - * Create a scheduled plan that runs only once, and immediately. + * Admins can update other users' Scheduled Plans. * - * This can be useful for testing a Scheduled Plan before committing to a production schedule. + * Note: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations + * currently defined for the scheduled plan. * - * Admins can create scheduled plans on behalf of other users by specifying a user id. + * For Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan + * specifying only B in the destinations, then destinations A and C will be deleted by the update. * - * This API is rate limited to prevent it from being used for relay spam or DoS attacks + * Updating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination. + * + * If you omit the scheduled_plan_destinations property from the object passed to update, then the destinations + * defined on the original scheduled plan will remain unchanged. * * #### Email Permissions: * @@ -7567,63 +9736,49 @@ open class LookerSDK: APIMethods { * * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. * - * POST /scheduled_plans/run_once -> ScheduledPlan + * PATCH /scheduled_plans/{scheduled_plan_id} -> ScheduledPlan */ - public func scheduled_plan_run_once( + public func update_scheduled_plan( + /** + * @param {String} scheduled_plan_id Scheduled Plan Id + */ + _ scheduled_plan_id: String, /** * @param {WriteScheduledPlan} body */ _ body: WriteScheduledPlan, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/scheduled_plans/run_once", nil, try! self.encode(body), options) + let path_scheduled_plan_id = encodeParam(scheduled_plan_id) + let result: SDKResponse = self.patch("/scheduled_plans/\(path_scheduled_plan_id)", nil, try! self.encode(body), options) return result } /** - * ### Get Scheduled Plans for a Look - * - * Returns all scheduled plans for a look which belong to the caller or given user. - * - * If no user_id is provided, this function returns the scheduled plans owned by the caller. - * - * - * To list all schedules for all users, pass `all_users=true`. - * + * ### Delete a Scheduled Plan * - * The caller must have `see_schedules` permission to see other users' scheduled plans. + * Normal users can only delete their own scheduled plans. + * Admins can delete other users' scheduled plans. + * This delete cannot be undone. * - * GET /scheduled_plans/look/{look_id} -> [ScheduledPlan] + * DELETE /scheduled_plans/{scheduled_plan_id} -> String */ - public func scheduled_plans_for_look( - /** - * @param {Int64} look_id Look Id - */ - _ look_id: Int64, - /** - * @param {Int64} user_id User Id (default is requesting user if not specified) - */ - user_id: Int64? = nil, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func delete_scheduled_plan( /** - * @param {Bool} all_users Return scheduled plans belonging to all users for the look + * @param {String} scheduled_plan_id Scheduled Plan Id */ - all_users: Bool? = nil, + _ scheduled_plan_id: String, options: ITransportSettings? = nil - ) -> SDKResponse<[ScheduledPlan], SDKError> { - let path_look_id = encodeParam(look_id) - let result: SDKResponse<[ScheduledPlan], SDKError> = self.get("/scheduled_plans/look/\(path_look_id)", - ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) + ) -> SDKResponse { + let path_scheduled_plan_id = encodeParam(scheduled_plan_id) + let result: SDKResponse = self.delete("/scheduled_plans/\(path_scheduled_plan_id)", nil, nil, options) return result } /** - * ### Get Scheduled Plans for a Dashboard + * ### List All Scheduled Plans * - * Returns all scheduled plans for a dashboard which belong to the caller or given user. + * Returns all scheduled plans which belong to the caller or given user. * * If no user_id is provided, this function returns the scheduled plans owned by the caller. * @@ -7633,89 +9788,59 @@ open class LookerSDK: APIMethods { * * The caller must have `see_schedules` permission to see other users' scheduled plans. * - * GET /scheduled_plans/dashboard/{dashboard_id} -> [ScheduledPlan] + * GET /scheduled_plans -> [ScheduledPlan] */ - public func scheduled_plans_for_dashboard( + public func all_scheduled_plans( /** - * @param {Int64} dashboard_id Dashboard Id + * @param {String} user_id Return scheduled plans belonging to this user_id. If not provided, returns scheduled plans owned by the caller. */ - _ dashboard_id: Int64, + user_id: String? = nil, /** - * @param {Int64} user_id User Id (default is requesting user if not specified) + * @param {String} fields Comma delimited list of field names. If provided, only the fields specified will be included in the response */ - user_id: Int64? = nil, + fields: String? = nil, /** - * @param {Bool} all_users Return scheduled plans belonging to all users for the dashboard + * @param {Bool} all_users Return scheduled plans belonging to all users (caller needs see_schedules permission) */ all_users: Bool? = nil, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse<[ScheduledPlan], SDKError> { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse<[ScheduledPlan], SDKError> = self.get("/scheduled_plans/dashboard/\(path_dashboard_id)", - ["user_id": user_id, "all_users": all_users as Any?, "fields": fields], nil, options) + let result: SDKResponse<[ScheduledPlan], SDKError> = self.get("/scheduled_plans", + ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) return result } /** - * ### Get Scheduled Plans for a LookML Dashboard - * - * Returns all scheduled plans for a LookML Dashboard which belong to the caller or given user. + * ### Create a Scheduled Plan * - * If no user_id is provided, this function returns the scheduled plans owned by the caller. + * Create a scheduled plan to render a Look or Dashboard on a recurring schedule. * + * To create a scheduled plan, you MUST provide values for the following fields: + * `name` + * and + * `look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id` + * and + * `cron_tab` or `datagroup` + * and + * at least one scheduled_plan_destination * - * To list all schedules for all users, pass `all_users=true`. + * A scheduled plan MUST have at least one scheduled_plan_destination defined. * + * When `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required. * - * The caller must have `see_schedules` permission to see other users' scheduled plans. + * If `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible. * - * GET /scheduled_plans/lookml_dashboard/{lookml_dashboard_id} -> [ScheduledPlan] - */ - public func scheduled_plans_for_lookml_dashboard( - /** - * @param {String} lookml_dashboard_id LookML Dashboard Id - */ - _ lookml_dashboard_id: String, - /** - * @param {Int64} user_id User Id (default is requesting user if not specified) - */ - user_id: Int64? = nil, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Bool} all_users Return scheduled plans belonging to all users for the dashboard - */ - all_users: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[ScheduledPlan], SDKError> { - let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) - let result: SDKResponse<[ScheduledPlan], SDKError> = self.get("/scheduled_plans/lookml_dashboard/\(path_lookml_dashboard_id)", - ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) - return result - } - - /** - * ### Run a Scheduled Plan By Id Immediately - * This function creates a run-once schedule plan based on an existing scheduled plan, - * applies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately. - * This can be useful for testing modifications to an existing scheduled plan before committing to a production schedule. + * The queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan. * - * This function internally performs the following operations: + * When `run_as_recipient` is `false` or not specified, the queries that provide the data for the + * look or dashboard are run in the context of user account that owns the scheduled plan. * - * 1. Copies the properties of the existing scheduled plan into a new scheduled plan - * 2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values) - * 3. Creates the new scheduled plan - * 4. Runs the new scheduled plan + * When `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the + * queries are run in the context of each recipient, so different recipients may see different + * data from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://cloud.google.com/looker/docs/r/admin/run-as-recipient). * - * The original scheduled plan is not modified by this operation. - * Admins can create, modify, and run scheduled plans on behalf of other users by specifying a user id. - * Non-admins can only create, modify, and run their own scheduled plans. + * Admins can create and modify scheduled plans on behalf of other users by specifying a user id. + * Non-admin users may not create or modify scheduled plans by or for other users. * * #### Email Permissions: * @@ -7745,443 +9870,308 @@ open class LookerSDK: APIMethods { * * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. * - * - * - * This API is rate limited to prevent it from being used for relay spam or DoS attacks - * - * POST /scheduled_plans/{scheduled_plan_id}/run_once -> ScheduledPlan + * POST /scheduled_plans -> ScheduledPlan */ - public func scheduled_plan_run_once_by_id( - /** - * @param {Int64} scheduled_plan_id Id of schedule plan to copy and run - */ - _ scheduled_plan_id: Int64, + public func create_scheduled_plan( /** * @param {WriteScheduledPlan} body */ - body: WriteScheduledPlan?, + _ body: WriteScheduledPlan, options: ITransportSettings? = nil ) -> SDKResponse { - let path_scheduled_plan_id = encodeParam(scheduled_plan_id) - let result: SDKResponse = self.post("/scheduled_plans/\(path_scheduled_plan_id)/run_once", nil, try! self.encode(body), options) - return result - } - - - - // MARK Session: Session Information - - /** - * ### Get API Session - * - * Returns information about the current API session, such as which workspace is selected for the session. - * - * GET /session -> ApiSession - */ - public func session( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/session", nil, nil, options) - return result - } - - /** - * ### Update API Session - * - * #### API Session Workspace - * - * You can use this endpoint to change the active workspace for the current API session. - * - * Only one workspace can be active in a session. The active workspace can be changed - * any number of times in a session. - * - * The default workspace for API sessions is the "production" workspace. - * - * All Looker APIs that use projects or lookml models (such as running queries) will - * use the version of project and model files defined by this workspace for the lifetime of the - * current API session or until the session workspace is changed again. - * - * An API session has the same lifetime as the access_token used to authenticate API requests. Each successful - * API login generates a new access_token and a new API session. - * - * If your Looker API client application needs to work in a dev workspace across multiple - * API sessions, be sure to select the dev workspace after each login. - * - * PATCH /session -> ApiSession - */ - public func update_session( - /** - * @param {WriteApiSession} body - */ - _ body: WriteApiSession, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/session", nil, try! self.encode(body), options) - return result - } - - - - // MARK Space: Manage Spaces + let result: SDKResponse = self.post("/scheduled_plans", nil, try! self.encode(body), options) + return result + } /** - * ### Search Spaces + * ### Run a Scheduled Plan Immediately * - * Returns an **array of space objects** that match the given search criteria. + * Create a scheduled plan that runs only once, and immediately. * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. + * This can be useful for testing a Scheduled Plan before committing to a production schedule. * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. + * Admins can create scheduled plans on behalf of other users by specifying a user id. * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" + * This API is rate limited to prevent it from being used for relay spam or DoS attacks * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. + * #### Email Permissions: * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. + * For details about permissions required to schedule delivery to email and the safeguards + * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). * - * Boolean search params accept only "true" and "false" as values. * + * #### Scheduled Plan Destination Formats + * + * Scheduled plan destinations must specify the data format to produce and send to the destination. + * + * Formats: * - * The parameters `limit`, and `offset` are recommended for fetching results in page-size chunks. + * | format | Description + * | :-----------: | :--- | + * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. + * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query + * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. + * | csv | Comma separated values with a header + * | txt | Tab separated values with a header + * | html | Simple html + * | xlsx | MS Excel spreadsheet + * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document + * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document + * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image + * || * - * Get a **single space** by id with [Space](#!/Space/space) + * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. * - * GET /spaces/search -> [Space] + * POST /scheduled_plans/run_once -> ScheduledPlan */ - @available(*, deprecated) - public func search_spaces( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Int64} page Requested page. - */ - page: Int64? = nil, - /** - * @param {Int64} per_page Results per page. - */ - per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {String} name Match Space title. - */ - name: String? = nil, - /** - * @param {Int64} id Match Space id - */ - id: Int64? = nil, - /** - * @param {String} parent_id Filter on a children of a particular space. - */ - parent_id: String? = nil, - /** - * @param {String} creator_id Filter on spaces created by a particular user. - */ - creator_id: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, - /** - * @param {Bool} is_shared_root Match is shared root - */ - is_shared_root: Bool? = nil, + public func scheduled_plan_run_once( /** - * @param {Bool} is_users_root Match is users root + * @param {WriteScheduledPlan} body */ - is_users_root: Bool? = nil, + _ body: WriteScheduledPlan, options: ITransportSettings? = nil - ) -> SDKResponse<[Space], SDKError> { - let result: SDKResponse<[Space], SDKError> = self.get("/spaces/search", - ["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 as Any?, "is_shared_root": is_shared_root as Any?, "is_users_root": is_users_root as Any?], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.post("/scheduled_plans/run_once", nil, try! self.encode(body), options) return result } /** - * ### Get information about the space with a specific id. + * ### Get Scheduled Plans for a Look + * + * Returns all scheduled plans for a look which belong to the caller or given user. + * + * If no user_id is provided, this function returns the scheduled plans owned by the caller. + * + * + * To list all schedules for all users, pass `all_users=true`. + * + * + * The caller must have `see_schedules` permission to see other users' scheduled plans. * - * GET /spaces/{space_id} -> Space + * GET /scheduled_plans/look/{look_id} -> [ScheduledPlan] */ - @available(*, deprecated) - public func space( + public func scheduled_plans_for_look( /** - * @param {String} space_id Id of space + * @param {String} look_id Look Id */ - _ space_id: String, + _ look_id: String, + /** + * @param {String} user_id User Id (default is requesting user if not specified) + */ + user_id: String? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, + /** + * @param {Bool} all_users Return scheduled plans belonging to all users for the look + */ + all_users: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.get("/spaces/\(path_space_id)", - ["fields": fields], nil, options) + ) -> SDKResponse<[ScheduledPlan], SDKError> { + let path_look_id = encodeParam(look_id) + let result: SDKResponse<[ScheduledPlan], SDKError> = self.get("/scheduled_plans/look/\(path_look_id)", + ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) return result } /** - * ### Update the space with a specific id. + * ### Get Scheduled Plans for a Dashboard + * + * Returns all scheduled plans for a dashboard which belong to the caller or given user. * - * PATCH /spaces/{space_id} -> Space + * If no user_id is provided, this function returns the scheduled plans owned by the caller. + * + * + * To list all schedules for all users, pass `all_users=true`. + * + * + * The caller must have `see_schedules` permission to see other users' scheduled plans. + * + * GET /scheduled_plans/dashboard/{dashboard_id} -> [ScheduledPlan] */ - @available(*, deprecated) - public func update_space( + public func scheduled_plans_for_dashboard( /** - * @param {String} space_id Id of space + * @param {String} dashboard_id Dashboard Id */ - _ space_id: String, + _ dashboard_id: String, /** - * @param {UpdateSpace} body + * @param {String} user_id User Id (default is requesting user if not specified) */ - _ body: UpdateSpace, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.patch("/spaces/\(path_space_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete the space with a specific id including any children spaces. - * **DANGER** this will delete all looks and dashboards in the space. - * - * DELETE /spaces/{space_id} -> String - */ - @available(*, deprecated) - public func delete_space( + user_id: String? = nil, /** - * @param {String} space_id Id of space + * @param {Bool} all_users Return scheduled plans belonging to all users for the dashboard */ - _ space_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.delete("/spaces/\(path_space_id)", nil, nil, options) - return result - } - - /** - * ### Get information about all spaces. - * - * In API 3.x, this will not return empty personal spaces, unless they belong to the calling user, - * or if they contain soft-deleted content. - * - * In API 4.0+, all personal spaces will be returned. - * - * GET /spaces -> [SpaceBase] - */ - @available(*, deprecated) - public func all_spaces( + all_users: Bool? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[SpaceBase], SDKError> { - let result: SDKResponse<[SpaceBase], SDKError> = self.get("/spaces", - ["fields": fields], nil, options) + ) -> SDKResponse<[ScheduledPlan], SDKError> { + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse<[ScheduledPlan], SDKError> = self.get("/scheduled_plans/dashboard/\(path_dashboard_id)", + ["user_id": user_id, "all_users": all_users as Any?, "fields": fields], nil, options) return result } /** - * ### Create a space with specified information. + * ### Get Scheduled Plans for a LookML Dashboard * - * Caller must have permission to edit the parent space and to create spaces, otherwise the request - * returns 404 Not Found. + * Returns all scheduled plans for a LookML Dashboard which belong to the caller or given user. + * + * If no user_id is provided, this function returns the scheduled plans owned by the caller. + * + * + * To list all schedules for all users, pass `all_users=true`. * - * POST /spaces -> Space + * + * The caller must have `see_schedules` permission to see other users' scheduled plans. + * + * GET /scheduled_plans/lookml_dashboard/{lookml_dashboard_id} -> [ScheduledPlan] */ - @available(*, deprecated) - public func create_space( + public func scheduled_plans_for_lookml_dashboard( /** - * @param {CreateSpace} body + * @param {String} lookml_dashboard_id LookML Dashboard Id */ - _ body: CreateSpace, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/spaces", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get the children of a space. - * - * GET /spaces/{space_id}/children -> [Space] - */ - @available(*, deprecated) - public func space_children( + _ lookml_dashboard_id: String, /** - * @param {String} space_id Id of space + * @param {String} user_id User Id (default is requesting user if not specified) */ - _ space_id: String, + user_id: String? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {Int64} page Requested page. - */ - page: Int64? = nil, - /** - * @param {Int64} per_page Results per page. - */ - per_page: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. + * @param {Bool} all_users Return scheduled plans belonging to all users for the dashboard */ - sorts: String? = nil, + all_users: Bool? = nil, options: ITransportSettings? = nil - ) -> SDKResponse<[Space], SDKError> { - let path_space_id = encodeParam(space_id) - let result: SDKResponse<[Space], SDKError> = self.get("/spaces/\(path_space_id)/children", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts], nil, options) + ) -> SDKResponse<[ScheduledPlan], SDKError> { + let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) + let result: SDKResponse<[ScheduledPlan], SDKError> = self.get("/scheduled_plans/lookml_dashboard/\(path_lookml_dashboard_id)", + ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) return result } /** - * ### Search the children of a space + * ### Run a Scheduled Plan By Id Immediately + * This function creates a run-once schedule plan based on an existing scheduled plan, + * applies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately. + * This can be useful for testing modifications to an existing scheduled plan before committing to a production schedule. + * + * This function internally performs the following operations: + * + * 1. Copies the properties of the existing scheduled plan into a new scheduled plan + * 2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values) + * 3. Creates the new scheduled plan + * 4. Runs the new scheduled plan + * + * The original scheduled plan is not modified by this operation. + * Admins can create, modify, and run scheduled plans on behalf of other users by specifying a user id. + * Non-admins can only create, modify, and run their own scheduled plans. + * + * #### Email Permissions: + * + * For details about permissions required to schedule delivery to email and the safeguards + * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). + * + * + * #### Scheduled Plan Destination Formats + * + * Scheduled plan destinations must specify the data format to produce and send to the destination. + * + * Formats: + * + * | format | Description + * | :-----------: | :--- | + * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. + * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query + * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. + * | csv | Comma separated values with a header + * | txt | Tab separated values with a header + * | html | Simple html + * | xlsx | MS Excel spreadsheet + * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document + * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document + * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image + * || * - * GET /spaces/{space_id}/children/search -> [Space] - */ - @available(*, deprecated) - public func space_children_search( - /** - * @param {String} space_id Id of space - */ - _ space_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {String} name Match Space name. - */ - name: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse<[Space], SDKError> { - let path_space_id = encodeParam(space_id) - let result: SDKResponse<[Space], SDKError> = self.get("/spaces/\(path_space_id)/children/search", - ["fields": fields, "sorts": sorts, "name": name], nil, options) - return result - } - - /** - * ### Get the parent of a space + * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. * - * GET /spaces/{space_id}/parent -> Space - */ - @available(*, deprecated) - public func space_parent( - /** - * @param {String} space_id Id of space - */ - _ space_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.get("/spaces/\(path_space_id)/parent", - ["fields": fields], nil, options) - return result - } - - /** - * ### Get the ancestors of a space * - * GET /spaces/{space_id}/ancestors -> [Space] + * + * This API is rate limited to prevent it from being used for relay spam or DoS attacks + * + * POST /scheduled_plans/{scheduled_plan_id}/run_once -> ScheduledPlan */ - @available(*, deprecated) - public func space_ancestors( + public func scheduled_plan_run_once_by_id( /** - * @param {String} space_id Id of space + * @param {String} scheduled_plan_id Id of schedule plan to copy and run */ - _ space_id: String, + _ scheduled_plan_id: String, /** - * @param {String} fields Requested fields. + * @param {WriteScheduledPlan} body */ - fields: String? = nil, + body: WriteScheduledPlan?, options: ITransportSettings? = nil - ) -> SDKResponse<[Space], SDKError> { - let path_space_id = encodeParam(space_id) - let result: SDKResponse<[Space], SDKError> = self.get("/spaces/\(path_space_id)/ancestors", - ["fields": fields], nil, options) + ) -> SDKResponse { + let path_scheduled_plan_id = encodeParam(scheduled_plan_id) + let result: SDKResponse = self.post("/scheduled_plans/\(path_scheduled_plan_id)/run_once", nil, try! self.encode(body), options) return result } + + + // MARK Session: Session Information + /** - * ### Get all looks in a space. - * In API 3.x, this will return all looks in a space, including looks in the trash. - * In API 4.0+, all looks in a space will be returned, excluding looks in the trash. + * ### Get API Session + * + * Returns information about the current API session, such as which workspace is selected for the session. * - * GET /spaces/{space_id}/looks -> [LookWithQuery] + * GET /session -> ApiSession */ - @available(*, deprecated) - public func space_looks( - /** - * @param {String} space_id Id of space - */ - _ space_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func session( options: ITransportSettings? = nil - ) -> SDKResponse<[LookWithQuery], SDKError> { - let path_space_id = encodeParam(space_id) - let result: SDKResponse<[LookWithQuery], SDKError> = self.get("/spaces/\(path_space_id)/looks", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.get("/session", nil, nil, options) return result } /** - * ### Get the dashboards in a space + * ### Update API Session + * + * #### API Session Workspace + * + * You can use this endpoint to change the active workspace for the current API session. + * + * Only one workspace can be active in a session. The active workspace can be changed + * any number of times in a session. + * + * The default workspace for API sessions is the "production" workspace. + * + * All Looker APIs that use projects or lookml models (such as running queries) will + * use the version of project and model files defined by this workspace for the lifetime of the + * current API session or until the session workspace is changed again. + * + * An API session has the same lifetime as the access_token used to authenticate API requests. Each successful + * API login generates a new access_token and a new API session. + * + * If your Looker API client application needs to work in a dev workspace across multiple + * API sessions, be sure to select the dev workspace after each login. * - * GET /spaces/{space_id}/dashboards -> [Dashboard] + * PATCH /session -> ApiSession */ - @available(*, deprecated) - public func space_dashboards( - /** - * @param {String} space_id Id of space - */ - _ space_id: String, + public func update_session( /** - * @param {String} fields Requested fields. + * @param {WriteApiSession} body */ - fields: String? = nil, + _ body: WriteApiSession, options: ITransportSettings? = nil - ) -> SDKResponse<[Dashboard], SDKError> { - let path_space_id = encodeParam(space_id) - let result: SDKResponse<[Dashboard], SDKError> = self.get("/spaces/\(path_space_id)/dashboards", - ["fields": fields], nil, options) + ) -> SDKResponse { + let result: SDKResponse = self.patch("/session", nil, try! self.encode(body), options) return result } @@ -8286,9 +10276,9 @@ open class LookerSDK: APIMethods { */ public func search_themes( /** - * @param {Int64} id Match theme id. + * @param {String} id Match theme id. */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} name Match theme name. */ @@ -8537,6 +10527,77 @@ open class LookerSDK: APIMethods { // MARK User: Manage Users + /** + * ### Search email credentials + * + * Returns all credentials_email records that match the given search criteria. + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /credentials_email/search -> [CredentialsEmailSearch] + */ + public func search_credentials_email( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Int64} limit Number of results to return (used with `offset`). + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any (used with `limit`). + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {String} id Match credentials_email id. + */ + id: String? = nil, + /** + * @param {String} email Match credentials_email email. + */ + email: String? = nil, + /** + * @param {String} emails Find credentials_email that match given emails. + */ + emails: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression. + */ + filter_or: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse<[CredentialsEmailSearch], SDKError> { + let result: SDKResponse<[CredentialsEmailSearch], SDKError> = self.get("/credentials_email/search", + ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "email": email, "emails": emails, "filter_or": filter_or as Any?], nil, options) + return result + } + /** * ### Get information about the current user; i.e. the user account currently calling the API. * @@ -8565,25 +10626,33 @@ open class LookerSDK: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page Return only page N of paginated results + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page Return N rows of data per page + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ sorts: String? = nil, /** - * @param {DelimArray} ids Optional list of ids to get specific users. + * @param {DelimArray} ids Optional list of ids to get specific users. */ - ids: DelimArray? = nil, + ids: DelimArray? = nil, options: ITransportSettings? = nil ) -> SDKResponse<[User], SDKError> { let result: SDKResponse<[User], SDKError> = self.get("/users", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "ids": ids as Any?], nil, options) + ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "ids": ids as Any?], nil, options) return result } @@ -8648,21 +10717,29 @@ open class LookerSDK: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page Return only page N of paginated results + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page Return N rows of data per page + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ sorts: String? = nil, /** - * @param {Int64} id Match User Id. + * @param {String} id Match User Id. */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} first_name Match First name. */ @@ -8692,17 +10769,17 @@ open class LookerSDK: APIMethods { */ filter_or: Bool? = nil, /** - * @param {Int64} content_metadata_id Search for users who have access to this content_metadata item + * @param {String} content_metadata_id Search for users who have access to this content_metadata item */ - content_metadata_id: Int64? = nil, + content_metadata_id: String? = nil, /** - * @param {Int64} group_id Search for users who are direct members of this group + * @param {String} group_id Search for users who are direct members of this group */ - group_id: Int64? = nil, + group_id: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse<[User], SDKError> { let result: SDKResponse<[User], SDKError> = self.get("/users/search", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "id": id, "first_name": first_name, "last_name": last_name, "verified_looker_employee": verified_looker_employee as Any?, "embed_user": embed_user as Any?, "email": email, "is_disabled": is_disabled as Any?, "filter_or": filter_or as Any?, "content_metadata_id": content_metadata_id, "group_id": group_id], nil, options) + ["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 as Any?, "embed_user": embed_user as Any?, "email": email, "is_disabled": is_disabled as Any?, "filter_or": filter_or as Any?, "content_metadata_id": content_metadata_id, "group_id": group_id], nil, options) return result } @@ -8726,21 +10803,29 @@ open class LookerSDK: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page Return only page N of paginated results + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page Return N rows of data per page + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, /** * @param {String} sorts Fields to sort by */ sorts: String? = nil, /** - * @param {Int64} id Match User Id + * @param {String} id Match User Id */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} first_name Match First name */ @@ -8765,7 +10850,7 @@ open class LookerSDK: APIMethods { ) -> SDKResponse<[User], SDKError> { let path_pattern = encodeParam(pattern) let result: SDKResponse<[User], SDKError> = self.get("/users/search/names/\(path_pattern)", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "id": id, "first_name": first_name, "last_name": last_name, "verified_looker_employee": verified_looker_employee as Any?, "email": email, "is_disabled": is_disabled as Any?], nil, options) + ["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 as Any?, "email": email, "is_disabled": is_disabled as Any?], nil, options) return result } @@ -8780,9 +10865,9 @@ open class LookerSDK: APIMethods { */ public func user( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -8802,9 +10887,9 @@ open class LookerSDK: APIMethods { */ public func update_user( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {WriteUser} body */ @@ -8830,9 +10915,9 @@ open class LookerSDK: APIMethods { */ public func delete_user( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -8905,9 +10990,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_email( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -8929,9 +11014,9 @@ open class LookerSDK: APIMethods { */ public func create_user_credentials_email( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {WriteCredentialsEmail} body */ @@ -8957,9 +11042,9 @@ open class LookerSDK: APIMethods { */ public func update_user_credentials_email( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {WriteCredentialsEmail} body */ @@ -8985,9 +11070,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_email( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9004,9 +11089,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_totp( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9028,9 +11113,9 @@ open class LookerSDK: APIMethods { */ public func create_user_credentials_totp( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {CredentialsTotp} body WARNING: no writeable properties found for POST, PUT, or PATCH */ @@ -9056,9 +11141,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_totp( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9075,9 +11160,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_ldap( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9099,9 +11184,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_ldap( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9118,9 +11203,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_google( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9142,9 +11227,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_google( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9161,9 +11246,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_saml( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9185,9 +11270,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_saml( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9204,9 +11289,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_oidc( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9228,9 +11313,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_oidc( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9247,13 +11332,13 @@ open class LookerSDK: APIMethods { */ public func user_credentials_api3( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} credentials_api3_id Id of API Credential + * @param {String} credentials_api3_id Id of API Credential */ - _ credentials_api3_id: Int64, + _ credentials_api3_id: String, /** * @param {String} fields Requested fields. */ @@ -9276,13 +11361,13 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_api3( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} credentials_api3_id Id of API Credential + * @param {String} credentials_api3_id Id of API Credential */ - _ credentials_api3_id: Int64, + _ credentials_api3_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9300,9 +11385,9 @@ open class LookerSDK: APIMethods { */ public func all_user_credentials_api3s( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9320,26 +11405,22 @@ open class LookerSDK: APIMethods { * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /users/{user_id}/credentials_api3 -> CredentialsApi3 + * POST /users/{user_id}/credentials_api3 -> CreateCredentialsApi3 */ public func create_user_credentials_api3( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, - /** - * @param {CredentialsApi3} body WARNING: no writeable properties found for POST, PUT, or PATCH - */ - body: CredentialsApi3?, + _ user_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil - ) -> SDKResponse { + ) -> SDKResponse { let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.post("/users/\(path_user_id)/credentials_api3", - ["fields": fields], try! self.encode(body), options) + let result: SDKResponse = self.post("/users/\(path_user_id)/credentials_api3", + ["fields": fields], nil, options) return result } @@ -9352,13 +11433,13 @@ open class LookerSDK: APIMethods { */ public func user_credentials_embed( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} credentials_embed_id Id of Embedding Credential + * @param {String} credentials_embed_id Id of Embedding Credential */ - _ credentials_embed_id: Int64, + _ credentials_embed_id: String, /** * @param {String} fields Requested fields. */ @@ -9381,13 +11462,13 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_embed( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} credentials_embed_id Id of Embedding Credential + * @param {String} credentials_embed_id Id of Embedding Credential */ - _ credentials_embed_id: Int64, + _ credentials_embed_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9405,9 +11486,9 @@ open class LookerSDK: APIMethods { */ public func all_user_credentials_embeds( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9429,9 +11510,9 @@ open class LookerSDK: APIMethods { */ public func user_credentials_looker_openid( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9453,9 +11534,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_credentials_looker_openid( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9472,13 +11553,13 @@ open class LookerSDK: APIMethods { */ public func user_session( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} session_id Id of Web Login Session + * @param {String} session_id Id of Web Login Session */ - _ session_id: Int64, + _ session_id: String, /** * @param {String} fields Requested fields. */ @@ -9501,13 +11582,13 @@ open class LookerSDK: APIMethods { */ public func delete_user_session( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} session_id Id of Web Login Session + * @param {String} session_id Id of Web Login Session */ - _ session_id: Int64, + _ session_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9525,9 +11606,9 @@ open class LookerSDK: APIMethods { */ public func all_user_sessions( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9557,9 +11638,9 @@ open class LookerSDK: APIMethods { */ public func create_user_credentials_email_password_reset( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {Bool} expires Expiring token. */ @@ -9583,9 +11664,9 @@ open class LookerSDK: APIMethods { */ public func user_roles( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9609,9 +11690,9 @@ open class LookerSDK: APIMethods { */ public func set_user_roles( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {[String]} body */ @@ -9650,17 +11731,17 @@ open class LookerSDK: APIMethods { */ public func user_attribute_user_values( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {DelimArray} user_attribute_ids Specific user attributes to request. Omit or leave blank to request all user attributes. + * @param {DelimArray} user_attribute_ids Specific user attributes to request. Omit or leave blank to request all user attributes. */ - user_attribute_ids: DelimArray? = nil, + user_attribute_ids: DelimArray? = nil, /** * @param {Bool} all_values If true, returns all values in the search path instead of just the first value found. Useful for debugging group precedence. */ @@ -9686,13 +11767,13 @@ open class LookerSDK: APIMethods { */ public func set_user_attribute_user_value( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, /** * @param {WriteUserAttributeWithValue} body */ @@ -9717,13 +11798,13 @@ open class LookerSDK: APIMethods { */ public func delete_user_attribute_user_value( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9732,6 +11813,87 @@ open class LookerSDK: APIMethods { return result } + /** + * ### Send a password reset token. + * This will send a password reset email to the user. If a password reset token does not already exist + * for this user, it will create one and then send it. + * If the user has not yet set up their account, it will send a setup email to the user. + * The URL sent in the email is expressed as the 'password_reset_url' of the user's email/password credential object. + * Password reset URLs will expire in 60 minutes. + * This method can be called with an empty body. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * POST /users/{user_id}/credentials_email/send_password_reset -> CredentialsEmail + */ + public func send_user_credentials_email_password_reset( + /** + * @param {String} user_id Id of user + */ + _ user_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_user_id = encodeParam(user_id) + let result: SDKResponse = self.post("/users/\(path_user_id)/credentials_email/send_password_reset", + ["fields": fields], nil, options) + return result + } + + /** + * ### Change a disabled user's email addresses + * + * Allows the admin to change the email addresses for all the user's + * associated credentials. Will overwrite all associated email addresses with + * the value supplied in the 'email' body param. + * The user's 'is_disabled' status must be true. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * POST /users/{user_id}/update_emails -> User + */ + public func wipeout_user_emails( + /** + * @param {String} user_id Id of user + */ + _ user_id: String, + /** + * @param {UserEmailOnly} body + */ + _ body: UserEmailOnly, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_user_id = encodeParam(user_id) + let result: SDKResponse = self.post("/users/\(path_user_id)/update_emails", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * Create an embed user from an external user ID + * + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * POST /users/embed_user -> UserPublic + */ + public func create_embed_user( + /** + * @param {CreateEmbedUserRequest} body + */ + _ body: CreateEmbedUserRequest, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/users/embed_user", nil, try! self.encode(body), options) + return result + } + // MARK UserAttribute: Manage User Attributes @@ -9794,9 +11956,9 @@ open class LookerSDK: APIMethods { */ public func user_attribute( /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, /** * @param {String} fields Requested fields. */ @@ -9816,9 +11978,9 @@ open class LookerSDK: APIMethods { */ public func update_user_attribute( /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, /** * @param {WriteUserAttribute} body */ @@ -9842,9 +12004,9 @@ open class LookerSDK: APIMethods { */ public func delete_user_attribute( /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_attribute_id = encodeParam(user_attribute_id) @@ -9865,9 +12027,9 @@ open class LookerSDK: APIMethods { */ public func all_user_attribute_group_values( /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, /** * @param {String} fields Requested fields. */ @@ -9906,9 +12068,9 @@ open class LookerSDK: APIMethods { */ public func set_user_attribute_group_values( /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, /** * @param {[UserAttributeGroupValue]} body */ diff --git a/swift/looker/sdk/models.swift b/swift/looker/sdk/models.swift index 1801e5a69..ac2d43cb0 100644 --- a/swift/looker/sdk/models.swift +++ b/swift/looker/sdk/models.swift @@ -25,11 +25,11 @@ */ /** - * 258 API models: 190 Spec, 0 Request, 51 Write, 17 Enum + * 329 API models: 247 Spec, 0 Request, 60 Write, 22 Enum */ -/// NOTE: Do not edit this file generated by Looker SDK Codegen for API 3.1 +/// NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0 import Foundation @@ -39,6 +39,7 @@ public struct AccessToken: SDKModel { case _access_token = "access_token" case _token_type = "token_type" case _expires_in = "expires_in" + case _refresh_token = "refresh_token" } private var _access_token: AnyString? /** @@ -67,1624 +68,1589 @@ public struct AccessToken: SDKModel { set { _expires_in = newValue.map(AnyInt.init) } } - public init(access_token: String? = nil, token_type: String? = nil, expires_in: Int64? = nil) { + private var _refresh_token: AnyString? + /** + * Refresh token which can be used to obtain a new access token (read-only) + */ + public var refresh_token: String? { + get { _refresh_token?.value } + set { _refresh_token = newValue.map(AnyString.init) } + } + + public init(access_token: String? = nil, token_type: String? = nil, expires_in: Int64? = nil, refresh_token: String? = nil) { self._access_token = access_token.map(AnyString.init) self._token_type = token_type.map(AnyString.init) self._expires_in = expires_in.map(AnyInt.init) + self._refresh_token = refresh_token.map(AnyString.init) } } -/** - * The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: "left", "right". (Enum defined in LookmlModelExploreField) - */ -public enum Align: String, Codable { - case left = "left" - case right = "right" -} - -public struct ApiSession: SDKModel { +public struct Alert: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _workspace_id = "workspace_id" - case _sudo_user_id = "sudo_user_id" + case applied_dashboard_filters + case comparison_type + case _cron = "cron" + case _custom_url_base = "custom_url_base" + case _custom_url_params = "custom_url_params" + case _custom_url_label = "custom_url_label" + case show_custom_url + case _custom_title = "custom_title" + case _dashboard_element_id = "dashboard_element_id" + case _description = "description" + case destinations + case field + case followed + case followable + case _id = "id" + case is_disabled + case _disabled_reason = "disabled_reason" + case is_public + case investigative_content_type + case _investigative_content_id = "investigative_content_id" + case _investigative_content_title = "investigative_content_title" + case _lookml_dashboard_id = "lookml_dashboard_id" + case _lookml_link_id = "lookml_link_id" + case _owner_id = "owner_id" + case _owner_display_name = "owner_display_name" + case threshold + case time_series_condition_state } /** - * Operations the current user is able to perform on this object (read-only) + * Filters coming from the dashboard that are applied. Example `[{ "filter_title": "Name", "field_name": "distribution_centers.name", "filter_value": "Los Angeles CA" }]` */ - public var can: StringDictionary? + public var applied_dashboard_filters: [AlertAppliedDashboardFilter]? - private var _workspace_id: AnyString? /** - * The id of active workspace for this session + * 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://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". */ - public var workspace_id: String? { - get { _workspace_id?.value } - set { _workspace_id = newValue.map(AnyString.init) } - } + public var comparison_type: ComparisonType - private var _sudo_user_id: AnyInt? + private var _cron: AnyString /** - * The id of the actual user in the case when this session represents one user sudo'ing as another (read-only) + * Vixie-Style crontab specification when to run. At minumum, it has to be longer than 15 minute intervals */ - public var sudo_user_id: Int64? { - get { _sudo_user_id?.value } - set { _sudo_user_id = newValue.map(AnyInt.init) } + public var cron: String { + get { _cron.value } + set { _cron = AnyString.init(newValue) } } - public init(can: StringDictionary? = nil, workspace_id: String? = nil, sudo_user_id: Int64? = nil) { - self.can = can - self._workspace_id = workspace_id.map(AnyString.init) - self._sudo_user_id = sudo_user_id.map(AnyInt.init) + private var _custom_url_base: AnyString? + /** + * Domain for the custom url selected by the alert creator from the admin defined domain allowlist + */ + public var custom_url_base: String? { + get { _custom_url_base?.value } + set { _custom_url_base = newValue.map(AnyString.init) } } -} - -public struct ApiVersion: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _looker_release_version = "looker_release_version" - case current_version - case supported_versions - case _api_server_url = "api_server_url" - case _web_server_url = "web_server_url" - } - private var _looker_release_version: AnyString? + private var _custom_url_params: AnyString? /** - * Current Looker release version number (read-only) + * Parameters and path for the custom url defined by the alert creator */ - public var looker_release_version: String? { - get { _looker_release_version?.value } - set { _looker_release_version = newValue.map(AnyString.init) } + public var custom_url_params: String? { + get { _custom_url_params?.value } + set { _custom_url_params = newValue.map(AnyString.init) } } - public var current_version: ApiVersionElement? + private var _custom_url_label: AnyString? + /** + * Label for the custom url defined by the alert creator + */ + public var custom_url_label: String? { + get { _custom_url_label?.value } + set { _custom_url_label = newValue.map(AnyString.init) } + } /** - * Array of versions supported by this Looker instance (read-only) + * Boolean to determine if the custom url should be used */ - public var supported_versions: [ApiVersionElement]? + public var show_custom_url: Bool? - private var _api_server_url: AnyString? + private var _custom_title: AnyString? /** - * API server base url (read-only) + * An optional, user-defined title for the alert */ - public var api_server_url: String? { - get { _api_server_url?.value } - set { _api_server_url = newValue.map(AnyString.init) } + public var custom_title: String? { + get { _custom_title?.value } + set { _custom_title = newValue.map(AnyString.init) } } - private var _web_server_url: AnyString? + private var _dashboard_element_id: AnyString? /** - * Web server base url (read-only) + * ID of the dashboard element associated with the alert. Refer to [dashboard_element()](#!/Dashboard/DashboardElement) */ - public var web_server_url: String? { - get { _web_server_url?.value } - set { _web_server_url = newValue.map(AnyString.init) } + public var dashboard_element_id: String? { + get { _dashboard_element_id?.value } + set { _dashboard_element_id = newValue.map(AnyString.init) } } - public init(looker_release_version: String? = nil, current_version: ApiVersionElement? = nil, supported_versions: [ApiVersionElement]? = nil, api_server_url: String? = nil, web_server_url: String? = nil) { - self._looker_release_version = looker_release_version.map(AnyString.init) - self.current_version = current_version - self.supported_versions = supported_versions - self._api_server_url = api_server_url.map(AnyString.init) - self._web_server_url = web_server_url.map(AnyString.init) + private var _description: AnyString? + /** + * An optional description for the alert. This supplements the title + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } } -} + /** + * Array of destinations to send alerts to. Must be the same type of destination. Example `[{ "destination_type": "EMAIL", "email_address": "test@test.com" }]` + */ + public var destinations: [AlertDestination] -public struct ApiVersionElement: SDKModel { + public var field: AlertField - private enum CodingKeys : String, CodingKey { - case _version = "version" - case _full_version = "full_version" - case _status = "status" - case swagger_url - } - private var _version: AnyString? /** - * Version number as it appears in '/api/xxx/' urls (read-only) + * Whether or not the user follows this alert. (read-only) */ - public var version: String? { - get { _version?.value } - set { _version = newValue.map(AnyString.init) } - } + public var followed: Bool? - private var _full_version: AnyString? /** - * Full version number including minor version (read-only) + * Whether or not the alert is followable (read-only) */ - public var full_version: String? { - get { _full_version?.value } - set { _full_version = newValue.map(AnyString.init) } - } + public var followable: Bool? - private var _status: AnyString? + private var _id: AnyString? /** - * Status of this version (read-only) + * ID of the alert (read-only) */ - public var status: String? { - get { _status?.value } - set { _status = newValue.map(AnyString.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } /** - * Url for swagger.json for this version (read-only) + * Whether or not the alert is disabled */ - public var swagger_url: URI? + public var is_disabled: Bool? - public init(version: String? = nil, full_version: String? = nil, status: String? = nil, swagger_url: URI? = nil) { - self._version = version.map(AnyString.init) - self._full_version = full_version.map(AnyString.init) - self._status = status.map(AnyString.init) - self.swagger_url = swagger_url + private var _disabled_reason: AnyString? + /** + * Reason for disabling alert + */ + public var disabled_reason: String? { + get { _disabled_reason?.value } + set { _disabled_reason = newValue.map(AnyString.init) } } -} + /** + * Whether or not the alert is public + */ + public var is_public: Bool? -public struct BackupConfiguration: SDKModel { + /** + * The type of the investigative content Valid values are: "dashboard". + */ + public var investigative_content_type: InvestigativeContentType? - private enum CodingKeys : String, CodingKey { - case can - case _type = "type" - case _custom_s3_bucket = "custom_s3_bucket" - case _custom_s3_bucket_region = "custom_s3_bucket_region" - case _custom_s3_key = "custom_s3_key" - case _custom_s3_secret = "custom_s3_secret" - case url - } + private var _investigative_content_id: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * The ID of the investigative content. For dashboards, this will be the dashboard ID */ - public var can: StringDictionary? + public var investigative_content_id: String? { + get { _investigative_content_id?.value } + set { _investigative_content_id = newValue.map(AnyString.init) } + } - private var _type: AnyString? + private var _investigative_content_title: AnyString? /** - * Type of backup: looker-s3 or custom-s3 + * The title of the investigative content. (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var investigative_content_title: String? { + get { _investigative_content_title?.value } + set { _investigative_content_title = newValue.map(AnyString.init) } } - private var _custom_s3_bucket: AnyString? + private var _lookml_dashboard_id: AnyString? /** - * Name of bucket for custom-s3 backups + * ID of the LookML dashboard associated with the alert */ - public var custom_s3_bucket: String? { - get { _custom_s3_bucket?.value } - set { _custom_s3_bucket = newValue.map(AnyString.init) } + public var lookml_dashboard_id: String? { + get { _lookml_dashboard_id?.value } + set { _lookml_dashboard_id = newValue.map(AnyString.init) } } - private var _custom_s3_bucket_region: AnyString? + private var _lookml_link_id: AnyString? /** - * Name of region where the bucket is located + * ID of the LookML dashboard element associated with the alert */ - public var custom_s3_bucket_region: String? { - get { _custom_s3_bucket_region?.value } - set { _custom_s3_bucket_region = newValue.map(AnyString.init) } + public var lookml_link_id: String? { + get { _lookml_link_id?.value } + set { _lookml_link_id = newValue.map(AnyString.init) } } - private var _custom_s3_key: AnyString? + private var _owner_id: AnyString /** - * (Write-Only) AWS S3 key used for custom-s3 backups + * User id of alert owner */ - public var custom_s3_key: String? { - get { _custom_s3_key?.value } - set { _custom_s3_key = newValue.map(AnyString.init) } + public var owner_id: String { + get { _owner_id.value } + set { _owner_id = AnyString.init(newValue) } } - private var _custom_s3_secret: AnyString? + private var _owner_display_name: AnyString? /** - * (Write-Only) AWS S3 secret used for custom-s3 backups + * Alert owner's display name (read-only) */ - public var custom_s3_secret: String? { - get { _custom_s3_secret?.value } - set { _custom_s3_secret = newValue.map(AnyString.init) } + public var owner_display_name: String? { + get { _owner_display_name?.value } + set { _owner_display_name = newValue.map(AnyString.init) } } /** - * Link to get this item (read-only) + * Value of the alert threshold */ - public var url: URI? + public var threshold: Double - public init(can: StringDictionary? = nil, type: String? = nil, custom_s3_bucket: String? = nil, custom_s3_bucket_region: String? = nil, custom_s3_key: String? = nil, custom_s3_secret: String? = nil, url: URI? = nil) { - self.can = can - self._type = type.map(AnyString.init) - self._custom_s3_bucket = custom_s3_bucket.map(AnyString.init) - self._custom_s3_bucket_region = custom_s3_bucket_region.map(AnyString.init) - self._custom_s3_key = custom_s3_key.map(AnyString.init) - self._custom_s3_secret = custom_s3_secret.map(AnyString.init) - self.url = url + public var time_series_condition_state: AlertConditionState? + + public init(applied_dashboard_filters: [AlertAppliedDashboardFilter]? = nil, comparison_type: ComparisonType, cron: String, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, custom_title: String? = nil, dashboard_element_id: String? = nil, description: String? = nil, destinations: [AlertDestination], field: AlertField, followed: Bool? = nil, followable: Bool? = nil, id: String? = nil, is_disabled: Bool? = nil, disabled_reason: String? = nil, is_public: Bool? = nil, investigative_content_type: InvestigativeContentType? = nil, investigative_content_id: String? = nil, investigative_content_title: String? = nil, lookml_dashboard_id: String? = nil, lookml_link_id: String? = nil, owner_id: String, owner_display_name: String? = nil, threshold: Double, time_series_condition_state: AlertConditionState? = nil) { + self.applied_dashboard_filters = applied_dashboard_filters + self.comparison_type = comparison_type + self._cron = AnyString.init(cron) + 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) + self.show_custom_url = show_custom_url + self._custom_title = custom_title.map(AnyString.init) + self._dashboard_element_id = dashboard_element_id.map(AnyString.init) + self._description = description.map(AnyString.init) + self.destinations = destinations + self.field = field + self.followed = followed + self.followable = followable + self._id = id.map(AnyString.init) + self.is_disabled = is_disabled + self._disabled_reason = disabled_reason.map(AnyString.init) + self.is_public = is_public + self.investigative_content_type = investigative_content_type + self._investigative_content_id = investigative_content_id.map(AnyString.init) + self._investigative_content_title = investigative_content_title.map(AnyString.init) + self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) + self._lookml_link_id = lookml_link_id.map(AnyString.init) + self._owner_id = AnyString.init(owner_id) + self._owner_display_name = owner_display_name.map(AnyString.init) + self.threshold = threshold + self.time_series_condition_state = time_series_condition_state } -} + public init(applied_dashboard_filters: [AlertAppliedDashboardFilter]? = nil, _ comparison_type: ComparisonType, _ cron: String, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, custom_title: String? = nil, dashboard_element_id: String? = nil, description: String? = nil, _ destinations: [AlertDestination], _ field: AlertField, followed: Bool? = nil, followable: Bool? = nil, id: String? = nil, is_disabled: Bool? = nil, disabled_reason: String? = nil, is_public: Bool? = nil, investigative_content_type: InvestigativeContentType? = nil, investigative_content_id: String? = nil, investigative_content_title: String? = nil, lookml_dashboard_id: String? = nil, lookml_link_id: String? = nil, _ owner_id: String, owner_display_name: String? = nil, _ threshold: Double, time_series_condition_state: AlertConditionState? = nil) { + self.init(applied_dashboard_filters: applied_dashboard_filters, comparison_type: comparison_type, cron: cron, custom_url_base: custom_url_base, custom_url_params: custom_url_params, custom_url_label: custom_url_label, show_custom_url: show_custom_url, custom_title: custom_title, dashboard_element_id: dashboard_element_id, description: description, destinations: destinations, field: field, followed: followed, followable: followable, id: id, is_disabled: is_disabled, disabled_reason: disabled_reason, is_public: is_public, investigative_content_type: investigative_content_type, investigative_content_id: investigative_content_id, investigative_content_title: investigative_content_title, lookml_dashboard_id: lookml_dashboard_id, lookml_link_id: lookml_link_id, owner_id: owner_id, owner_display_name: owner_display_name, threshold: threshold, time_series_condition_state: time_series_condition_state) + } -/** - * Field category Valid values are: "parameter", "filter", "measure", "dimension". (Enum defined in LookmlModelExploreField) - */ -public enum Category: String, Codable { - case parameter = "parameter" - case filter = "filter" - case measure = "measure" - case dimension = "dimension" } -public struct ColorCollection: SDKModel { +public struct AlertAppliedDashboardFilter: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" - case _label = "label" - case categoricalPalettes - case sequentialPalettes - case divergingPalettes + case _filter_title = "filter_title" + case _field_name = "field_name" + case _filter_value = "filter_value" + case _filter_description = "filter_description" } - private var _id: AnyString? + private var _filter_title: AnyString /** - * Unique Id (read-only) + * Field Title. Refer to `DashboardFilter.title` in [DashboardFilter](#!/types/DashboardFilter). Example `Name` */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var filter_title: String { + get { _filter_title.value } + set { _filter_title = AnyString.init(newValue) } } - private var _label: AnyString? + private var _field_name: AnyString /** - * Label of color collection + * Field Name. Refer to `DashboardFilter.dimension` in [DashboardFilter](#!/types/DashboardFilter). Example `distribution_centers.name` */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } + public var field_name: String { + get { _field_name.value } + set { _field_name = AnyString.init(newValue) } } + private var _filter_value: AnyString /** - * Array of categorical palette definitions + * Field Value. [Filter Expressions](https://cloud.google.com/looker/docs/reference/filter-expressions). Example `Los Angeles CA` */ - public var categoricalPalettes: [DiscretePalette]? + public var filter_value: String { + get { _filter_value.value } + set { _filter_value = AnyString.init(newValue) } + } + private var _filter_description: AnyString? /** - * Array of discrete palette definitions + * Human Readable Filter Description. This may be null or auto-generated. Example `is Los Angeles CA` (read-only) */ - public var sequentialPalettes: [ContinuousPalette]? + public var filter_description: String? { + get { _filter_description?.value } + set { _filter_description = newValue.map(AnyString.init) } + } - /** - * Array of diverging palette definitions - */ - public var divergingPalettes: [ContinuousPalette]? + public init(filter_title: String, field_name: String, filter_value: String, filter_description: String? = nil) { + self._filter_title = AnyString.init(filter_title) + self._field_name = AnyString.init(field_name) + self._filter_value = AnyString.init(filter_value) + self._filter_description = filter_description.map(AnyString.init) + } - public init(id: String? = nil, label: String? = nil, categoricalPalettes: [DiscretePalette]? = nil, sequentialPalettes: [ContinuousPalette]? = nil, divergingPalettes: [ContinuousPalette]? = nil) { - self._id = id.map(AnyString.init) - self._label = label.map(AnyString.init) - self.categoricalPalettes = categoricalPalettes - self.sequentialPalettes = sequentialPalettes - self.divergingPalettes = divergingPalettes + public init(_ filter_title: String, _ field_name: String, _ filter_value: String, filter_description: String? = nil) { + self.init(filter_title: filter_title, field_name: field_name, filter_value: filter_value, filter_description: filter_description) } } -public struct ColorStop: SDKModel { +public struct AlertConditionState: SDKModel { private enum CodingKeys : String, CodingKey { - case _color = "color" - case _offset = "offset" + case _previous_time_series_id = "previous_time_series_id" + case _latest_time_series_id = "latest_time_series_id" } - private var _color: AnyString? + private var _previous_time_series_id: AnyString? /** - * CSS color string + * (Write-Only) The second latest time string the alert has seen. */ - public var color: String? { - get { _color?.value } - set { _color = newValue.map(AnyString.init) } + public var previous_time_series_id: String? { + get { _previous_time_series_id?.value } + set { _previous_time_series_id = newValue.map(AnyString.init) } } - private var _offset: AnyInt? + private var _latest_time_series_id: AnyString? /** - * Offset in continuous palette (0 to 100) + * (Write-Only) Latest time string the alert has seen. */ - public var offset: Int64? { - get { _offset?.value } - set { _offset = newValue.map(AnyInt.init) } + public var latest_time_series_id: String? { + get { _latest_time_series_id?.value } + set { _latest_time_series_id = newValue.map(AnyString.init) } } - public init(color: String? = nil, offset: Int64? = nil) { - self._color = color.map(AnyString.init) - self._offset = offset.map(AnyInt.init) + public init(previous_time_series_id: String? = nil, latest_time_series_id: String? = nil) { + self._previous_time_series_id = previous_time_series_id.map(AnyString.init) + self._latest_time_series_id = latest_time_series_id.map(AnyString.init) } } -public struct ContentFavorite: SDKModel { +public struct AlertDestination: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" - case _user_id = "user_id" - case _content_metadata_id = "content_metadata_id" - case _look_id = "look_id" - case _dashboard_id = "dashboard_id" - case look - case dashboard + case destination_type + case _email_address = "email_address" + case _action_hub_integration_id = "action_hub_integration_id" + case _action_hub_form_params_json = "action_hub_form_params_json" } - private var _id: AnyInt? /** - * Unique Id (read-only) + * Type of destination that the alert will be sent to Valid values are: "EMAIL", "ACTION_HUB". */ - public var id: Int64? { - get { _id?.value } - set { _id = newValue.map(AnyInt.init) } - } + public var destination_type: DestinationType - private var _user_id: AnyInt? + private var _email_address: AnyString? /** - * User Id which owns this ContentFavorite + * Email address for the 'email' type */ - public var user_id: Int64? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } + public var email_address: String? { + get { _email_address?.value } + set { _email_address = newValue.map(AnyString.init) } } - private var _content_metadata_id: AnyInt? + private var _action_hub_integration_id: AnyString? /** - * Content Metadata Id associated with this ContentFavorite + * Action hub integration id for the 'action_hub' type. [Integration](#!/types/Integration) */ - public var content_metadata_id: Int64? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } + public var action_hub_integration_id: String? { + get { _action_hub_integration_id?.value } + set { _action_hub_integration_id = newValue.map(AnyString.init) } } - private var _look_id: AnyInt? + private var _action_hub_form_params_json: AnyString? /** - * Id of a look (read-only) + * Action hub form params json for the 'action_hub' type [IntegrationParam](#!/types/IntegrationParam) */ - public var look_id: Int64? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyInt.init) } + public var action_hub_form_params_json: String? { + get { _action_hub_form_params_json?.value } + set { _action_hub_form_params_json = newValue.map(AnyString.init) } } - private var _dashboard_id: AnyInt? - /** - * Id of a dashboard (read-only) - */ - public var dashboard_id: Int64? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyInt.init) } + public init(destination_type: DestinationType, email_address: String? = nil, action_hub_integration_id: String? = nil, action_hub_form_params_json: String? = nil) { + self.destination_type = destination_type + self._email_address = email_address.map(AnyString.init) + self._action_hub_integration_id = action_hub_integration_id.map(AnyString.init) + self._action_hub_form_params_json = action_hub_form_params_json.map(AnyString.init) } - public var look: LookBasic? - - public var dashboard: DashboardBase? - - public init(id: Int64? = nil, user_id: Int64? = nil, content_metadata_id: Int64? = nil, look_id: Int64? = nil, dashboard_id: Int64? = nil, look: LookBasic? = nil, dashboard: DashboardBase? = nil) { - self._id = id.map(AnyInt.init) - self._user_id = user_id.map(AnyInt.init) - self._content_metadata_id = content_metadata_id.map(AnyInt.init) - self._look_id = look_id.map(AnyInt.init) - self._dashboard_id = dashboard_id.map(AnyInt.init) - self.look = look - self.dashboard = dashboard + public init(_ destination_type: DestinationType, email_address: String? = nil, action_hub_integration_id: String? = nil, action_hub_form_params_json: String? = nil) { + self.init(destination_type: destination_type, email_address: email_address, action_hub_integration_id: action_hub_integration_id, action_hub_form_params_json: action_hub_form_params_json) } } -public struct ContentMeta: SDKModel { +public struct AlertField: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _id = "id" + case _title = "title" case _name = "name" - case _parent_id = "parent_id" - case _dashboard_id = "dashboard_id" - case _look_id = "look_id" - case _folder_id = "folder_id" - case _content_type = "content_type" - case inherits - case _inheriting_id = "inheriting_id" - case _slug = "slug" - case _space_id = "space_id" + case filter } + private var _title: AnyString /** - * Operations the current user is able to perform on this object (read-only) + * Field's title. Usually auto-generated to reflect field name and its filters */ - public var can: StringDictionary? + public var title: String { + get { _title.value } + set { _title = AnyString.init(newValue) } + } - private var _id: AnyInt? + private var _name: AnyString /** - * Unique Id (read-only) + * Field's name. Has the format `.` Refer to [docs](https://cloud.google.com/looker/docs/sharing-and-publishing/creating-alerts) for more details */ - public var id: Int64? { - get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } } - private var _name: AnyString? /** - * Name or title of underlying content (read-only) + * (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 }] }` */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var filter: [AlertFieldFilter]? + + public init(title: String, name: String, filter: [AlertFieldFilter]? = nil) { + self._title = AnyString.init(title) + self._name = AnyString.init(name) + self.filter = filter + } + + public init(_ title: String, _ name: String, filter: [AlertFieldFilter]? = nil) { + self.init(title: title, name: name, filter: filter) } - private var _parent_id: AnyInt? +} + +public struct AlertFieldFilter: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _field_name = "field_name" + case field_value + case _filter_value = "filter_value" + } + private var _field_name: AnyString /** - * Id of Parent Content (read-only) + * Field Name. Has format `.` */ - public var parent_id: Int64? { - get { _parent_id?.value } - set { _parent_id = newValue.map(AnyInt.init) } + public var field_name: String { + get { _field_name.value } + set { _field_name = AnyString.init(newValue) } } - private var _dashboard_id: AnyString? /** - * Id of associated dashboard when content_type is "dashboard" (read-only) + * Field Value. Depends on the type of field - numeric or string. For [location](https://cloud.google.com/looker/docs/reference/field-reference/dimension-type-reference#location) type, it's a list of floats. Example `[1.0, 56.0]` */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + public var field_value: AnyCodable + + private var _filter_value: AnyString? + /** + * Filter Value. Usually null except for [location](https://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'` + */ + public var filter_value: String? { + get { _filter_value?.value } + set { _filter_value = newValue.map(AnyString.init) } } - private var _look_id: AnyInt? + public init(field_name: String, field_value: AnyCodable, filter_value: String? = nil) { + self._field_name = AnyString.init(field_name) + self.field_value = field_value + self._filter_value = filter_value.map(AnyString.init) + } + + public init(_ field_name: String, _ field_value: AnyCodable, filter_value: String? = nil) { + self.init(field_name: field_name, field_value: field_value, filter_value: filter_value) + } + +} + +public struct AlertNotifications: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _notification_id = "notification_id" + case _alert_condition_id = "alert_condition_id" + case _user_id = "user_id" + case is_read + case field_value + case threshold_value + case _ran_at = "ran_at" + case alert + } + private var _notification_id: AnyString? /** - * Id of associated look when content_type is "look" (read-only) + * ID of the notification (read-only) */ - public var look_id: Int64? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyInt.init) } + public var notification_id: String? { + get { _notification_id?.value } + set { _notification_id = newValue.map(AnyString.init) } } - private var _folder_id: AnyString? + private var _alert_condition_id: AnyString? /** - * Id of associated folder when content_type is "space" (read-only) + * ID of the alert (read-only) */ - public var folder_id: String? { - get { _folder_id?.value } - set { _folder_id = newValue.map(AnyString.init) } + public var alert_condition_id: String? { + get { _alert_condition_id?.value } + set { _alert_condition_id = newValue.map(AnyString.init) } } - private var _content_type: AnyString? + private var _user_id: AnyString? /** - * Content Type ("dashboard", "look", or "space") (read-only) + * ID of the user (read-only) */ - public var content_type: String? { - get { _content_type?.value } - set { _content_type = newValue.map(AnyString.init) } + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } } /** - * Whether content inherits its access levels from parent + * Read state of the notification */ - public var inherits: Bool? + public var is_read: Bool? - private var _inheriting_id: AnyInt? /** - * Id of Inherited Content (read-only) + * The value of the field on which the alert condition is set (read-only) */ - public var inheriting_id: Int64? { - get { _inheriting_id?.value } - set { _inheriting_id = newValue.map(AnyInt.init) } - } + public var field_value: Double? - private var _slug: AnyString? /** - * Content Slug (read-only) + * The value of the threshold which triggers the alert notification (read-only) */ - public var slug: String? { - get { _slug?.value } - set { _slug = newValue.map(AnyString.init) } - } + public var threshold_value: Double? - private var _space_id: AnyString? + private var _ran_at: AnyString? /** - * Id of associated space when content_type is "space" (read-only) + * The time at which the alert query ran (read-only) */ - public var space_id: String? { - get { _space_id?.value } - set { _space_id = newValue.map(AnyString.init) } + public var ran_at: String? { + get { _ran_at?.value } + set { _ran_at = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, id: Int64? = nil, name: String? = nil, parent_id: Int64? = nil, dashboard_id: String? = nil, look_id: Int64? = nil, folder_id: String? = nil, content_type: String? = nil, inherits: Bool? = nil, inheriting_id: Int64? = nil, slug: String? = nil, space_id: String? = nil) { - self.can = can - self._id = id.map(AnyInt.init) - self._name = name.map(AnyString.init) - self._parent_id = parent_id.map(AnyInt.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._look_id = look_id.map(AnyInt.init) - self._folder_id = folder_id.map(AnyString.init) - self._content_type = content_type.map(AnyString.init) - self.inherits = inherits - self._inheriting_id = inheriting_id.map(AnyInt.init) - self._slug = slug.map(AnyString.init) - self._space_id = space_id.map(AnyString.init) + public var alert: MobilePayload? + + public init(notification_id: String? = nil, alert_condition_id: String? = nil, user_id: String? = nil, is_read: Bool? = nil, field_value: Double? = nil, threshold_value: Double? = nil, ran_at: String? = nil, alert: MobilePayload? = nil) { + self._notification_id = notification_id.map(AnyString.init) + self._alert_condition_id = alert_condition_id.map(AnyString.init) + self._user_id = user_id.map(AnyString.init) + self.is_read = is_read + self.field_value = field_value + self.threshold_value = threshold_value + self._ran_at = ran_at.map(AnyString.init) + self.alert = alert } } -/** - * WARNING: no writeable properties found for POST, PUT, or PATCH - */ -public struct ContentMetaGroupUser: SDKModel { +public struct AlertPatch: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _id = "id" - case _content_metadata_id = "content_metadata_id" - case permission_type - case _group_id = "group_id" - case _user_id = "user_id" + case _owner_id = "owner_id" + case is_disabled + case _disabled_reason = "disabled_reason" + case is_public + case threshold } + private var _owner_id: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * New owner ID of the alert */ - public var can: StringDictionary? + public var owner_id: String? { + get { _owner_id?.value } + set { _owner_id = newValue.map(AnyString.init) } + } - private var _id: AnyString? /** - * Unique Id (read-only) + * Set alert enabled or disabled */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } + public var is_disabled: Bool? - private var _content_metadata_id: AnyString? + private var _disabled_reason: AnyString? /** - * Id of associated Content Metadata (read-only) + * The reason this alert is disabled */ - public var content_metadata_id: String? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyString.init) } + public var disabled_reason: String? { + get { _disabled_reason?.value } + set { _disabled_reason = newValue.map(AnyString.init) } } /** - * Type of permission: "view" or "edit" Valid values are: "view", "edit". (read-only) + * Set alert public or private */ - public var permission_type: PermissionType? + public var is_public: Bool? - private var _group_id: AnyInt? /** - * ID of associated group (read-only) + * New threshold value */ - public var group_id: Int64? { - get { _group_id?.value } - set { _group_id = newValue.map(AnyInt.init) } - } + public var threshold: Double? - private var _user_id: AnyInt? - /** - * ID of associated user (read-only) - */ - public var user_id: Int64? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } + public init(owner_id: String? = nil, is_disabled: Bool? = nil, disabled_reason: String? = nil, is_public: Bool? = nil, threshold: Double? = nil) { + self._owner_id = owner_id.map(AnyString.init) + self.is_disabled = is_disabled + self._disabled_reason = disabled_reason.map(AnyString.init) + self.is_public = is_public + self.threshold = threshold } - public init(can: StringDictionary? = nil, id: String? = nil, content_metadata_id: String? = nil, permission_type: PermissionType? = nil, group_id: Int64? = nil, user_id: Int64? = nil) { - self.can = can - self._id = id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyString.init) - self.permission_type = permission_type - self._group_id = group_id.map(AnyInt.init) - self._user_id = user_id.map(AnyInt.init) - } +} +/** + * The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: "left", "right". (Enum defined in LookmlModelExploreField) + */ +public enum Align: String, Codable { + case left = "left" + case right = "right" } -public struct ContentValidation: SDKModel { +public struct ApiSession: SDKModel { private enum CodingKeys : String, CodingKey { - case content_with_errors - case computation_time - case _total_looks_validated = "total_looks_validated" - case _total_dashboard_elements_validated = "total_dashboard_elements_validated" - case _total_dashboard_filters_validated = "total_dashboard_filters_validated" - case _total_scheduled_plans_validated = "total_scheduled_plans_validated" - case _total_alerts_validated = "total_alerts_validated" - case _total_explores_validated = "total_explores_validated" + case can + case _workspace_id = "workspace_id" + case _sudo_user_id = "sudo_user_id" } /** - * A list of content errors (read-only) - */ - public var content_with_errors: [ContentValidatorError]? - - /** - * Duration of content validation in seconds (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var computation_time: Float? + public var can: StringDictionary? - private var _total_looks_validated: AnyInt? + private var _workspace_id: AnyString? /** - * The number of looks validated (read-only) + * The id of active workspace for this session */ - public var total_looks_validated: Int64? { - get { _total_looks_validated?.value } - set { _total_looks_validated = newValue.map(AnyInt.init) } + public var workspace_id: String? { + get { _workspace_id?.value } + set { _workspace_id = newValue.map(AnyString.init) } } - private var _total_dashboard_elements_validated: AnyInt? + private var _sudo_user_id: AnyString? /** - * The number of dashboard elements validated (read-only) + * The id of the actual user in the case when this session represents one user sudo'ing as another (read-only) */ - public var total_dashboard_elements_validated: Int64? { - get { _total_dashboard_elements_validated?.value } - set { _total_dashboard_elements_validated = newValue.map(AnyInt.init) } + public var sudo_user_id: String? { + get { _sudo_user_id?.value } + set { _sudo_user_id = newValue.map(AnyString.init) } } - private var _total_dashboard_filters_validated: AnyInt? - /** - * The number of dashboard filters validated (read-only) - */ - public var total_dashboard_filters_validated: Int64? { - get { _total_dashboard_filters_validated?.value } - set { _total_dashboard_filters_validated = newValue.map(AnyInt.init) } + public init(can: StringDictionary? = nil, workspace_id: String? = nil, sudo_user_id: String? = nil) { + self.can = can + self._workspace_id = workspace_id.map(AnyString.init) + self._sudo_user_id = sudo_user_id.map(AnyString.init) } - private var _total_scheduled_plans_validated: AnyInt? - /** - * The number of scheduled plans validated (read-only) - */ - public var total_scheduled_plans_validated: Int64? { - get { _total_scheduled_plans_validated?.value } - set { _total_scheduled_plans_validated = newValue.map(AnyInt.init) } +} + +public struct ApiVersion: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _looker_release_version = "looker_release_version" + case current_version + case supported_versions + case _api_server_url = "api_server_url" + case _web_server_url = "web_server_url" + } + private var _looker_release_version: AnyString? + /** + * Current Looker release version number (read-only) + */ + public var looker_release_version: String? { + get { _looker_release_version?.value } + set { _looker_release_version = newValue.map(AnyString.init) } } - private var _total_alerts_validated: AnyInt? + public var current_version: ApiVersionElement? + /** - * The number of alerts validated (read-only) + * Array of versions supported by this Looker instance (read-only) */ - public var total_alerts_validated: Int64? { - get { _total_alerts_validated?.value } - set { _total_alerts_validated = newValue.map(AnyInt.init) } + public var supported_versions: [ApiVersionElement]? + + private var _api_server_url: AnyString? + /** + * API server base url (read-only) + */ + public var api_server_url: String? { + get { _api_server_url?.value } + set { _api_server_url = newValue.map(AnyString.init) } } - private var _total_explores_validated: AnyInt? + private var _web_server_url: AnyString? /** - * The number of explores used across all content validated (read-only) + * Web server base url (read-only) */ - public var total_explores_validated: Int64? { - get { _total_explores_validated?.value } - set { _total_explores_validated = newValue.map(AnyInt.init) } + public var web_server_url: String? { + get { _web_server_url?.value } + set { _web_server_url = newValue.map(AnyString.init) } } - public init(content_with_errors: [ContentValidatorError]? = nil, computation_time: Float? = nil, total_looks_validated: Int64? = nil, total_dashboard_elements_validated: Int64? = nil, total_dashboard_filters_validated: Int64? = nil, total_scheduled_plans_validated: Int64? = nil, total_alerts_validated: Int64? = nil, total_explores_validated: Int64? = nil) { - self.content_with_errors = content_with_errors - self.computation_time = computation_time - self._total_looks_validated = total_looks_validated.map(AnyInt.init) - self._total_dashboard_elements_validated = total_dashboard_elements_validated.map(AnyInt.init) - self._total_dashboard_filters_validated = total_dashboard_filters_validated.map(AnyInt.init) - self._total_scheduled_plans_validated = total_scheduled_plans_validated.map(AnyInt.init) - self._total_alerts_validated = total_alerts_validated.map(AnyInt.init) - self._total_explores_validated = total_explores_validated.map(AnyInt.init) + public init(looker_release_version: String? = nil, current_version: ApiVersionElement? = nil, supported_versions: [ApiVersionElement]? = nil, api_server_url: String? = nil, web_server_url: String? = nil) { + self._looker_release_version = looker_release_version.map(AnyString.init) + self.current_version = current_version + self.supported_versions = supported_versions + self._api_server_url = api_server_url.map(AnyString.init) + self._web_server_url = web_server_url.map(AnyString.init) } } -public struct ContentValidationAlert: SDKModel { +public struct ApiVersionElement: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" - case _lookml_dashboard_id = "lookml_dashboard_id" - case _lookml_link_id = "lookml_link_id" - case _custom_url_base = "custom_url_base" - case _custom_url_params = "custom_url_params" - case _custom_url_label = "custom_url_label" - case show_custom_url - case _custom_title = "custom_title" + case _version = "version" + case _full_version = "full_version" + case _status = "status" + case _swagger_url = "swagger_url" } - private var _id: AnyInt? + private var _version: AnyString? /** - * ID of the alert + * Version number as it appears in '/api/xxx/' urls (read-only) */ - public var id: Int64? { - get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + public var version: String? { + get { _version?.value } + set { _version = newValue.map(AnyString.init) } } - private var _lookml_dashboard_id: AnyString? + private var _full_version: AnyString? /** - * ID of the LookML dashboard associated with the alert + * Full version number including minor version (read-only) */ - public var lookml_dashboard_id: String? { - get { _lookml_dashboard_id?.value } - set { _lookml_dashboard_id = newValue.map(AnyString.init) } + public var full_version: String? { + get { _full_version?.value } + set { _full_version = newValue.map(AnyString.init) } } - private var _lookml_link_id: AnyString? + private var _status: AnyString? /** - * ID of the LookML dashboard element associated with the alert + * Status of this version (read-only) */ - public var lookml_link_id: String? { - get { _lookml_link_id?.value } - set { _lookml_link_id = newValue.map(AnyString.init) } + public var status: String? { + get { _status?.value } + set { _status = newValue.map(AnyString.init) } } - private var _custom_url_base: AnyString? + private var _swagger_url: AnyString? /** - * Domain for the custom url selected by the alert creator from the admin defined domain allowlist + * Url for swagger.json for this version (read-only) */ - public var custom_url_base: String? { - get { _custom_url_base?.value } - set { _custom_url_base = newValue.map(AnyString.init) } + public var swagger_url: String? { + get { _swagger_url?.value } + set { _swagger_url = newValue.map(AnyString.init) } } - private var _custom_url_params: AnyString? + public init(version: String? = nil, full_version: String? = nil, status: String? = nil, swagger_url: String? = nil) { + self._version = version.map(AnyString.init) + self._full_version = full_version.map(AnyString.init) + self._status = status.map(AnyString.init) + self._swagger_url = swagger_url.map(AnyString.init) + } + +} + +public struct Artifact: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _key = "key" + case _value = "value" + case _content_type = "content_type" + case _version = "version" + case _namespace = "namespace" + case created_at + case updated_at + case _value_size = "value_size" + case _created_by_userid = "created_by_userid" + case _updated_by_userid = "updated_by_userid" + } + private var _key: AnyString /** - * Parameters and path for the custom url defined by the alert creator + * Key of value to store. Namespace + Key must be unique. */ - public var custom_url_params: String? { - get { _custom_url_params?.value } - set { _custom_url_params = newValue.map(AnyString.init) } + public var key: String { + get { _key.value } + set { _key = AnyString.init(newValue) } } - private var _custom_url_label: AnyString? + private var _value: AnyString /** - * Label for the custom url defined by the alert creator + * Value to store. */ - public var custom_url_label: String? { - get { _custom_url_label?.value } - set { _custom_url_label = newValue.map(AnyString.init) } + public var value: String { + get { _value.value } + set { _value = AnyString.init(newValue) } } + private var _content_type: AnyString? /** - * Boolean to determine if the custom url should be used + * 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. */ - public var show_custom_url: Bool? + public var content_type: String? { + get { _content_type?.value } + set { _content_type = newValue.map(AnyString.init) } + } - private var _custom_title: AnyString? + private var _version: AnyInt? /** - * An optional, user-defined title for the alert + * Version number of the stored value. The version must be provided for any updates to an existing artifact. (read-only) */ - public var custom_title: String? { - get { _custom_title?.value } - set { _custom_title = newValue.map(AnyString.init) } + public var version: Int64? { + get { _version?.value } + set { _version = newValue.map(AnyInt.init) } } - public init(id: Int64? = nil, lookml_dashboard_id: String? = nil, lookml_link_id: String? = nil, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, custom_title: String? = nil) { - self._id = id.map(AnyInt.init) - self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) - self._lookml_link_id = lookml_link_id.map(AnyString.init) - 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) - self.show_custom_url = show_custom_url - self._custom_title = custom_title.map(AnyString.init) + private var _namespace: AnyString + /** + * Artifact storage namespace. (read-only) + */ + public var namespace: String { + get { _namespace.value } + set { _namespace = AnyString.init(newValue) } } -} + /** + * Timestamp when this artifact was created. (read-only) + */ + public var created_at: Date -public struct ContentValidationDashboard: SDKModel { + /** + * Timestamp when this artifact was updated. (read-only) + */ + public var updated_at: Date - private enum CodingKeys : String, CodingKey { - case _description = "description" - case _id = "id" - case folder - case _title = "title" - case space - } - private var _description: AnyString? + private var _value_size: AnyInt /** - * Description + * Size (in bytes) of the stored value. (read-only) */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + public var value_size: Int64 { + get { _value_size.value } + set { _value_size = AnyInt.init(newValue) } } - private var _id: AnyString? + private var _created_by_userid: AnyString /** - * Unique Id (read-only) + * User id of the artifact creator. (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var created_by_userid: String { + get { _created_by_userid.value } + set { _created_by_userid = AnyString.init(newValue) } } - public var folder: ContentValidationFolder? - - private var _title: AnyString? + private var _updated_by_userid: AnyString /** - * Dashboard Title + * User id of the artifact updater. (read-only) */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var updated_by_userid: String { + get { _updated_by_userid.value } + set { _updated_by_userid = AnyString.init(newValue) } } - public var space: ContentValidationSpace? + public init(key: String, value: String, content_type: String? = nil, version: Int64? = nil, namespace: String, created_at: Date, updated_at: Date, value_size: Int64, created_by_userid: String, updated_by_userid: String) { + self._key = AnyString.init(key) + self._value = AnyString.init(value) + self._content_type = content_type.map(AnyString.init) + self._version = version.map(AnyInt.init) + self._namespace = AnyString.init(namespace) + self.created_at = created_at + self.updated_at = updated_at + self._value_size = AnyInt.init(value_size) + self._created_by_userid = AnyString.init(created_by_userid) + self._updated_by_userid = AnyString.init(updated_by_userid) + } - public init(description: String? = nil, id: String? = nil, folder: ContentValidationFolder? = nil, title: String? = nil, space: ContentValidationSpace? = nil) { - self._description = description.map(AnyString.init) - self._id = id.map(AnyString.init) - self.folder = folder - self._title = title.map(AnyString.init) - self.space = space + public init(_ key: String, _ value: String, content_type: String? = nil, version: Int64? = nil, _ namespace: String, _ created_at: Date, _ updated_at: Date, _ value_size: Int64, _ created_by_userid: String, _ updated_by_userid: String) { + self.init(key: key, value: value, content_type: content_type, version: version, namespace: namespace, created_at: created_at, updated_at: updated_at, value_size: value_size, created_by_userid: created_by_userid, updated_by_userid: updated_by_userid) } } -public struct ContentValidationDashboardElement: SDKModel { +public struct ArtifactNamespace: SDKModel { private enum CodingKeys : String, CodingKey { - case _body_text = "body_text" - case _dashboard_id = "dashboard_id" - case _id = "id" - case _look_id = "look_id" - case _note_display = "note_display" - case _note_state = "note_state" - case _note_text = "note_text" - case _note_text_as_html = "note_text_as_html" - case _query_id = "query_id" - case _subtitle_text = "subtitle_text" - case _title = "title" - case title_hidden - case _title_text = "title_text" - case _type = "type" - case _rich_content_json = "rich_content_json" + case _namespace = "namespace" + case _count = "count" } - private var _body_text: AnyString? + private var _namespace: AnyString /** - * Text tile body text + * Artifact storage namespace. (read-only) */ - public var body_text: String? { - get { _body_text?.value } - set { _body_text = newValue.map(AnyString.init) } + public var namespace: String { + get { _namespace.value } + set { _namespace = AnyString.init(newValue) } } - private var _dashboard_id: AnyString? + private var _count: AnyInt /** - * Id of Dashboard + * The number of artifacts stored in the namespace. (read-only) */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + public var count: Int64 { + get { _count.value } + set { _count = AnyInt.init(newValue) } } - private var _id: AnyString? - /** - * Unique Id (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public init(namespace: String, count: Int64) { + self._namespace = AnyString.init(namespace) + self._count = AnyInt.init(count) } - private var _look_id: AnyString? - /** - * Id Of Look - */ - public var look_id: String? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } + public init(_ namespace: String, _ count: Int64) { + self.init(namespace: namespace, count: count) } - private var _note_display: AnyString? +} + +public struct ArtifactUsage: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _max_size = "max_size" + case _usage = "usage" + } + private var _max_size: AnyInt /** - * Note Display + * The configured maximum size in bytes of the entire artifact store. (read-only) */ - public var note_display: String? { - get { _note_display?.value } - set { _note_display = newValue.map(AnyString.init) } + public var max_size: Int64 { + get { _max_size.value } + set { _max_size = AnyInt.init(newValue) } } - private var _note_state: AnyString? + private var _usage: AnyInt /** - * Note State + * The currently used storage size in bytes of the entire artifact store. (read-only) */ - public var note_state: String? { - get { _note_state?.value } - set { _note_state = newValue.map(AnyString.init) } + public var usage: Int64 { + get { _usage.value } + set { _usage = AnyInt.init(newValue) } } - private var _note_text: AnyString? - /** - * Note Text - */ - public var note_text: String? { - get { _note_text?.value } - set { _note_text = newValue.map(AnyString.init) } + public init(max_size: Int64, usage: Int64) { + self._max_size = AnyInt.init(max_size) + self._usage = AnyInt.init(usage) } - private var _note_text_as_html: AnyString? - /** - * Note Text as Html (read-only) - */ - public var note_text_as_html: String? { - get { _note_text_as_html?.value } - set { _note_text_as_html = newValue.map(AnyString.init) } + public init(_ max_size: Int64, _ usage: Int64) { + self.init(max_size: max_size, usage: usage) } - private var _query_id: AnyInt? +} + +public struct BackupConfiguration: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _type = "type" + case _custom_s3_bucket = "custom_s3_bucket" + case _custom_s3_bucket_region = "custom_s3_bucket_region" + case _custom_s3_key = "custom_s3_key" + case _custom_s3_secret = "custom_s3_secret" + case _url = "url" + } /** - * Id Of Query + * Operations the current user is able to perform on this object (read-only) */ - public var query_id: Int64? { - get { _query_id?.value } - set { _query_id = newValue.map(AnyInt.init) } - } + public var can: StringDictionary? - private var _subtitle_text: AnyString? + private var _type: AnyString? /** - * Text tile subtitle text + * Type of backup: looker-s3 or custom-s3 */ - public var subtitle_text: String? { - get { _subtitle_text?.value } - set { _subtitle_text = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - private var _title: AnyString? + private var _custom_s3_bucket: AnyString? /** - * Title of dashboard element + * Name of bucket for custom-s3 backups */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var custom_s3_bucket: String? { + get { _custom_s3_bucket?.value } + set { _custom_s3_bucket = newValue.map(AnyString.init) } } + private var _custom_s3_bucket_region: AnyString? /** - * Whether title is hidden + * Name of region where the bucket is located */ - public var title_hidden: Bool? + public var custom_s3_bucket_region: String? { + get { _custom_s3_bucket_region?.value } + set { _custom_s3_bucket_region = newValue.map(AnyString.init) } + } - private var _title_text: AnyString? + private var _custom_s3_key: AnyString? /** - * Text tile title + * (Write-Only) AWS S3 key used for custom-s3 backups */ - public var title_text: String? { - get { _title_text?.value } - set { _title_text = newValue.map(AnyString.init) } + public var custom_s3_key: String? { + get { _custom_s3_key?.value } + set { _custom_s3_key = newValue.map(AnyString.init) } } - private var _type: AnyString? + private var _custom_s3_secret: AnyString? /** - * Type + * (Write-Only) AWS S3 secret used for custom-s3 backups */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var custom_s3_secret: String? { + get { _custom_s3_secret?.value } + set { _custom_s3_secret = newValue.map(AnyString.init) } } - private var _rich_content_json: AnyString? + private var _url: AnyString? /** - * JSON with all the properties required for rich editor and buttons elements + * Link to get this item (read-only) */ - public var rich_content_json: String? { - get { _rich_content_json?.value } - set { _rich_content_json = newValue.map(AnyString.init) } + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } } - public init(body_text: String? = nil, dashboard_id: String? = nil, id: String? = nil, look_id: String? = nil, note_display: String? = nil, note_state: String? = nil, note_text: String? = nil, note_text_as_html: String? = nil, query_id: Int64? = nil, subtitle_text: String? = nil, title: String? = nil, title_hidden: Bool? = nil, title_text: String? = nil, type: String? = nil, rich_content_json: String? = nil) { - self._body_text = body_text.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._id = id.map(AnyString.init) - self._look_id = look_id.map(AnyString.init) - self._note_display = note_display.map(AnyString.init) - self._note_state = note_state.map(AnyString.init) - self._note_text = note_text.map(AnyString.init) - self._note_text_as_html = note_text_as_html.map(AnyString.init) - self._query_id = query_id.map(AnyInt.init) - self._subtitle_text = subtitle_text.map(AnyString.init) - self._title = title.map(AnyString.init) - self.title_hidden = title_hidden - self._title_text = title_text.map(AnyString.init) + public init(can: StringDictionary? = nil, type: String? = nil, custom_s3_bucket: String? = nil, custom_s3_bucket_region: String? = nil, custom_s3_key: String? = nil, custom_s3_secret: String? = nil, url: String? = nil) { + self.can = can self._type = type.map(AnyString.init) - self._rich_content_json = rich_content_json.map(AnyString.init) + self._custom_s3_bucket = custom_s3_bucket.map(AnyString.init) + self._custom_s3_bucket_region = custom_s3_bucket_region.map(AnyString.init) + self._custom_s3_key = custom_s3_key.map(AnyString.init) + self._custom_s3_secret = custom_s3_secret.map(AnyString.init) + self._url = url.map(AnyString.init) } } -public struct ContentValidationDashboardFilter: SDKModel { +public struct Board: SDKModel { private enum CodingKeys : String, CodingKey { + case can + case _content_metadata_id = "content_metadata_id" + case created_at + case deleted_at + case _description = "description" + case board_sections case _id = "id" - case _dashboard_id = "dashboard_id" - case _name = "name" + case _section_order = "section_order" case _title = "title" - case _type = "type" - case _default_value = "default_value" - case _model = "model" - case _explore = "explore" - case _dimension = "dimension" + case updated_at + case _user_id = "user_id" + case primary_homepage } - private var _id: AnyString? /** - * Unique Id (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _dashboard_id: AnyString? + private var _content_metadata_id: AnyString? /** - * Id of Dashboard (read-only) + * Id of associated content_metadata record (read-only) */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + public var content_metadata_id: String? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyString.init) } } - private var _name: AnyString? /** - * Name of filter + * Date of board creation (read-only) */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } + public var created_at: Date? - private var _title: AnyString? /** - * Title of filter + * Date of board deletion */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } - } + public var deleted_at: Date? - private var _type: AnyString? + private var _description: AnyString? /** - * Type of filter: one of date, number, string, or field + * Description of the board */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } } - private var _default_value: AnyString? /** - * Default value of filter + * Sections of the board (read-only) */ - public var default_value: String? { - get { _default_value?.value } - set { _default_value = newValue.map(AnyString.init) } - } + public var board_sections: [BoardSection]? - private var _model: AnyString? + private var _id: AnyString? /** - * Model of filter (required if type = field) + * Unique Id (read-only) */ - public var model: String? { - get { _model?.value } - set { _model = newValue.map(AnyString.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _explore: AnyString? + private var _section_order: [AnyString]? /** - * Explore of filter (required if type = field) + * ids of the board sections in the order they should be displayed */ - public var explore: String? { - get { _explore?.value } - set { _explore = newValue.map(AnyString.init) } + public var section_order: [String]? { + get { if let v = _section_order { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _section_order = v.map { AnyString.init($0) } } else { _section_order = nil } } } - private var _dimension: AnyString? + private var _title: AnyString? /** - * Dimension of filter (required if type = field) + * Title of the board */ - public var dimension: String? { - get { _dimension?.value } - set { _dimension = newValue.map(AnyString.init) } - } - - public init(id: String? = nil, dashboard_id: String? = nil, name: String? = nil, title: String? = nil, type: String? = nil, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil) { - self._id = id.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._name = name.map(AnyString.init) - self._title = title.map(AnyString.init) - self._type = type.map(AnyString.init) - self._default_value = default_value.map(AnyString.init) - self._model = model.map(AnyString.init) - self._explore = explore.map(AnyString.init) - self._dimension = dimension.map(AnyString.init) + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } -} - -public struct ContentValidationError: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _message = "message" - case _field_name = "field_name" - case _model_name = "model_name" - case _explore_name = "explore_name" - case removable - } - private var _message: AnyString? /** - * Error message (read-only) + * Date of last board update (read-only) */ - public var message: String? { - get { _message?.value } - set { _message = newValue.map(AnyString.init) } - } + public var updated_at: Date? - private var _field_name: AnyString? + private var _user_id: AnyString? /** - * Name of the field involved in the error (read-only) + * User id of board creator (read-only) */ - public var field_name: String? { - get { _field_name?.value } - set { _field_name = newValue.map(AnyString.init) } + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } } - private var _model_name: AnyString? /** - * Name of the model involved in the error (read-only) + * Whether the board is the primary homepage or not (read-only) */ - public var model_name: String? { - get { _model_name?.value } - set { _model_name = newValue.map(AnyString.init) } - } + public var primary_homepage: Bool? - private var _explore_name: AnyString? - /** - * Name of the explore involved in the error (read-only) - */ - public var explore_name: String? { - get { _explore_name?.value } - set { _explore_name = newValue.map(AnyString.init) } - } - - /** - * Whether this validation error is removable (read-only) - */ - public var removable: Bool? - - public init(message: String? = nil, field_name: String? = nil, model_name: String? = nil, explore_name: String? = nil, removable: Bool? = nil) { - self._message = message.map(AnyString.init) - self._field_name = field_name.map(AnyString.init) - self._model_name = model_name.map(AnyString.init) - self._explore_name = explore_name.map(AnyString.init) - self.removable = removable + public init(can: StringDictionary? = nil, content_metadata_id: String? = nil, created_at: Date? = nil, deleted_at: Date? = nil, description: String? = nil, board_sections: [BoardSection]? = nil, id: String? = nil, section_order: [String]? = nil, title: String? = nil, updated_at: Date? = nil, user_id: String? = nil, primary_homepage: Bool? = nil) { + self.can = can + self._content_metadata_id = content_metadata_id.map(AnyString.init) + self.created_at = created_at + self.deleted_at = deleted_at + self._description = description.map(AnyString.init) + self.board_sections = board_sections + self._id = id.map(AnyString.init) + if let v = section_order { _section_order = v.map { AnyString.init($0) } } else { _section_order = nil } + self._title = title.map(AnyString.init) + self.updated_at = updated_at + self._user_id = user_id.map(AnyString.init) + self.primary_homepage = primary_homepage } } -public struct ContentValidationFolder: SDKModel { +public struct BoardItem: SDKModel { private enum CodingKeys : String, CodingKey { - case _name = "name" + case can + case _content_created_by = "content_created_by" + case _content_favorite_id = "content_favorite_id" + case _content_metadata_id = "content_metadata_id" + case _content_updated_at = "content_updated_at" + case _custom_description = "custom_description" + case _custom_title = "custom_title" + case _custom_url = "custom_url" + case _dashboard_id = "dashboard_id" + case _description = "description" + case _favorite_count = "favorite_count" + case _board_section_id = "board_section_id" case _id = "id" + case _image_url = "image_url" + case _location = "location" + case _look_id = "look_id" + case _lookml_dashboard_id = "lookml_dashboard_id" + case _order = "order" + case _title = "title" + case _url = "url" + case use_custom_description + case use_custom_title + case use_custom_url + case _view_count = "view_count" + case _custom_image_data_base64 = "custom_image_data_base64" + case _custom_image_url = "custom_image_url" + case use_custom_image } - private var _name: AnyString /** - * Unique Name + * Operations the current user is able to perform on this object (read-only) */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } - } + public var can: StringDictionary? - private var _id: AnyString? + private var _content_created_by: AnyString? /** - * Unique Id (read-only) + * Name of user who created the content this item is based on (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var content_created_by: String? { + get { _content_created_by?.value } + set { _content_created_by = newValue.map(AnyString.init) } } - public init(name: String, id: String? = nil) { - self._name = AnyString.init(name) - self._id = id.map(AnyString.init) + private var _content_favorite_id: AnyString? + /** + * Content favorite id associated with the item this content is based on (read-only) + */ + public var content_favorite_id: String? { + get { _content_favorite_id?.value } + set { _content_favorite_id = newValue.map(AnyString.init) } } - public init(_ name: String, id: String? = nil) { - self.init(name: name, id: id) + private var _content_metadata_id: AnyString? + /** + * Content metadata id associated with the item this content is based on (read-only) + */ + public var content_metadata_id: String? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyString.init) } } -} - -public struct ContentValidationLook: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _id = "id" - case _title = "title" - case _short_url = "short_url" - case folder - case space - } - private var _id: AnyInt? + private var _content_updated_at: AnyString? /** - * Unique Id (read-only) + * Last time the content that this item is based on was updated (read-only) */ - public var id: Int64? { - get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + public var content_updated_at: String? { + get { _content_updated_at?.value } + set { _content_updated_at = newValue.map(AnyString.init) } } - private var _title: AnyString? + private var _custom_description: AnyString? /** - * Look Title + * Custom description entered by the user, if present */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var custom_description: String? { + get { _custom_description?.value } + set { _custom_description = newValue.map(AnyString.init) } } - private var _short_url: AnyString? + private var _custom_title: AnyString? /** - * Short Url (read-only) + * Custom title entered by the user, if present */ - public var short_url: String? { - get { _short_url?.value } - set { _short_url = newValue.map(AnyString.init) } + public var custom_title: String? { + get { _custom_title?.value } + set { _custom_title = newValue.map(AnyString.init) } } - public var folder: ContentValidationFolder? - - public var space: ContentValidationSpace? + private var _custom_url: AnyString? + /** + * Custom url entered by the user, if present + */ + public var custom_url: String? { + get { _custom_url?.value } + set { _custom_url = newValue.map(AnyString.init) } + } - public init(id: Int64? = nil, title: String? = nil, short_url: String? = nil, folder: ContentValidationFolder? = nil, space: ContentValidationSpace? = nil) { - self._id = id.map(AnyInt.init) - self._title = title.map(AnyString.init) - self._short_url = short_url.map(AnyString.init) - self.folder = folder - self.space = space + private var _dashboard_id: AnyString? + /** + * Dashboard to base this item on + */ + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } -} + private var _description: AnyString? + /** + * The actual description for display (read-only) + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } -public struct ContentValidationLookMLDashboard: SDKModel { + private var _favorite_count: AnyInt? + /** + * Number of times content has been favorited, if present (read-only) + */ + public var favorite_count: Int64? { + get { _favorite_count?.value } + set { _favorite_count = newValue.map(AnyInt.init) } + } - private enum CodingKeys : String, CodingKey { - case _id = "id" - case _title = "title" - case _space_id = "space_id" - case space + private var _board_section_id: AnyString? + /** + * Associated Board Section + */ + public var board_section_id: String? { + get { _board_section_id?.value } + set { _board_section_id = newValue.map(AnyString.init) } } + private var _id: AnyString? /** - * ID of the LookML Dashboard (read-only) + * Unique Id (read-only) */ public var id: String? { get { _id?.value } set { _id = newValue.map(AnyString.init) } } - private var _title: AnyString? + private var _image_url: AnyString? /** - * Title of the LookML Dashboard (read-only) + * The actual image_url for display (read-only) */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var image_url: String? { + get { _image_url?.value } + set { _image_url = newValue.map(AnyString.init) } } - private var _space_id: AnyString? + private var _location: AnyString? /** - * ID of Space (read-only) + * The container folder name of the content (read-only) */ - public var space_id: String? { - get { _space_id?.value } - set { _space_id = newValue.map(AnyString.init) } + public var location: String? { + get { _location?.value } + set { _location = newValue.map(AnyString.init) } } - public var space: SpaceBase? - - public init(id: String? = nil, title: String? = nil, space_id: String? = nil, space: SpaceBase? = nil) { - self._id = id.map(AnyString.init) - self._title = title.map(AnyString.init) - self._space_id = space_id.map(AnyString.init) - self.space = space + private var _look_id: AnyString? + /** + * Look to base this item on + */ + public var look_id: String? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyString.init) } } -} - -public struct ContentValidationLookMLDashboardElement: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _lookml_link_id = "lookml_link_id" - case _title = "title" + private var _lookml_dashboard_id: AnyString? + /** + * LookML Dashboard to base this item on + */ + public var lookml_dashboard_id: String? { + get { _lookml_dashboard_id?.value } + set { _lookml_dashboard_id = newValue.map(AnyString.init) } } - private var _lookml_link_id: AnyString? + + private var _order: AnyInt? /** - * Link ID of the LookML Dashboard Element (read-only) + * An arbitrary integer representing the sort order within the section */ - public var lookml_link_id: String? { - get { _lookml_link_id?.value } - set { _lookml_link_id = newValue.map(AnyString.init) } + public var order: Int64? { + get { _order?.value } + set { _order = newValue.map(AnyInt.init) } } private var _title: AnyString? /** - * Title of the LookML Dashboard Element (read-only) + * The actual title for display (read-only) */ public var title: String? { get { _title?.value } set { _title = newValue.map(AnyString.init) } } - public init(lookml_link_id: String? = nil, title: String? = nil) { - self._lookml_link_id = lookml_link_id.map(AnyString.init) - self._title = title.map(AnyString.init) + private var _url: AnyString? + /** + * Relative url for the associated content (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } } -} - -public struct ContentValidationScheduledPlan: SDKModel { + /** + * Whether the custom description should be used instead of the content description, if the item is associated with content + */ + public var use_custom_description: Bool? - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _look_id = "look_id" - case _id = "id" - } - private var _name: AnyString? /** - * Name of this scheduled plan + * Whether the custom title should be used instead of the content title, if the item is associated with content */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } + public var use_custom_title: Bool? - private var _look_id: AnyInt? /** - * Id of a look + * Whether the custom url should be used instead of the content url, if the item is associated with content */ - public var look_id: Int64? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyInt.init) } - } + public var use_custom_url: Bool? - private var _id: AnyInt? + private var _view_count: AnyInt? /** - * Unique Id (read-only) + * Number of times content has been viewed, if present (read-only) */ - public var id: Int64? { - get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + public var view_count: Int64? { + get { _view_count?.value } + set { _view_count = newValue.map(AnyInt.init) } } - public init(name: String? = nil, look_id: Int64? = nil, id: Int64? = nil) { - self._name = name.map(AnyString.init) - self._look_id = look_id.map(AnyInt.init) - self._id = id.map(AnyInt.init) - } - -} - -public struct ContentValidationSpace: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _id = "id" - } - private var _name: AnyString + private var _custom_image_data_base64: AnyString? /** - * Unique Name + * (Write-Only) base64 encoded image data */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } + public var custom_image_data_base64: String? { + get { _custom_image_data_base64?.value } + set { _custom_image_data_base64 = newValue.map(AnyString.init) } } - private var _id: AnyString? + private var _custom_image_url: AnyString? /** - * Unique Id (read-only) + * Custom image_url entered by the user, if present (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - public init(name: String, id: String? = nil) { - self._name = AnyString.init(name) - self._id = id.map(AnyString.init) - } - - public init(_ name: String, id: String? = nil) { - self.init(name: name, id: id) - } - -} - -public struct ContentValidatorError: SDKModel { - - private enum CodingKeys : String, CodingKey { - case look - case dashboard - case dashboard_element - case dashboard_filter - case scheduled_plan - case alert - case lookml_dashboard - case lookml_dashboard_element - case errors - case _id = "id" + public var custom_image_url: String? { + get { _custom_image_url?.value } + set { _custom_image_url = newValue.map(AnyString.init) } } - public var look: ContentValidationLook? - - public var dashboard: ContentValidationDashboard? - - public var dashboard_element: ContentValidationDashboardElement? - - public var dashboard_filter: ContentValidationDashboardFilter? - - public var scheduled_plan: ContentValidationScheduledPlan? - - public var alert: ContentValidationAlert? - - public var lookml_dashboard: ContentValidationLookMLDashboard? - - public var lookml_dashboard_element: ContentValidationLookMLDashboardElement? - - /** - * A list of errors found for this piece of content (read-only) - */ - public var errors: [ContentValidationError]? - private var _id: AnyString? /** - * An id unique to this piece of content for this validation run (read-only) + * Whether the custom image should be used instead of the content image, if the item is associated with content */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } + public var use_custom_image: Bool? - public init(look: ContentValidationLook? = nil, dashboard: ContentValidationDashboard? = nil, dashboard_element: ContentValidationDashboardElement? = nil, dashboard_filter: ContentValidationDashboardFilter? = nil, scheduled_plan: ContentValidationScheduledPlan? = nil, alert: ContentValidationAlert? = nil, lookml_dashboard: ContentValidationLookMLDashboard? = nil, lookml_dashboard_element: ContentValidationLookMLDashboardElement? = nil, errors: [ContentValidationError]? = nil, id: String? = nil) { - self.look = look - self.dashboard = dashboard - self.dashboard_element = dashboard_element - self.dashboard_filter = dashboard_filter - self.scheduled_plan = scheduled_plan - self.alert = alert - self.lookml_dashboard = lookml_dashboard - self.lookml_dashboard_element = lookml_dashboard_element - self.errors = errors + public init(can: StringDictionary? = nil, content_created_by: String? = nil, content_favorite_id: String? = nil, content_metadata_id: String? = nil, content_updated_at: String? = nil, custom_description: String? = nil, custom_title: String? = nil, custom_url: String? = nil, dashboard_id: String? = nil, description: String? = nil, favorite_count: Int64? = nil, board_section_id: String? = nil, id: String? = nil, image_url: String? = nil, location: String? = nil, look_id: String? = nil, lookml_dashboard_id: String? = nil, order: Int64? = nil, title: String? = nil, url: String? = nil, use_custom_description: Bool? = nil, use_custom_title: Bool? = nil, use_custom_url: Bool? = nil, view_count: Int64? = nil, custom_image_data_base64: String? = nil, custom_image_url: String? = nil, use_custom_image: Bool? = nil) { + self.can = can + self._content_created_by = content_created_by.map(AnyString.init) + self._content_favorite_id = content_favorite_id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) + self._content_updated_at = content_updated_at.map(AnyString.init) + self._custom_description = custom_description.map(AnyString.init) + self._custom_title = custom_title.map(AnyString.init) + self._custom_url = custom_url.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self._description = description.map(AnyString.init) + self._favorite_count = favorite_count.map(AnyInt.init) + self._board_section_id = board_section_id.map(AnyString.init) self._id = id.map(AnyString.init) + self._image_url = image_url.map(AnyString.init) + self._location = location.map(AnyString.init) + self._look_id = look_id.map(AnyString.init) + self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) + self._order = order.map(AnyInt.init) + self._title = title.map(AnyString.init) + self._url = url.map(AnyString.init) + self.use_custom_description = use_custom_description + self.use_custom_title = use_custom_title + self.use_custom_url = use_custom_url + self._view_count = view_count.map(AnyInt.init) + self._custom_image_data_base64 = custom_image_data_base64.map(AnyString.init) + self._custom_image_url = custom_image_url.map(AnyString.init) + self.use_custom_image = use_custom_image } } -public struct ContentView: SDKModel { +public struct BoardSection: SDKModel { private enum CodingKeys : String, CodingKey { case can + case created_at + case deleted_at + case _description = "description" + case _board_id = "board_id" + case board_items case _id = "id" - case _look_id = "look_id" - case _dashboard_id = "dashboard_id" + case _item_order = "item_order" + case _visible_item_order = "visible_item_order" case _title = "title" - case _content_metadata_id = "content_metadata_id" - case _user_id = "user_id" - case _group_id = "group_id" - case _view_count = "view_count" - case _favorite_count = "favorite_count" - case _last_viewed_at = "last_viewed_at" - case _start_of_week_date = "start_of_week_date" + case updated_at } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _id: AnyInt? - /** - * Unique Id (read-only) - */ - public var id: Int64? { - get { _id?.value } - set { _id = newValue.map(AnyInt.init) } - } - - private var _look_id: AnyInt? /** - * Id of viewed Look (read-only) + * Time at which this section was created. (read-only) */ - public var look_id: Int64? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyInt.init) } - } + public var created_at: Date? - private var _dashboard_id: AnyInt? /** - * Id of the viewed Dashboard (read-only) + * Time at which this section was deleted. */ - public var dashboard_id: Int64? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyInt.init) } - } + public var deleted_at: Date? - private var _title: AnyString? + private var _description: AnyString? /** - * Name or title of underlying content (read-only) + * Description of the content found in this section. */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } } - private var _content_metadata_id: AnyInt? + private var _board_id: AnyString? /** - * Content metadata id of the Look or Dashboard (read-only) + * Id reference to parent board */ - public var content_metadata_id: Int64? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } + public var board_id: String? { + get { _board_id?.value } + set { _board_id = newValue.map(AnyString.init) } } - private var _user_id: AnyInt? /** - * Id of user content was viewed by (read-only) + * Items in the board section (read-only) */ - public var user_id: Int64? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } - } + public var board_items: [BoardItem]? - private var _group_id: AnyInt? + private var _id: AnyString? /** - * Id of group content was viewed by (read-only) + * Unique Id (read-only) */ - public var group_id: Int64? { - get { _group_id?.value } - set { _group_id = newValue.map(AnyInt.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _view_count: AnyInt? + private var _item_order: [AnyString]? /** - * Number of times piece of content was viewed (read-only) + * ids of the board items in the order they should be displayed */ - public var view_count: Int64? { - get { _view_count?.value } - set { _view_count = newValue.map(AnyInt.init) } + public var item_order: [String]? { + get { if let v = _item_order { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _item_order = v.map { AnyString.init($0) } } else { _item_order = nil } } } - private var _favorite_count: AnyInt? + private var _visible_item_order: [AnyString]? /** - * Number of times piece of content was favorited (read-only) + * ids of the homepage items the user can see in the order they should be displayed (read-only) */ - public var favorite_count: Int64? { - get { _favorite_count?.value } - set { _favorite_count = newValue.map(AnyInt.init) } + public var visible_item_order: [String]? { + get { if let v = _visible_item_order { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _visible_item_order = v.map { AnyString.init($0) } } else { _visible_item_order = nil } } } - private var _last_viewed_at: AnyString? + private var _title: AnyString? /** - * Date the piece of content was last viewed (read-only) + * Name of row */ - public var last_viewed_at: String? { - get { _last_viewed_at?.value } - set { _last_viewed_at = newValue.map(AnyString.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } - private var _start_of_week_date: AnyString? /** - * Week start date for the view and favorite count during that given week (read-only) + * Time at which this section was last updated. (read-only) */ - public var start_of_week_date: String? { - get { _start_of_week_date?.value } - set { _start_of_week_date = newValue.map(AnyString.init) } - } + public var updated_at: Date? - public init(can: StringDictionary? = nil, id: Int64? = nil, look_id: Int64? = nil, dashboard_id: Int64? = nil, title: String? = nil, content_metadata_id: Int64? = nil, user_id: Int64? = nil, group_id: Int64? = nil, view_count: Int64? = nil, favorite_count: Int64? = nil, last_viewed_at: String? = nil, start_of_week_date: String? = nil) { + public init(can: StringDictionary? = nil, created_at: Date? = nil, deleted_at: Date? = nil, description: String? = nil, board_id: String? = nil, board_items: [BoardItem]? = nil, id: String? = nil, item_order: [String]? = nil, visible_item_order: [String]? = nil, title: String? = nil, updated_at: Date? = nil) { self.can = can - self._id = id.map(AnyInt.init) - self._look_id = look_id.map(AnyInt.init) - self._dashboard_id = dashboard_id.map(AnyInt.init) + self.created_at = created_at + self.deleted_at = deleted_at + self._description = description.map(AnyString.init) + self._board_id = board_id.map(AnyString.init) + self.board_items = board_items + self._id = id.map(AnyString.init) + if let v = item_order { _item_order = v.map { AnyString.init($0) } } else { _item_order = nil } + if let v = visible_item_order { _visible_item_order = v.map { AnyString.init($0) } } else { _visible_item_order = nil } self._title = title.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyInt.init) - self._user_id = user_id.map(AnyInt.init) - self._group_id = group_id.map(AnyInt.init) - self._view_count = view_count.map(AnyInt.init) - self._favorite_count = favorite_count.map(AnyInt.init) - self._last_viewed_at = last_viewed_at.map(AnyString.init) - self._start_of_week_date = start_of_week_date.map(AnyString.init) + self.updated_at = updated_at } } -public struct ContinuousPalette: SDKModel { +/** + * Field category Valid values are: "parameter", "filter", "measure", "dimension". (Enum defined in LookmlModelExploreField) + */ +public enum Category: String, Codable { + case parameter = "parameter" + case filter = "filter" + case measure = "measure" + case dimension = "dimension" +} + +public struct ColorCollection: SDKModel { private enum CodingKeys : String, CodingKey { case _id = "id" case _label = "label" - case _type = "type" - case stops + case categoricalPalettes + case sequentialPalettes + case divergingPalettes } private var _id: AnyString? /** - * Unique identity string (read-only) + * Unique Id (read-only) */ public var id: String? { get { _id?.value } @@ -1693,1334 +1659,1271 @@ public struct ContinuousPalette: SDKModel { private var _label: AnyString? /** - * Label for palette + * Label of color collection */ public var label: String? { get { _label?.value } set { _label = newValue.map(AnyString.init) } } - private var _type: AnyString? /** - * Type of palette + * Array of categorical palette definitions */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } + public var categoricalPalettes: [DiscretePalette]? /** - * Array of ColorStops in the palette + * Array of discrete palette definitions */ - public var stops: [ColorStop]? + public var sequentialPalettes: [ContinuousPalette]? - public init(id: String? = nil, label: String? = nil, type: String? = nil, stops: [ColorStop]? = nil) { + /** + * Array of diverging palette definitions + */ + public var divergingPalettes: [ContinuousPalette]? + + public init(id: String? = nil, label: String? = nil, categoricalPalettes: [DiscretePalette]? = nil, sequentialPalettes: [ContinuousPalette]? = nil, divergingPalettes: [ContinuousPalette]? = nil) { self._id = id.map(AnyString.init) self._label = label.map(AnyString.init) - self._type = type.map(AnyString.init) - self.stops = stops + self.categoricalPalettes = categoricalPalettes + self.sequentialPalettes = sequentialPalettes + self.divergingPalettes = divergingPalettes } } -public struct CreateDashboardFilter: SDKModel { +public struct ColorStop: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" - case _dashboard_id = "dashboard_id" - case _name = "name" - case _title = "title" - case _type = "type" - case _default_value = "default_value" - case _model = "model" - case _explore = "explore" - case _dimension = "dimension" - case field - case _row = "row" - case _listens_to_filters = "listens_to_filters" - case allow_multiple_values - case required - case ui_config + case _color = "color" + case _offset = "offset" } - private var _id: AnyString? + private var _color: AnyString? /** - * Unique Id (read-only) + * CSS color string */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var color: String? { + get { _color?.value } + set { _color = newValue.map(AnyString.init) } } - private var _dashboard_id: AnyString + private var _offset: AnyInt? /** - * Id of Dashboard + * Offset in continuous palette (0 to 100) */ - public var dashboard_id: String { - get { _dashboard_id.value } - set { _dashboard_id = AnyString.init(newValue) } + public var offset: Int64? { + get { _offset?.value } + set { _offset = newValue.map(AnyInt.init) } } - private var _name: AnyString - /** - * Name of filter - */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } + public init(color: String? = nil, offset: Int64? = nil) { + self._color = color.map(AnyString.init) + self._offset = offset.map(AnyInt.init) } - private var _title: AnyString +} + +public struct ColumnSearch: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _schema_name = "schema_name" + case _table_name = "table_name" + case _column_name = "column_name" + case _data_type = "data_type" + } + private var _schema_name: AnyString? /** - * Title of filter + * Name of schema containing the table (read-only) */ - public var title: String { - get { _title.value } - set { _title = AnyString.init(newValue) } + public var schema_name: String? { + get { _schema_name?.value } + set { _schema_name = newValue.map(AnyString.init) } } - private var _type: AnyString + private var _table_name: AnyString? /** - * Type of filter: one of date, number, string, or field + * Name of table containing the column (read-only) */ - public var type: String { - get { _type.value } - set { _type = AnyString.init(newValue) } + public var table_name: String? { + get { _table_name?.value } + set { _table_name = newValue.map(AnyString.init) } } - private var _default_value: AnyString? + private var _column_name: AnyString? /** - * Default value of filter + * Name of column (read-only) */ - public var default_value: String? { - get { _default_value?.value } - set { _default_value = newValue.map(AnyString.init) } + public var column_name: String? { + get { _column_name?.value } + set { _column_name = newValue.map(AnyString.init) } } - private var _model: AnyString? + private var _data_type: AnyString? /** - * Model of filter (required if type = field) + * Column data type (read-only) */ - public var model: String? { - get { _model?.value } - set { _model = newValue.map(AnyString.init) } + public var data_type: String? { + get { _data_type?.value } + set { _data_type = newValue.map(AnyString.init) } } - private var _explore: AnyString? - /** - * Explore of filter (required if type = field) - */ - public var explore: String? { - get { _explore?.value } - set { _explore = newValue.map(AnyString.init) } + public init(schema_name: String? = nil, table_name: String? = nil, column_name: String? = nil, data_type: String? = nil) { + self._schema_name = schema_name.map(AnyString.init) + self._table_name = table_name.map(AnyString.init) + self._column_name = column_name.map(AnyString.init) + self._data_type = data_type.map(AnyString.init) } - private var _dimension: AnyString? +} + +/** + * 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://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) + */ +public enum ComparisonType: String, Codable { + case EQUAL_TO = "EQUAL_TO" + case GREATER_THAN = "GREATER_THAN" + case GREATER_THAN_OR_EQUAL_TO = "GREATER_THAN_OR_EQUAL_TO" + case LESS_THAN = "LESS_THAN" + case LESS_THAN_OR_EQUAL_TO = "LESS_THAN_OR_EQUAL_TO" + case INCREASES_BY = "INCREASES_BY" + case DECREASES_BY = "DECREASES_BY" + case CHANGES_BY = "CHANGES_BY" +} + +public struct ConnectionFeatures: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _dialect_name = "dialect_name" + case cost_estimate + case multiple_databases + case column_search + case persistent_table_indexes + case persistent_derived_tables + case turtles + case percentile + case distinct_percentile + case stable_views + case milliseconds + case microseconds + case subtotals + case location + case timezone + case connection_pooling + } + private var _dialect_name: AnyString? /** - * Dimension of filter (required if type = field) + * Name of the dialect for this connection (read-only) */ - public var dimension: String? { - get { _dimension?.value } - set { _dimension = newValue.map(AnyString.init) } + public var dialect_name: String? { + get { _dialect_name?.value } + set { _dialect_name = newValue.map(AnyString.init) } } /** - * Field information (read-only) + * True for cost estimating support (read-only) */ - public var field: StringDictionary? + public var cost_estimate: Bool? - private var _row: AnyInt? /** - * Display order of this filter relative to other filters + * True for multiple database support (read-only) */ - public var row: Int64? { - get { _row?.value } - set { _row = newValue.map(AnyInt.init) } - } + public var multiple_databases: Bool? - private var _listens_to_filters: [AnyString]? /** - * Array of listeners for faceted filters + * True for cost estimating support (read-only) */ - public var listens_to_filters: [String]? { - get { if let v = _listens_to_filters { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } } - } + public var column_search: Bool? /** - * Whether the filter allows multiple filter values (deprecated in the latest version of dashboards) + * True for secondary index support (read-only) */ - public var allow_multiple_values: Bool? + public var persistent_table_indexes: Bool? /** - * Whether the filter requires a value to run the dashboard + * True for persistent derived table support (read-only) */ - public var required: Bool? + public var persistent_derived_tables: Bool? /** - * The visual configuration for this filter. Used to set up how the UI for this filter should appear. + * True for turtles support (read-only) */ - public var ui_config: StringDictionary? - - public init(id: String? = nil, dashboard_id: String, name: String, title: String, type: String, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil, field: StringDictionary? = nil, row: Int64? = nil, listens_to_filters: [String]? = nil, allow_multiple_values: Bool? = nil, required: Bool? = nil, ui_config: StringDictionary? = nil) { - self._id = id.map(AnyString.init) - self._dashboard_id = AnyString.init(dashboard_id) - self._name = AnyString.init(name) - self._title = AnyString.init(title) - self._type = AnyString.init(type) - self._default_value = default_value.map(AnyString.init) - self._model = model.map(AnyString.init) - self._explore = explore.map(AnyString.init) - self._dimension = dimension.map(AnyString.init) - self.field = field - self._row = row.map(AnyInt.init) - if let v = listens_to_filters { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } - self.allow_multiple_values = allow_multiple_values - self.required = required - self.ui_config = ui_config - } + public var turtles: Bool? - public init(id: String? = nil, _ dashboard_id: String, _ name: String, _ title: String, _ type: String, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil, field: StringDictionary? = nil, row: Int64? = nil, listens_to_filters: [String]? = nil, allow_multiple_values: Bool? = nil, required: Bool? = nil, ui_config: StringDictionary? = nil) { - self.init(id: id, dashboard_id: dashboard_id, name: name, title: title, type: type, default_value: default_value, model: model, explore: explore, dimension: dimension, field: field, row: row, listens_to_filters: listens_to_filters, allow_multiple_values: allow_multiple_values, required: required, ui_config: ui_config) - } - -} - -public struct CreateDashboardRenderTask: SDKModel { + /** + * True for percentile support (read-only) + */ + public var percentile: Bool? - private enum CodingKeys : String, CodingKey { - case _dashboard_filters = "dashboard_filters" - case _dashboard_style = "dashboard_style" - } - private var _dashboard_filters: AnyString? /** - * Filter values to apply to the dashboard queries, in URL query format + * True for distinct percentile support (read-only) */ - public var dashboard_filters: String? { - get { _dashboard_filters?.value } - set { _dashboard_filters = newValue.map(AnyString.init) } - } + public var distinct_percentile: Bool? - private var _dashboard_style: AnyString? /** - * Dashboard layout style: single_column or tiled + * True for stable views support (read-only) */ - public var dashboard_style: String? { - get { _dashboard_style?.value } - set { _dashboard_style = newValue.map(AnyString.init) } - } + public var stable_views: Bool? - public init(dashboard_filters: String? = nil, dashboard_style: String? = nil) { - self._dashboard_filters = dashboard_filters.map(AnyString.init) - self._dashboard_style = dashboard_style.map(AnyString.init) - } + /** + * True for millisecond support (read-only) + */ + public var milliseconds: Bool? -} + /** + * True for microsecond support (read-only) + */ + public var microseconds: Bool? -public struct CreateFolder: SDKModel { + /** + * True for subtotal support (read-only) + */ + public var subtotals: Bool? - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _parent_id = "parent_id" - } - private var _name: AnyString /** - * Unique Name + * True for geographic location support (read-only) */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } - } + public var location: Bool? - private var _parent_id: AnyString /** - * Id of Parent. If the parent id is null, this is a root-level entry + * True for timezone conversion in query support (read-only) */ - public var parent_id: String { - get { _parent_id.value } - set { _parent_id = AnyString.init(newValue) } - } + public var timezone: Bool? - public init(name: String, parent_id: String) { - self._name = AnyString.init(name) - self._parent_id = AnyString.init(parent_id) - } + /** + * True for connection pooling support (read-only) + */ + public var connection_pooling: Bool? - public init(_ name: String, _ parent_id: String) { - self.init(name: name, parent_id: parent_id) + public init(dialect_name: String? = nil, cost_estimate: Bool? = nil, multiple_databases: Bool? = nil, column_search: Bool? = nil, persistent_table_indexes: Bool? = nil, persistent_derived_tables: Bool? = nil, turtles: Bool? = nil, percentile: Bool? = nil, distinct_percentile: Bool? = nil, stable_views: Bool? = nil, milliseconds: Bool? = nil, microseconds: Bool? = nil, subtotals: Bool? = nil, location: Bool? = nil, timezone: Bool? = nil, connection_pooling: Bool? = nil) { + self._dialect_name = dialect_name.map(AnyString.init) + self.cost_estimate = cost_estimate + self.multiple_databases = multiple_databases + self.column_search = column_search + self.persistent_table_indexes = persistent_table_indexes + self.persistent_derived_tables = persistent_derived_tables + self.turtles = turtles + self.percentile = percentile + self.distinct_percentile = distinct_percentile + self.stable_views = stable_views + self.milliseconds = milliseconds + self.microseconds = microseconds + self.subtotals = subtotals + self.location = location + self.timezone = timezone + self.connection_pooling = connection_pooling } } -public struct CreateQueryTask: SDKModel { +public struct ContentFavorite: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _query_id = "query_id" - case result_format - case _source = "source" - case deferred + case _id = "id" + case _user_id = "user_id" + case _content_metadata_id = "content_metadata_id" case _look_id = "look_id" case _dashboard_id = "dashboard_id" + case look + case dashboard + case _board_id = "board_id" } + private var _id: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * Unique Id (read-only) */ - public var can: StringDictionary? + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } - private var _query_id: AnyInt + private var _user_id: AnyString? /** - * Id of query to run + * User Id which owns this ContentFavorite */ - public var query_id: Int64 { - get { _query_id.value } - set { _query_id = AnyInt.init(newValue) } + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } } + private var _content_metadata_id: AnyString? /** - * Desired async query result format. Valid values are: "inline_json", "json", "json_detail", "json_fe", "json_bi", "csv", "html", "md", "txt", "xlsx", "gsxml", "sql". + * Content Metadata Id associated with this ContentFavorite */ - public var result_format: ResultFormat + public var content_metadata_id: String? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyString.init) } + } - private var _source: AnyString? + private var _look_id: AnyString? /** - * Source of query task + * Id of a look (read-only) */ - public var source: String? { - get { _source?.value } - set { _source = newValue.map(AnyString.init) } + public var look_id: String? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyString.init) } } + private var _dashboard_id: AnyString? /** - * Create the task but defer execution - */ - public var deferred: Bool? - - private var _look_id: AnyInt? - /** - * Id of look associated with query. - */ - public var look_id: Int64? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyInt.init) } - } - - private var _dashboard_id: AnyString? - /** - * Id of dashboard associated with query. + * Id of a dashboard (read-only) */ public var dashboard_id: String? { get { _dashboard_id?.value } set { _dashboard_id = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, query_id: Int64, result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: Int64? = nil, dashboard_id: String? = nil) { - self.can = can - self._query_id = AnyInt.init(query_id) - self.result_format = result_format - self._source = source.map(AnyString.init) - self.deferred = deferred - self._look_id = look_id.map(AnyInt.init) - self._dashboard_id = dashboard_id.map(AnyString.init) + public var look: LookBasic? + + public var dashboard: DashboardBase? + + private var _board_id: AnyString? + /** + * Id of a board (read-only) + */ + public var board_id: String? { + get { _board_id?.value } + set { _board_id = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, _ query_id: Int64, _ result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: Int64? = nil, dashboard_id: String? = nil) { - self.init(can: can, query_id: query_id, result_format: result_format, source: source, deferred: deferred, look_id: look_id, dashboard_id: dashboard_id) + public init(id: String? = nil, user_id: String? = nil, content_metadata_id: String? = nil, look_id: String? = nil, dashboard_id: String? = nil, look: LookBasic? = nil, dashboard: DashboardBase? = nil, board_id: String? = nil) { + self._id = id.map(AnyString.init) + self._user_id = user_id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) + self._look_id = look_id.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self.look = look + self.dashboard = dashboard + self._board_id = board_id.map(AnyString.init) } } -public struct CreateSpace: SDKModel { +public struct ContentMeta: SDKModel { private enum CodingKeys : String, CodingKey { + case can + case _id = "id" case _name = "name" case _parent_id = "parent_id" + case _dashboard_id = "dashboard_id" + case _look_id = "look_id" + case _folder_id = "folder_id" + case _content_type = "content_type" + case inherits + case _inheriting_id = "inheriting_id" + case _slug = "slug" } - private var _name: AnyString /** - * Unique Name + * Operations the current user is able to perform on this object (read-only) */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } - } + public var can: StringDictionary? - private var _parent_id: AnyString + private var _id: AnyString? /** - * Id of Parent. If the parent id is null, this is a root-level entry + * Unique Id (read-only) */ - public var parent_id: String { - get { _parent_id.value } - set { _parent_id = AnyString.init(newValue) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - public init(name: String, parent_id: String) { - self._name = AnyString.init(name) - self._parent_id = AnyString.init(parent_id) + private var _name: AnyString? + /** + * Name or title of underlying content (read-only) + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - public init(_ name: String, _ parent_id: String) { - self.init(name: name, parent_id: parent_id) + private var _parent_id: AnyString? + /** + * Id of Parent Content (read-only) + */ + public var parent_id: String? { + get { _parent_id?.value } + set { _parent_id = newValue.map(AnyString.init) } } -} - -/** - * WARNING: no writeable properties found for POST, PUT, or PATCH - */ -public struct CredentialsApi3: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _id = "id" - case _client_id = "client_id" - case _created_at = "created_at" - case is_disabled - case _type = "type" - case url - } + private var _dashboard_id: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * Id of associated dashboard when content_type is "dashboard" (read-only) */ - public var can: StringDictionary? + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } + } - private var _id: AnyInt? + private var _look_id: AnyString? /** - * Unique Id (read-only) + * Id of associated look when content_type is "look" (read-only) */ - public var id: Int64? { - get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + public var look_id: String? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyString.init) } } - private var _client_id: AnyString? + private var _folder_id: AnyString? /** - * API key client_id (read-only) + * Id of associated folder when content_type is "space" (read-only) */ - public var client_id: String? { - get { _client_id?.value } - set { _client_id = newValue.map(AnyString.init) } + public var folder_id: String? { + get { _folder_id?.value } + set { _folder_id = newValue.map(AnyString.init) } } - private var _created_at: AnyString? + private var _content_type: AnyString? /** - * Timestamp for the creation of this credential (read-only) + * Content Type ("dashboard", "look", or "folder") (read-only) */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } + public var content_type: String? { + get { _content_type?.value } + set { _content_type = newValue.map(AnyString.init) } } /** - * Has this credential been disabled? (read-only) + * Whether content inherits its access levels from parent */ - public var is_disabled: Bool? + public var inherits: Bool? - private var _type: AnyString? + private var _inheriting_id: AnyString? /** - * Short name for the type of this kind of credential (read-only) + * Id of Inherited Content (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var inheriting_id: String? { + get { _inheriting_id?.value } + set { _inheriting_id = newValue.map(AnyString.init) } } + private var _slug: AnyString? /** - * Link to get this item (read-only) + * Content Slug (read-only) */ - public var url: URI? + public var slug: String? { + get { _slug?.value } + set { _slug = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, id: Int64? = nil, client_id: String? = nil, created_at: String? = nil, is_disabled: Bool? = nil, type: String? = nil, url: URI? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, name: String? = nil, parent_id: String? = nil, dashboard_id: String? = nil, look_id: String? = nil, folder_id: String? = nil, content_type: String? = nil, inherits: Bool? = nil, inheriting_id: String? = nil, slug: String? = nil) { self.can = can - self._id = id.map(AnyInt.init) - self._client_id = client_id.map(AnyString.init) - self._created_at = created_at.map(AnyString.init) - self.is_disabled = is_disabled - self._type = type.map(AnyString.init) - self.url = url + self._id = id.map(AnyString.init) + self._name = name.map(AnyString.init) + self._parent_id = parent_id.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self._look_id = look_id.map(AnyString.init) + self._folder_id = folder_id.map(AnyString.init) + self._content_type = content_type.map(AnyString.init) + self.inherits = inherits + self._inheriting_id = inheriting_id.map(AnyString.init) + self._slug = slug.map(AnyString.init) } } -public struct CredentialsEmail: SDKModel { +/** + * WARNING: no writeable properties found for POST, PUT, or PATCH + */ +public struct ContentMetaGroupUser: SDKModel { private enum CodingKeys : String, CodingKey { case can - case _created_at = "created_at" - case _email = "email" - case forced_password_reset_at_next_login + case _id = "id" + case _content_metadata_id = "content_metadata_id" + case permission_type + case _group_id = "group_id" case _user_id = "user_id" - case is_disabled - case _logged_in_at = "logged_in_at" - case _password_reset_url = "password_reset_url" - case _account_setup_url = "account_setup_url" - case _type = "type" - case url - case user_url } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _created_at: AnyString? + private var _id: AnyString? /** - * Timestamp for the creation of this credential (read-only) + * Unique Id (read-only) */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _email: AnyString? + private var _content_metadata_id: AnyString? /** - * EMail address used for user login + * Id of associated Content Metadata (read-only) */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } + public var content_metadata_id: String? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyString.init) } } /** - * Force the user to change their password upon their next login + * Type of permission: "view" or "edit" Valid values are: "view", "edit". (read-only) */ - public var forced_password_reset_at_next_login: Bool? + public var permission_type: PermissionType? + + private var _group_id: AnyString? + /** + * ID of associated group (read-only) + */ + public var group_id: String? { + get { _group_id?.value } + set { _group_id = newValue.map(AnyString.init) } + } private var _user_id: AnyString? /** - * Unique Id of the user (read-only) + * ID of associated user (read-only) */ public var user_id: String? { get { _user_id?.value } set { _user_id = newValue.map(AnyString.init) } } - /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _logged_in_at: AnyString? - /** - * Timestamp for most recent login using credential (read-only) - */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } + public init(can: StringDictionary? = nil, id: String? = nil, content_metadata_id: String? = nil, permission_type: PermissionType? = nil, group_id: String? = nil, user_id: String? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) + self.permission_type = permission_type + self._group_id = group_id.map(AnyString.init) + self._user_id = user_id.map(AnyString.init) } - private var _password_reset_url: AnyString? +} + +public struct ContentSearch: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _content_id = "content_id" + case _type = "type" + case _title = "title" + case _description = "description" + case _folder_id = "folder_id" + case _folder_name = "folder_name" + case _view_count = "view_count" + case _preferred_viewer = "preferred_viewer" + } /** - * Url with one-time use secret token that the user can use to reset password (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var password_reset_url: String? { - get { _password_reset_url?.value } - set { _password_reset_url = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _account_setup_url: AnyString? + private var _content_id: AnyString? /** - * Url with one-time use secret token that the user can use to setup account (read-only) + * Primary id associated with the content (read-only) */ - public var account_setup_url: String? { - get { _account_setup_url?.value } - set { _account_setup_url = newValue.map(AnyString.init) } + public var content_id: String? { + get { _content_id?.value } + set { _content_id = newValue.map(AnyString.init) } } private var _type: AnyString? /** - * Short name for the type of this kind of credential (read-only) + * Type of content (read-only) */ public var type: String? { get { _type?.value } set { _type = newValue.map(AnyString.init) } } + private var _title: AnyString? /** - * Link to get this item (read-only) + * Content title (read-only) */ - public var url: URI? - - /** - * Link to get this user (read-only) - */ - public var user_url: URI? - - public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, forced_password_reset_at_next_login: Bool? = nil, user_id: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, password_reset_url: String? = nil, account_setup_url: String? = nil, type: String? = nil, url: URI? = nil, user_url: URI? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._email = email.map(AnyString.init) - self.forced_password_reset_at_next_login = forced_password_reset_at_next_login - self._user_id = user_id.map(AnyString.init) - self.is_disabled = is_disabled - self._logged_in_at = logged_in_at.map(AnyString.init) - self._password_reset_url = password_reset_url.map(AnyString.init) - self._account_setup_url = account_setup_url.map(AnyString.init) - self._type = type.map(AnyString.init) - self.url = url - self.user_url = user_url - } - -} - -public struct CredentialsEmbed: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _external_group_id = "external_group_id" - case _external_user_id = "external_user_id" - case _id = "id" - case is_disabled - case _logged_in_at = "logged_in_at" - case _type = "type" - case url - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _created_at: AnyString? - /** - * Timestamp for the creation of this credential (read-only) - */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } - private var _external_group_id: AnyString? + private var _description: AnyString? /** - * Embedder's id for a group to which this user was added during the most recent login (read-only) + * Content description (read-only) */ - public var external_group_id: String? { - get { _external_group_id?.value } - set { _external_group_id = newValue.map(AnyString.init) } + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } } - private var _external_user_id: AnyString? + private var _folder_id: AnyString? /** - * Embedder's unique id for the user (read-only) + * Id of the folder where the content is saved (read-only) */ - public var external_user_id: String? { - get { _external_user_id?.value } - set { _external_user_id = newValue.map(AnyString.init) } + public var folder_id: String? { + get { _folder_id?.value } + set { _folder_id = newValue.map(AnyString.init) } } - private var _id: AnyInt? + private var _folder_name: AnyString? /** - * Unique Id (read-only) + * Name of the folder where the content is saved (read-only) */ - public var id: Int64? { - get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + public var folder_name: String? { + get { _folder_name?.value } + set { _folder_name = newValue.map(AnyString.init) } } + private var _view_count: AnyInt? /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _logged_in_at: AnyString? - /** - * Timestamp for most recent login using credential (read-only) + * Number of times the content has been viewed (read-only) */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } + public var view_count: Int64? { + get { _view_count?.value } + set { _view_count = newValue.map(AnyInt.init) } } - private var _type: AnyString? + private var _preferred_viewer: AnyString? /** - * Short name for the type of this kind of credential (read-only) + * Preferred way of viewing the content (only applies to dashboards) (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var preferred_viewer: String? { + get { _preferred_viewer?.value } + set { _preferred_viewer = newValue.map(AnyString.init) } } - /** - * Link to get this item (read-only) - */ - public var url: URI? - - public init(can: StringDictionary? = nil, created_at: String? = nil, external_group_id: String? = nil, external_user_id: String? = nil, id: Int64? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, type: String? = nil, url: URI? = nil) { + public init(can: StringDictionary? = nil, content_id: String? = nil, type: String? = nil, title: String? = nil, description: String? = nil, folder_id: String? = nil, folder_name: String? = nil, view_count: Int64? = nil, preferred_viewer: String? = nil) { self.can = can - self._created_at = created_at.map(AnyString.init) - self._external_group_id = external_group_id.map(AnyString.init) - self._external_user_id = external_user_id.map(AnyString.init) - self._id = id.map(AnyInt.init) - self.is_disabled = is_disabled - self._logged_in_at = logged_in_at.map(AnyString.init) + self._content_id = content_id.map(AnyString.init) self._type = type.map(AnyString.init) - self.url = url + self._title = title.map(AnyString.init) + self._description = description.map(AnyString.init) + self._folder_id = folder_id.map(AnyString.init) + self._folder_name = folder_name.map(AnyString.init) + self._view_count = view_count.map(AnyInt.init) + self._preferred_viewer = preferred_viewer.map(AnyString.init) } } -public struct CredentialsGoogle: SDKModel { +public struct ContentValidation: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _domain = "domain" - case _email = "email" - case _google_user_id = "google_user_id" - case is_disabled - case _logged_in_at = "logged_in_at" - case _type = "type" - case url + case content_with_errors + case computation_time + case _total_looks_validated = "total_looks_validated" + case _total_dashboard_elements_validated = "total_dashboard_elements_validated" + case _total_dashboard_filters_validated = "total_dashboard_filters_validated" + case _total_scheduled_plans_validated = "total_scheduled_plans_validated" + case _total_alerts_validated = "total_alerts_validated" + case _total_explores_validated = "total_explores_validated" } /** - * Operations the current user is able to perform on this object (read-only) + * A list of content errors (read-only) */ - public var can: StringDictionary? + public var content_with_errors: [ContentValidatorError]? - private var _created_at: AnyString? /** - * Timestamp for the creation of this credential (read-only) + * Duration of content validation in seconds (read-only) */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } - } + public var computation_time: Float? - private var _domain: AnyString? + private var _total_looks_validated: AnyInt? /** - * Google domain (read-only) + * The number of looks validated (read-only) */ - public var domain: String? { - get { _domain?.value } - set { _domain = newValue.map(AnyString.init) } + public var total_looks_validated: Int64? { + get { _total_looks_validated?.value } + set { _total_looks_validated = newValue.map(AnyInt.init) } } - private var _email: AnyString? + private var _total_dashboard_elements_validated: AnyInt? /** - * EMail address (read-only) + * The number of dashboard elements validated (read-only) */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } + public var total_dashboard_elements_validated: Int64? { + get { _total_dashboard_elements_validated?.value } + set { _total_dashboard_elements_validated = newValue.map(AnyInt.init) } } - private var _google_user_id: AnyString? + private var _total_dashboard_filters_validated: AnyInt? /** - * Google's Unique ID for this user (read-only) + * The number of dashboard filters validated (read-only) */ - public var google_user_id: String? { - get { _google_user_id?.value } - set { _google_user_id = newValue.map(AnyString.init) } + public var total_dashboard_filters_validated: Int64? { + get { _total_dashboard_filters_validated?.value } + set { _total_dashboard_filters_validated = newValue.map(AnyInt.init) } } + private var _total_scheduled_plans_validated: AnyInt? /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _logged_in_at: AnyString? - /** - * Timestamp for most recent login using credential (read-only) + * The number of scheduled plans validated (read-only) */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } + public var total_scheduled_plans_validated: Int64? { + get { _total_scheduled_plans_validated?.value } + set { _total_scheduled_plans_validated = newValue.map(AnyInt.init) } } - private var _type: AnyString? + private var _total_alerts_validated: AnyInt? /** - * Short name for the type of this kind of credential (read-only) + * The number of alerts validated (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var total_alerts_validated: Int64? { + get { _total_alerts_validated?.value } + set { _total_alerts_validated = newValue.map(AnyInt.init) } } + private var _total_explores_validated: AnyInt? /** - * Link to get this item (read-only) + * The number of explores used across all content validated (read-only) */ - public var url: URI? + public var total_explores_validated: Int64? { + get { _total_explores_validated?.value } + set { _total_explores_validated = newValue.map(AnyInt.init) } + } - public init(can: StringDictionary? = nil, created_at: String? = nil, domain: String? = nil, email: String? = nil, google_user_id: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, type: String? = nil, url: URI? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._domain = domain.map(AnyString.init) - self._email = email.map(AnyString.init) - self._google_user_id = google_user_id.map(AnyString.init) - self.is_disabled = is_disabled - self._logged_in_at = logged_in_at.map(AnyString.init) - self._type = type.map(AnyString.init) - self.url = url + public init(content_with_errors: [ContentValidatorError]? = nil, computation_time: Float? = nil, total_looks_validated: Int64? = nil, total_dashboard_elements_validated: Int64? = nil, total_dashboard_filters_validated: Int64? = nil, total_scheduled_plans_validated: Int64? = nil, total_alerts_validated: Int64? = nil, total_explores_validated: Int64? = nil) { + self.content_with_errors = content_with_errors + self.computation_time = computation_time + self._total_looks_validated = total_looks_validated.map(AnyInt.init) + self._total_dashboard_elements_validated = total_dashboard_elements_validated.map(AnyInt.init) + self._total_dashboard_filters_validated = total_dashboard_filters_validated.map(AnyInt.init) + self._total_scheduled_plans_validated = total_scheduled_plans_validated.map(AnyInt.init) + self._total_alerts_validated = total_alerts_validated.map(AnyInt.init) + self._total_explores_validated = total_explores_validated.map(AnyInt.init) } } -public struct CredentialsLDAP: SDKModel { +public struct ContentValidationAlert: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _email = "email" - case is_disabled - case _ldap_dn = "ldap_dn" - case _ldap_id = "ldap_id" - case _logged_in_at = "logged_in_at" - case _type = "type" - case url + case _id = "id" + case _lookml_dashboard_id = "lookml_dashboard_id" + case _lookml_link_id = "lookml_link_id" + case _custom_url_base = "custom_url_base" + case _custom_url_params = "custom_url_params" + case _custom_url_label = "custom_url_label" + case show_custom_url + case _custom_title = "custom_title" } + private var _id: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * ID of the alert */ - public var can: StringDictionary? + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } - private var _created_at: AnyString? + private var _lookml_dashboard_id: AnyString? /** - * Timestamp for the creation of this credential (read-only) + * ID of the LookML dashboard associated with the alert */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } + public var lookml_dashboard_id: String? { + get { _lookml_dashboard_id?.value } + set { _lookml_dashboard_id = newValue.map(AnyString.init) } } - private var _email: AnyString? + private var _lookml_link_id: AnyString? /** - * EMail address (read-only) + * ID of the LookML dashboard element associated with the alert */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } + public var lookml_link_id: String? { + get { _lookml_link_id?.value } + set { _lookml_link_id = newValue.map(AnyString.init) } } + private var _custom_url_base: AnyString? /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _ldap_dn: AnyString? - /** - * LDAP Distinguished name for this user (as-of the last login) (read-only) + * Domain for the custom url selected by the alert creator from the admin defined domain allowlist */ - public var ldap_dn: String? { - get { _ldap_dn?.value } - set { _ldap_dn = newValue.map(AnyString.init) } + public var custom_url_base: String? { + get { _custom_url_base?.value } + set { _custom_url_base = newValue.map(AnyString.init) } } - private var _ldap_id: AnyString? + private var _custom_url_params: AnyString? /** - * LDAP Unique ID for this user (read-only) + * Parameters and path for the custom url defined by the alert creator */ - public var ldap_id: String? { - get { _ldap_id?.value } - set { _ldap_id = newValue.map(AnyString.init) } + public var custom_url_params: String? { + get { _custom_url_params?.value } + set { _custom_url_params = newValue.map(AnyString.init) } } - private var _logged_in_at: AnyString? + private var _custom_url_label: AnyString? /** - * Timestamp for most recent login using credential (read-only) + * Label for the custom url defined by the alert creator */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } + public var custom_url_label: String? { + get { _custom_url_label?.value } + set { _custom_url_label = newValue.map(AnyString.init) } } - private var _type: AnyString? /** - * Short name for the type of this kind of credential (read-only) + * Boolean to determine if the custom url should be used */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } + public var show_custom_url: Bool? + private var _custom_title: AnyString? /** - * Link to get this item (read-only) + * An optional, user-defined title for the alert */ - public var url: URI? + public var custom_title: String? { + get { _custom_title?.value } + set { _custom_title = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, ldap_dn: String? = nil, ldap_id: String? = nil, logged_in_at: String? = nil, type: String? = nil, url: URI? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._email = email.map(AnyString.init) - self.is_disabled = is_disabled - self._ldap_dn = ldap_dn.map(AnyString.init) - self._ldap_id = ldap_id.map(AnyString.init) - self._logged_in_at = logged_in_at.map(AnyString.init) - self._type = type.map(AnyString.init) - self.url = url + public init(id: String? = nil, lookml_dashboard_id: String? = nil, lookml_link_id: String? = nil, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, custom_title: String? = nil) { + self._id = id.map(AnyString.init) + self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) + self._lookml_link_id = lookml_link_id.map(AnyString.init) + 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) + self.show_custom_url = show_custom_url + self._custom_title = custom_title.map(AnyString.init) } } -public struct CredentialsLookerOpenid: SDKModel { +public struct ContentValidationDashboard: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _email = "email" - case is_disabled - case _logged_in_at = "logged_in_at" - case _logged_in_ip = "logged_in_ip" - case _type = "type" - case url - case user_url + case _description = "description" + case _id = "id" + case folder + case _title = "title" + case _url = "url" } + private var _description: AnyString? /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _created_at: AnyString? - /** - * Timestamp for the creation of this credential (read-only) + * Description */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } } - private var _email: AnyString? + private var _id: AnyString? /** - * EMail address used for user login (read-only) + * Unique Id (read-only) */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - /** - * Has this credential been disabled? (read-only) - */ - public var is_disabled: Bool? - - private var _logged_in_at: AnyString? - /** - * Timestamp for most recent login using credential (read-only) - */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } - } + public var folder: ContentValidationFolder? - private var _logged_in_ip: AnyString? + private var _title: AnyString? /** - * IP address of client for most recent login using credential (read-only) + * Dashboard Title */ - public var logged_in_ip: String? { - get { _logged_in_ip?.value } - set { _logged_in_ip = newValue.map(AnyString.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } - private var _type: AnyString? + private var _url: AnyString? /** - * Short name for the type of this kind of credential (read-only) + * Relative URL of the dashboard (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } } - /** - * Link to get this item (read-only) - */ - public var url: URI? - - /** - * Link to get this user (read-only) - */ - public var user_url: URI? - - public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, logged_in_ip: String? = nil, type: String? = nil, url: URI? = nil, user_url: URI? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._email = email.map(AnyString.init) - self.is_disabled = is_disabled - self._logged_in_at = logged_in_at.map(AnyString.init) - self._logged_in_ip = logged_in_ip.map(AnyString.init) - self._type = type.map(AnyString.init) - self.url = url - self.user_url = user_url + public init(description: String? = nil, id: String? = nil, folder: ContentValidationFolder? = nil, title: String? = nil, url: String? = nil) { + self._description = description.map(AnyString.init) + self._id = id.map(AnyString.init) + self.folder = folder + self._title = title.map(AnyString.init) + self._url = url.map(AnyString.init) } } -public struct CredentialsOIDC: SDKModel { +public struct ContentValidationDashboardElement: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _email = "email" - case is_disabled - case _logged_in_at = "logged_in_at" - case _oidc_user_id = "oidc_user_id" + case _body_text = "body_text" + case _dashboard_id = "dashboard_id" + case _id = "id" + case _look_id = "look_id" + case _note_display = "note_display" + case _note_state = "note_state" + case _note_text = "note_text" + case _note_text_as_html = "note_text_as_html" + case _query_id = "query_id" + case _subtitle_text = "subtitle_text" + case _title = "title" + case title_hidden + case _title_text = "title_text" case _type = "type" - case url + case _rich_content_json = "rich_content_json" + case _extension_id = "extension_id" } + private var _body_text: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * Text tile body text */ - public var can: StringDictionary? + public var body_text: String? { + get { _body_text?.value } + set { _body_text = newValue.map(AnyString.init) } + } - private var _created_at: AnyString? + private var _dashboard_id: AnyString? /** - * Timestamp for the creation of this credential (read-only) + * Id of Dashboard */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } - private var _email: AnyString? + private var _id: AnyString? /** - * EMail address (read-only) + * Unique Id (read-only) */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } + private var _look_id: AnyString? /** - * Has this credential been disabled? (read-only) + * Id Of Look */ - public var is_disabled: Bool? + public var look_id: String? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyString.init) } + } - private var _logged_in_at: AnyString? + private var _note_display: AnyString? /** - * Timestamp for most recent login using credential (read-only) + * Note Display */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } + public var note_display: String? { + get { _note_display?.value } + set { _note_display = newValue.map(AnyString.init) } } - private var _oidc_user_id: AnyString? + private var _note_state: AnyString? /** - * OIDC OP's Unique ID for this user (read-only) + * Note State */ - public var oidc_user_id: String? { - get { _oidc_user_id?.value } - set { _oidc_user_id = newValue.map(AnyString.init) } + public var note_state: String? { + get { _note_state?.value } + set { _note_state = newValue.map(AnyString.init) } } - private var _type: AnyString? + private var _note_text: AnyString? /** - * Short name for the type of this kind of credential (read-only) + * Note Text */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var note_text: String? { + get { _note_text?.value } + set { _note_text = newValue.map(AnyString.init) } } + private var _note_text_as_html: AnyString? /** - * Link to get this item (read-only) + * Note Text as Html (read-only) */ - public var url: URI? + public var note_text_as_html: String? { + get { _note_text_as_html?.value } + set { _note_text_as_html = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, oidc_user_id: String? = nil, type: String? = nil, url: URI? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._email = email.map(AnyString.init) - self.is_disabled = is_disabled - self._logged_in_at = logged_in_at.map(AnyString.init) - self._oidc_user_id = oidc_user_id.map(AnyString.init) - self._type = type.map(AnyString.init) - self.url = url - } - -} - -public struct CredentialsSaml: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _email = "email" - case is_disabled - case _logged_in_at = "logged_in_at" - case _saml_user_id = "saml_user_id" - case _type = "type" - case url - } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - private var _created_at: AnyString? + private var _query_id: AnyString? /** - * Timestamp for the creation of this credential (read-only) + * Id Of Query */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } + public var query_id: String? { + get { _query_id?.value } + set { _query_id = newValue.map(AnyString.init) } } - private var _email: AnyString? + private var _subtitle_text: AnyString? /** - * EMail address (read-only) + * Text tile subtitle text */ - public var email: String? { - get { _email?.value } - set { _email = newValue.map(AnyString.init) } + public var subtitle_text: String? { + get { _subtitle_text?.value } + set { _subtitle_text = newValue.map(AnyString.init) } } + private var _title: AnyString? /** - * Has this credential been disabled? (read-only) + * Title of dashboard element */ - public var is_disabled: Bool? + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } + } - private var _logged_in_at: AnyString? /** - * Timestamp for most recent login using credential (read-only) + * Whether title is hidden */ - public var logged_in_at: String? { - get { _logged_in_at?.value } - set { _logged_in_at = newValue.map(AnyString.init) } - } + public var title_hidden: Bool? - private var _saml_user_id: AnyString? + private var _title_text: AnyString? /** - * Saml IdP's Unique ID for this user (read-only) + * Text tile title */ - public var saml_user_id: String? { - get { _saml_user_id?.value } - set { _saml_user_id = newValue.map(AnyString.init) } + public var title_text: String? { + get { _title_text?.value } + set { _title_text = newValue.map(AnyString.init) } } private var _type: AnyString? /** - * Short name for the type of this kind of credential (read-only) + * Type */ public var type: String? { get { _type?.value } set { _type = newValue.map(AnyString.init) } } + private var _rich_content_json: AnyString? /** - * Link to get this item (read-only) + * JSON with all the properties required for rich editor and buttons elements */ - public var url: URI? + public var rich_content_json: String? { + get { _rich_content_json?.value } + set { _rich_content_json = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, saml_user_id: String? = nil, type: String? = nil, url: URI? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self._email = email.map(AnyString.init) - self.is_disabled = is_disabled - self._logged_in_at = logged_in_at.map(AnyString.init) - self._saml_user_id = saml_user_id.map(AnyString.init) + private var _extension_id: AnyString? + /** + * Extension ID + */ + public var extension_id: String? { + get { _extension_id?.value } + set { _extension_id = newValue.map(AnyString.init) } + } + + public init(body_text: String? = nil, dashboard_id: String? = nil, id: String? = nil, look_id: String? = nil, note_display: String? = nil, note_state: String? = nil, note_text: String? = nil, note_text_as_html: String? = nil, query_id: String? = nil, subtitle_text: String? = nil, title: String? = nil, title_hidden: Bool? = nil, title_text: String? = nil, type: String? = nil, rich_content_json: String? = nil, extension_id: String? = nil) { + self._body_text = body_text.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self._id = id.map(AnyString.init) + self._look_id = look_id.map(AnyString.init) + self._note_display = note_display.map(AnyString.init) + self._note_state = note_state.map(AnyString.init) + self._note_text = note_text.map(AnyString.init) + self._note_text_as_html = note_text_as_html.map(AnyString.init) + self._query_id = query_id.map(AnyString.init) + self._subtitle_text = subtitle_text.map(AnyString.init) + self._title = title.map(AnyString.init) + self.title_hidden = title_hidden + self._title_text = title_text.map(AnyString.init) self._type = type.map(AnyString.init) - self.url = url + self._rich_content_json = rich_content_json.map(AnyString.init) + self._extension_id = extension_id.map(AnyString.init) } } -/** - * WARNING: no writeable properties found for POST, PUT, or PATCH - */ -public struct CredentialsTotp: SDKModel { +public struct ContentValidationDashboardFilter: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case is_disabled + case _id = "id" + case _dashboard_id = "dashboard_id" + case _name = "name" + case _title = "title" case _type = "type" - case verified - case url + case _default_value = "default_value" + case _model = "model" + case _explore = "explore" + case _dimension = "dimension" } + private var _id: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * Unique Id (read-only) */ - public var can: StringDictionary? + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } - private var _created_at: AnyString? + private var _dashboard_id: AnyString? /** - * Timestamp for the creation of this credential (read-only) + * Id of Dashboard (read-only) */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } + private var _name: AnyString? /** - * Has this credential been disabled? (read-only) + * Name of filter */ - public var is_disabled: Bool? + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + + private var _title: AnyString? + /** + * Title of filter + */ + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } + } private var _type: AnyString? /** - * Short name for the type of this kind of credential (read-only) + * Type of filter: one of date, number, string, or field */ public var type: String? { get { _type?.value } set { _type = newValue.map(AnyString.init) } } + private var _default_value: AnyString? /** - * User has verified (read-only) + * Default value of filter */ - public var verified: Bool? + public var default_value: String? { + get { _default_value?.value } + set { _default_value = newValue.map(AnyString.init) } + } + private var _model: AnyString? /** - * Link to get this item (read-only) + * Model of filter (required if type = field) */ - public var url: URI? + public var model: String? { + get { _model?.value } + set { _model = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, created_at: String? = nil, is_disabled: Bool? = nil, type: String? = nil, verified: Bool? = nil, url: URI? = nil) { - self.can = can - self._created_at = created_at.map(AnyString.init) - self.is_disabled = is_disabled + private var _explore: AnyString? + /** + * Explore of filter (required if type = field) + */ + public var explore: String? { + get { _explore?.value } + set { _explore = newValue.map(AnyString.init) } + } + + private var _dimension: AnyString? + /** + * Dimension of filter (required if type = field) + */ + public var dimension: String? { + get { _dimension?.value } + set { _dimension = newValue.map(AnyString.init) } + } + + public init(id: String? = nil, dashboard_id: String? = nil, name: String? = nil, title: String? = nil, type: String? = nil, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil) { + self._id = id.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self._name = name.map(AnyString.init) + self._title = title.map(AnyString.init) self._type = type.map(AnyString.init) - self.verified = verified - self.url = url + self._default_value = default_value.map(AnyString.init) + self._model = model.map(AnyString.init) + self._explore = explore.map(AnyString.init) + self._dimension = dimension.map(AnyString.init) } } -public struct CustomWelcomeEmail: SDKModel { +public struct ContentValidationError: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case enabled - case _content = "content" - case _subject = "subject" - case _header = "header" + case _message = "message" + case _field_name = "field_name" + case _model_name = "model_name" + case _explore_name = "explore_name" + case removable } + private var _message: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * Error message (read-only) */ - public var can: StringDictionary? + public var message: String? { + get { _message?.value } + set { _message = newValue.map(AnyString.init) } + } + private var _field_name: AnyString? /** - * If true, custom email content will replace the default body of welcome emails + * Name of the field involved in the error (read-only) */ - public var enabled: Bool? + public var field_name: String? { + get { _field_name?.value } + set { _field_name = newValue.map(AnyString.init) } + } - private var _content: AnyString? + private var _model_name: AnyString? /** - * The HTML to use as custom content for welcome emails. Script elements and other potentially dangerous markup will be removed. + * Name of the model involved in the error (read-only) */ - public var content: String? { - get { _content?.value } - set { _content = newValue.map(AnyString.init) } + public var model_name: String? { + get { _model_name?.value } + set { _model_name = newValue.map(AnyString.init) } } - private var _subject: AnyString? + private var _explore_name: AnyString? /** - * The text to appear in the email subject line. Only available with a whitelabel license and whitelabel_configuration.advanced_custom_welcome_email enabled. + * Name of the explore involved in the error (read-only) */ - public var subject: String? { - get { _subject?.value } - set { _subject = newValue.map(AnyString.init) } + public var explore_name: String? { + get { _explore_name?.value } + set { _explore_name = newValue.map(AnyString.init) } } - private var _header: AnyString? /** - * 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. + * Whether this validation error is removable (read-only) */ - public var header: String? { - get { _header?.value } - set { _header = newValue.map(AnyString.init) } - } + public var removable: Bool? - public init(can: StringDictionary? = nil, enabled: Bool? = nil, content: String? = nil, subject: String? = nil, header: String? = nil) { - self.can = can - self.enabled = enabled - self._content = content.map(AnyString.init) - self._subject = subject.map(AnyString.init) - self._header = header.map(AnyString.init) + public init(message: String? = nil, field_name: String? = nil, model_name: String? = nil, explore_name: String? = nil, removable: Bool? = nil) { + self._message = message.map(AnyString.init) + self._field_name = field_name.map(AnyString.init) + self._model_name = model_name.map(AnyString.init) + self._explore_name = explore_name.map(AnyString.init) + self.removable = removable } } -public struct Dashboard: SDKModel { +public struct ContentValidationFolder: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _content_favorite_id = "content_favorite_id" - case _content_metadata_id = "content_metadata_id" - case _description = "description" - case hidden + case _name = "name" case _id = "id" - case model - case _query_timezone = "query_timezone" - case readonly - case _refresh_interval = "refresh_interval" - case _refresh_interval_to_i = "refresh_interval_to_i" - case folder - case _title = "title" - case _user_id = "user_id" - case _slug = "slug" - case _preferred_viewer = "preferred_viewer" - case space - case alert_sync_with_dashboard_filter_enabled - case _background_color = "background_color" - case created_at - case crossfilter_enabled - case dashboard_elements - case dashboard_filters - case dashboard_layouts - case deleted - case deleted_at - case _deleter_id = "deleter_id" - case edit_uri - case enable_viz_full_screen - case _favorite_count = "favorite_count" - case filters_bar_collapsed - case filters_location_top - case last_accessed_at - case last_viewed_at - case updated_at - case _last_updater_id = "last_updater_id" - case _last_updater_name = "last_updater_name" - case _user_name = "user_name" - case _load_configuration = "load_configuration" - case _lookml_link_id = "lookml_link_id" - case show_filters_bar - case show_title - case _space_id = "space_id" - case _folder_id = "folder_id" - case _text_tile_text_color = "text_tile_text_color" - case _tile_background_color = "tile_background_color" - case _tile_text_color = "tile_text_color" - case _title_color = "title_color" - case _view_count = "view_count" - case appearance } + private var _name: AnyString /** - * Operations the current user is able to perform on this object (read-only) + * Unique Name */ - public var can: StringDictionary? + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } + } - private var _content_favorite_id: AnyInt? + private var _id: AnyString? /** - * Content Favorite Id (read-only) + * Unique Id (read-only) */ - public var content_favorite_id: Int64? { - get { _content_favorite_id?.value } - set { _content_favorite_id = newValue.map(AnyInt.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _content_metadata_id: AnyInt? - /** - * Id of content metadata (read-only) - */ - public var content_metadata_id: Int64? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } + public init(name: String, id: String? = nil) { + self._name = AnyString.init(name) + self._id = id.map(AnyString.init) } - private var _description: AnyString? - /** - * Description - */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + public init(_ name: String, id: String? = nil) { + self.init(name: name, id: id) } - /** - * Is Hidden - */ - public var hidden: Bool? +} + +public struct ContentValidationLook: SDKModel { + private enum CodingKeys : String, CodingKey { + case _id = "id" + case _title = "title" + case _short_url = "short_url" + case folder + } private var _id: AnyString? /** * Unique Id (read-only) @@ -3030,962 +2933,3437 @@ public struct Dashboard: SDKModel { set { _id = newValue.map(AnyString.init) } } - public var model: LookModel? - - private var _query_timezone: AnyString? + private var _title: AnyString? /** - * Timezone in which the Dashboard will run by default. + * Look Title */ - public var query_timezone: String? { - get { _query_timezone?.value } - set { _query_timezone = newValue.map(AnyString.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } + private var _short_url: AnyString? /** - * Is Read-only (read-only) + * Short Url (read-only) */ - public var readonly: Bool? + public var short_url: String? { + get { _short_url?.value } + set { _short_url = newValue.map(AnyString.init) } + } - private var _refresh_interval: AnyString? - /** - * Refresh Interval, as a time duration phrase like "2 hours 30 minutes". A number with no time units will be interpreted as whole seconds. - */ - public var refresh_interval: String? { - get { _refresh_interval?.value } - set { _refresh_interval = newValue.map(AnyString.init) } + public var folder: ContentValidationFolder? + + public init(id: String? = nil, title: String? = nil, short_url: String? = nil, folder: ContentValidationFolder? = nil) { + self._id = id.map(AnyString.init) + self._title = title.map(AnyString.init) + self._short_url = short_url.map(AnyString.init) + self.folder = folder } - private var _refresh_interval_to_i: AnyInt? +} + +public struct ContentValidationLookMLDashboard: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _id = "id" + case _title = "title" + case _space_id = "space_id" + } + private var _id: AnyString? /** - * Refresh Interval in milliseconds (read-only) + * ID of the LookML Dashboard (read-only) */ - public var refresh_interval_to_i: Int64? { - get { _refresh_interval_to_i?.value } - set { _refresh_interval_to_i = newValue.map(AnyInt.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - public var folder: FolderBase? - private var _title: AnyString? /** - * Dashboard Title + * Title of the LookML Dashboard (read-only) */ public var title: String? { get { _title?.value } set { _title = newValue.map(AnyString.init) } } - private var _user_id: AnyInt? + private var _space_id: AnyString? /** - * Id of User (read-only) + * ID of Space (read-only) */ - public var user_id: Int64? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } + public var space_id: String? { + get { _space_id?.value } + set { _space_id = newValue.map(AnyString.init) } } - private var _slug: AnyString? - /** - * Content Metadata Slug - */ - public var slug: String? { - get { _slug?.value } - set { _slug = newValue.map(AnyString.init) } + public init(id: String? = nil, title: String? = nil, space_id: String? = nil) { + self._id = id.map(AnyString.init) + self._title = title.map(AnyString.init) + self._space_id = space_id.map(AnyString.init) } - private var _preferred_viewer: AnyString? - /** - * The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) - */ - public var preferred_viewer: String? { - get { _preferred_viewer?.value } - set { _preferred_viewer = newValue.map(AnyString.init) } - } +} - public var space: SpaceBase? +public struct ContentValidationLookMLDashboardElement: SDKModel { + private enum CodingKeys : String, CodingKey { + case _lookml_link_id = "lookml_link_id" + case _title = "title" + } + private var _lookml_link_id: AnyString? /** - * Enables alerts to keep in sync with dashboard filter changes + * Link ID of the LookML Dashboard Element (read-only) */ - public var alert_sync_with_dashboard_filter_enabled: Bool? + public var lookml_link_id: String? { + get { _lookml_link_id?.value } + set { _lookml_link_id = newValue.map(AnyString.init) } + } - private var _background_color: AnyString? + private var _title: AnyString? /** - * Background color + * Title of the LookML Dashboard Element (read-only) */ - public var background_color: String? { - get { _background_color?.value } - set { _background_color = newValue.map(AnyString.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } - /** - * Time that the Dashboard was created. (read-only) - */ - public var created_at: Date? + public init(lookml_link_id: String? = nil, title: String? = nil) { + self._lookml_link_id = lookml_link_id.map(AnyString.init) + self._title = title.map(AnyString.init) + } - /** - * Enables crossfiltering in dashboards - only available in dashboards-next (beta) - */ - public var crossfilter_enabled: Bool? +} - /** - * Elements (read-only) - */ - public var dashboard_elements: [DashboardElement]? +public struct ContentValidationScheduledPlan: SDKModel { + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _look_id = "look_id" + case _id = "id" + } + private var _name: AnyString? /** - * Filters (read-only) + * Name of this scheduled plan */ - public var dashboard_filters: [DashboardFilter]? + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + private var _look_id: AnyString? /** - * Layouts (read-only) + * Id of a look */ - public var dashboard_layouts: [DashboardLayout]? + public var look_id: String? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyString.init) } + } + private var _id: AnyString? /** - * Whether or not a dashboard is 'soft' deleted. + * Unique Id (read-only) */ - public var deleted: Bool? - - /** - * Time that the Dashboard was 'soft' deleted. (read-only) - */ - public var deleted_at: Date? + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } - private var _deleter_id: AnyInt? - /** - * Id of User that 'soft' deleted the dashboard. (read-only) - */ - public var deleter_id: Int64? { - get { _deleter_id?.value } - set { _deleter_id = newValue.map(AnyInt.init) } + public init(name: String? = nil, look_id: String? = nil, id: String? = nil) { + self._name = name.map(AnyString.init) + self._look_id = look_id.map(AnyString.init) + self._id = id.map(AnyString.init) } - /** - * Relative path of URI of LookML file to edit the dashboard (LookML dashboard only). (read-only) - */ - public var edit_uri: URI? +} - /** - * Allow visualizations to be viewed in full screen mode - */ - public var enable_viz_full_screen: Bool? +public struct ContentValidatorError: SDKModel { - private var _favorite_count: AnyInt? - /** - * Number of times favorited (read-only) - */ - public var favorite_count: Int64? { - get { _favorite_count?.value } - set { _favorite_count = newValue.map(AnyInt.init) } + private enum CodingKeys : String, CodingKey { + case look + case dashboard + case dashboard_element + case dashboard_filter + case scheduled_plan + case alert + case lookml_dashboard + case lookml_dashboard_element + case errors + case _id = "id" } + public var look: ContentValidationLook? - /** - * Sets the default state of the filters bar to collapsed or open - */ - public var filters_bar_collapsed: Bool? + public var dashboard: ContentValidationDashboard? - /** - * Sets the default state of the filters location to top(true) or right(false) - */ - public var filters_location_top: Bool? + public var dashboard_element: ContentValidationDashboardElement? + + public var dashboard_filter: ContentValidationDashboardFilter? + + public var scheduled_plan: ContentValidationScheduledPlan? + + public var alert: ContentValidationAlert? + + public var lookml_dashboard: ContentValidationLookMLDashboard? + + public var lookml_dashboard_element: ContentValidationLookMLDashboardElement? /** - * Time the dashboard was last accessed (read-only) + * A list of errors found for this piece of content (read-only) */ - public var last_accessed_at: Date? + public var errors: [ContentValidationError]? + private var _id: AnyString? /** - * Time last viewed in the Looker web UI (read-only) + * An id unique to this piece of content for this validation run (read-only) */ - public var last_viewed_at: Date? + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + public init(look: ContentValidationLook? = nil, dashboard: ContentValidationDashboard? = nil, dashboard_element: ContentValidationDashboardElement? = nil, dashboard_filter: ContentValidationDashboardFilter? = nil, scheduled_plan: ContentValidationScheduledPlan? = nil, alert: ContentValidationAlert? = nil, lookml_dashboard: ContentValidationLookMLDashboard? = nil, lookml_dashboard_element: ContentValidationLookMLDashboardElement? = nil, errors: [ContentValidationError]? = nil, id: String? = nil) { + self.look = look + self.dashboard = dashboard + self.dashboard_element = dashboard_element + self.dashboard_filter = dashboard_filter + self.scheduled_plan = scheduled_plan + self.alert = alert + self.lookml_dashboard = lookml_dashboard + self.lookml_dashboard_element = lookml_dashboard_element + self.errors = errors + self._id = id.map(AnyString.init) + } +} + +public struct ContentView: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _id = "id" + case _look_id = "look_id" + case _dashboard_id = "dashboard_id" + case _title = "title" + case _content_metadata_id = "content_metadata_id" + case _user_id = "user_id" + case _group_id = "group_id" + case _view_count = "view_count" + case _favorite_count = "favorite_count" + case _last_viewed_at = "last_viewed_at" + case _start_of_week_date = "start_of_week_date" + } /** - * Time that the Dashboard was most recently updated. (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var updated_at: Date? + public var can: StringDictionary? - private var _last_updater_id: AnyInt? + private var _id: AnyString? /** - * Id of User that most recently updated the dashboard. (read-only) + * Unique Id (read-only) */ - public var last_updater_id: Int64? { - get { _last_updater_id?.value } - set { _last_updater_id = newValue.map(AnyInt.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _last_updater_name: AnyString? + private var _look_id: AnyString? /** - * Name of User that most recently updated the dashboard. (read-only) + * Id of viewed Look (read-only) */ - public var last_updater_name: String? { - get { _last_updater_name?.value } - set { _last_updater_name = newValue.map(AnyString.init) } + public var look_id: String? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyString.init) } } - private var _user_name: AnyString? + private var _dashboard_id: AnyString? /** - * Name of User that created the dashboard. (read-only) + * Id of the viewed Dashboard (read-only) */ - public var user_name: String? { - get { _user_name?.value } - set { _user_name = newValue.map(AnyString.init) } + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } - private var _load_configuration: AnyString? + private var _title: AnyString? /** - * configuration option that governs how dashboard loading will happen. + * Name or title of underlying content (read-only) */ - public var load_configuration: String? { - get { _load_configuration?.value } - set { _load_configuration = newValue.map(AnyString.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } - private var _lookml_link_id: AnyString? + private var _content_metadata_id: AnyString? /** - * Links this dashboard to a particular LookML dashboard such that calling a **sync** operation on that LookML dashboard will update this dashboard to match. + * Content metadata id of the Look or Dashboard (read-only) */ - public var lookml_link_id: String? { - get { _lookml_link_id?.value } - set { _lookml_link_id = newValue.map(AnyString.init) } + public var content_metadata_id: String? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyString.init) } } + private var _user_id: AnyString? /** - * 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://cloud.google.com/looker/docs/r/api/control-access) + * Id of user content was viewed by (read-only) */ - public var show_filters_bar: Bool? + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } + } + private var _group_id: AnyString? /** - * Show title + * Id of group content was viewed by (read-only) */ - public var show_title: Bool? + public var group_id: String? { + get { _group_id?.value } + set { _group_id = newValue.map(AnyString.init) } + } - private var _space_id: AnyString? + private var _view_count: AnyInt? /** - * Id of Space + * Number of times piece of content was viewed (read-only) */ - public var space_id: String? { - get { _space_id?.value } - set { _space_id = newValue.map(AnyString.init) } + public var view_count: Int64? { + get { _view_count?.value } + set { _view_count = newValue.map(AnyInt.init) } } - private var _folder_id: AnyString? + private var _favorite_count: AnyInt? /** - * Id of folder + * Number of times piece of content was favorited (read-only) */ - public var folder_id: String? { - get { _folder_id?.value } - set { _folder_id = newValue.map(AnyString.init) } + public var favorite_count: Int64? { + get { _favorite_count?.value } + set { _favorite_count = newValue.map(AnyInt.init) } } - private var _text_tile_text_color: AnyString? + private var _last_viewed_at: AnyString? /** - * Color of text on text tiles + * Date the piece of content was last viewed (read-only) */ - public var text_tile_text_color: String? { - get { _text_tile_text_color?.value } - set { _text_tile_text_color = newValue.map(AnyString.init) } + public var last_viewed_at: String? { + get { _last_viewed_at?.value } + set { _last_viewed_at = newValue.map(AnyString.init) } } - private var _tile_background_color: AnyString? + private var _start_of_week_date: AnyString? /** - * Tile background color + * Week start date for the view and favorite count during that given week (read-only) */ - public var tile_background_color: String? { - get { _tile_background_color?.value } - set { _tile_background_color = newValue.map(AnyString.init) } + public var start_of_week_date: String? { + get { _start_of_week_date?.value } + set { _start_of_week_date = newValue.map(AnyString.init) } } - private var _tile_text_color: AnyString? + public init(can: StringDictionary? = nil, id: String? = nil, look_id: String? = nil, dashboard_id: String? = nil, title: String? = nil, content_metadata_id: String? = nil, user_id: String? = nil, group_id: String? = nil, view_count: Int64? = nil, favorite_count: Int64? = nil, last_viewed_at: String? = nil, start_of_week_date: String? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self._look_id = look_id.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self._title = title.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) + self._user_id = user_id.map(AnyString.init) + self._group_id = group_id.map(AnyString.init) + self._view_count = view_count.map(AnyInt.init) + self._favorite_count = favorite_count.map(AnyInt.init) + self._last_viewed_at = last_viewed_at.map(AnyString.init) + self._start_of_week_date = start_of_week_date.map(AnyString.init) + } + +} + +public struct ContinuousPalette: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _id = "id" + case _label = "label" + case _type = "type" + case stops + } + private var _id: AnyString? /** - * Tile text color + * Unique identity string (read-only) */ - public var tile_text_color: String? { - get { _tile_text_color?.value } - set { _tile_text_color = newValue.map(AnyString.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _title_color: AnyString? + private var _label: AnyString? /** - * Title color + * Label for palette */ - public var title_color: String? { - get { _title_color?.value } - set { _title_color = newValue.map(AnyString.init) } + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } } - private var _view_count: AnyInt? + private var _type: AnyString? /** - * Number of times viewed in the Looker web UI (read-only) + * Type of palette */ - public var view_count: Int64? { - get { _view_count?.value } - set { _view_count = newValue.map(AnyInt.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - public var appearance: DashboardAppearance? + /** + * Array of ColorStops in the palette + */ + public var stops: [ColorStop]? - public init(can: StringDictionary? = nil, content_favorite_id: Int64? = nil, content_metadata_id: Int64? = nil, description: String? = nil, hidden: Bool? = nil, id: String? = nil, model: LookModel? = nil, query_timezone: String? = nil, readonly: Bool? = nil, refresh_interval: String? = nil, refresh_interval_to_i: Int64? = nil, folder: FolderBase? = nil, title: String? = nil, user_id: Int64? = nil, slug: String? = nil, preferred_viewer: String? = nil, space: SpaceBase? = nil, alert_sync_with_dashboard_filter_enabled: Bool? = nil, background_color: String? = nil, created_at: Date? = nil, crossfilter_enabled: Bool? = nil, dashboard_elements: [DashboardElement]? = nil, dashboard_filters: [DashboardFilter]? = nil, dashboard_layouts: [DashboardLayout]? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: Int64? = nil, edit_uri: URI? = nil, enable_viz_full_screen: Bool? = nil, favorite_count: Int64? = nil, filters_bar_collapsed: Bool? = nil, filters_location_top: Bool? = nil, last_accessed_at: Date? = nil, last_viewed_at: Date? = nil, updated_at: Date? = nil, last_updater_id: Int64? = nil, last_updater_name: String? = nil, user_name: String? = nil, load_configuration: String? = nil, lookml_link_id: String? = nil, show_filters_bar: Bool? = nil, show_title: Bool? = nil, space_id: String? = nil, folder_id: String? = nil, text_tile_text_color: String? = nil, tile_background_color: String? = nil, tile_text_color: String? = nil, title_color: String? = nil, view_count: Int64? = nil, appearance: DashboardAppearance? = nil) { - self.can = can - self._content_favorite_id = content_favorite_id.map(AnyInt.init) - self._content_metadata_id = content_metadata_id.map(AnyInt.init) - self._description = description.map(AnyString.init) - self.hidden = hidden + public init(id: String? = nil, label: String? = nil, type: String? = nil, stops: [ColorStop]? = nil) { self._id = id.map(AnyString.init) - self.model = model - self._query_timezone = query_timezone.map(AnyString.init) - self.readonly = readonly - self._refresh_interval = refresh_interval.map(AnyString.init) - self._refresh_interval_to_i = refresh_interval_to_i.map(AnyInt.init) - self.folder = folder - self._title = title.map(AnyString.init) - self._user_id = user_id.map(AnyInt.init) - self._slug = slug.map(AnyString.init) - self._preferred_viewer = preferred_viewer.map(AnyString.init) - self.space = space - self.alert_sync_with_dashboard_filter_enabled = alert_sync_with_dashboard_filter_enabled - self._background_color = background_color.map(AnyString.init) - self.created_at = created_at - self.crossfilter_enabled = crossfilter_enabled - self.dashboard_elements = dashboard_elements - self.dashboard_filters = dashboard_filters - self.dashboard_layouts = dashboard_layouts - self.deleted = deleted - self.deleted_at = deleted_at - self._deleter_id = deleter_id.map(AnyInt.init) - self.edit_uri = edit_uri - self.enable_viz_full_screen = enable_viz_full_screen - self._favorite_count = favorite_count.map(AnyInt.init) - self.filters_bar_collapsed = filters_bar_collapsed - self.filters_location_top = filters_location_top - self.last_accessed_at = last_accessed_at - self.last_viewed_at = last_viewed_at - self.updated_at = updated_at - self._last_updater_id = last_updater_id.map(AnyInt.init) - self._last_updater_name = last_updater_name.map(AnyString.init) - self._user_name = user_name.map(AnyString.init) - self._load_configuration = load_configuration.map(AnyString.init) - self._lookml_link_id = lookml_link_id.map(AnyString.init) - self.show_filters_bar = show_filters_bar - self.show_title = show_title - self._space_id = space_id.map(AnyString.init) - self._folder_id = folder_id.map(AnyString.init) - self._text_tile_text_color = text_tile_text_color.map(AnyString.init) - self._tile_background_color = tile_background_color.map(AnyString.init) - self._tile_text_color = tile_text_color.map(AnyString.init) - self._title_color = title_color.map(AnyString.init) - self._view_count = view_count.map(AnyInt.init) - self.appearance = appearance + self._label = label.map(AnyString.init) + self._type = type.map(AnyString.init) + self.stops = stops } } -public struct DashboardAggregateTableLookml: SDKModel { +public struct CostEstimate: SDKModel { private enum CodingKeys : String, CodingKey { - case _dashboard_id = "dashboard_id" - case _aggregate_table_lookml = "aggregate_table_lookml" + case _cost = "cost" + case cache_hit + case _cost_unit = "cost_unit" + case _message = "message" } - private var _dashboard_id: AnyString? + private var _cost: AnyInt? /** - * Dashboard Id (read-only) + * Cost of SQL statement (read-only) */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + public var cost: Int64? { + get { _cost?.value } + set { _cost = newValue.map(AnyInt.init) } } - private var _aggregate_table_lookml: AnyString? /** - * Aggregate Table LookML (read-only) + * Does the result come from the cache? (read-only) */ - public var aggregate_table_lookml: String? { - get { _aggregate_table_lookml?.value } - set { _aggregate_table_lookml = newValue.map(AnyString.init) } + public var cache_hit: Bool? + + private var _cost_unit: AnyString? + /** + * Cost measurement size (read-only) + */ + public var cost_unit: String? { + get { _cost_unit?.value } + set { _cost_unit = newValue.map(AnyString.init) } } - public init(dashboard_id: String? = nil, aggregate_table_lookml: String? = nil) { - self._dashboard_id = dashboard_id.map(AnyString.init) - self._aggregate_table_lookml = aggregate_table_lookml.map(AnyString.init) + private var _message: AnyString? + /** + * Human-friendly message (read-only) + */ + public var message: String? { + get { _message?.value } + set { _message = newValue.map(AnyString.init) } + } + + public init(cost: Int64? = nil, cache_hit: Bool? = nil, cost_unit: String? = nil, message: String? = nil) { + self._cost = cost.map(AnyInt.init) + self.cache_hit = cache_hit + self._cost_unit = cost_unit.map(AnyString.init) + self._message = message.map(AnyString.init) } } -public struct DashboardAppearance: SDKModel { +/** + * WARNING: no writeable properties found for POST, PUT, or PATCH + */ +public struct CreateCostEstimate: SDKModel { private enum CodingKeys : String, CodingKey { - case _page_side_margins = "page_side_margins" - case _page_background_color = "page_background_color" - case _tile_title_alignment = "tile_title_alignment" - case _tile_space_between = "tile_space_between" - case _tile_background_color = "tile_background_color" - case tile_shadow - case _key_color = "key_color" + case _sql = "sql" } - private var _page_side_margins: AnyInt? + private var _sql: AnyString? /** - * Page margin (side) width + * SQL statement to estimate (read-only) */ - public var page_side_margins: Int64? { - get { _page_side_margins?.value } - set { _page_side_margins = newValue.map(AnyInt.init) } + public var sql: String? { + get { _sql?.value } + set { _sql = newValue.map(AnyString.init) } } - private var _page_background_color: AnyString? + public init(sql: String? = nil) { + self._sql = sql.map(AnyString.init) + } + +} + +public struct CreateCredentialsApi3: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _id = "id" + case _client_id = "client_id" + case _created_at = "created_at" + case is_disabled + case _type = "type" + case _client_secret = "client_secret" + case _url = "url" + } /** - * Background color for the dashboard + * Operations the current user is able to perform on this object (read-only) */ - public var page_background_color: String? { - get { _page_background_color?.value } - set { _page_background_color = newValue.map(AnyString.init) } + public var can: StringDictionary? + + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _tile_title_alignment: AnyString? + private var _client_id: AnyString? /** - * Title alignment on dashboard tiles + * API key client_id (read-only) */ - public var tile_title_alignment: String? { - get { _tile_title_alignment?.value } - set { _tile_title_alignment = newValue.map(AnyString.init) } + public var client_id: String? { + get { _client_id?.value } + set { _client_id = newValue.map(AnyString.init) } } - private var _tile_space_between: AnyInt? + private var _created_at: AnyString? /** - * Space between tiles + * Timestamp for the creation of this credential (read-only) */ - public var tile_space_between: Int64? { - get { _tile_space_between?.value } - set { _tile_space_between = newValue.map(AnyInt.init) } + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } } - private var _tile_background_color: AnyString? /** - * Background color for tiles + * Has this credential been disabled? (read-only) */ - public var tile_background_color: String? { - get { _tile_background_color?.value } - set { _tile_background_color = newValue.map(AnyString.init) } + public var is_disabled: Bool? + + private var _type: AnyString? + /** + * Short name for the type of this kind of credential (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } + private var _client_secret: AnyString? /** - * Tile shadow on/off + * API key client_secret (read-only) */ - public var tile_shadow: Bool? + public var client_secret: String? { + get { _client_secret?.value } + set { _client_secret = newValue.map(AnyString.init) } + } - private var _key_color: AnyString? + private var _url: AnyString? /** - * Key color + * Link to get this item (read-only) */ - public var key_color: String? { - get { _key_color?.value } - set { _key_color = newValue.map(AnyString.init) } + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } } - public init(page_side_margins: Int64? = nil, page_background_color: String? = nil, tile_title_alignment: String? = nil, tile_space_between: Int64? = nil, tile_background_color: String? = nil, tile_shadow: Bool? = nil, key_color: String? = nil) { - self._page_side_margins = page_side_margins.map(AnyInt.init) - self._page_background_color = page_background_color.map(AnyString.init) - self._tile_title_alignment = tile_title_alignment.map(AnyString.init) - self._tile_space_between = tile_space_between.map(AnyInt.init) - self._tile_background_color = tile_background_color.map(AnyString.init) - self.tile_shadow = tile_shadow - self._key_color = key_color.map(AnyString.init) + public init(can: StringDictionary? = nil, id: String? = nil, client_id: String? = nil, created_at: String? = nil, is_disabled: Bool? = nil, type: String? = nil, client_secret: String? = nil, url: String? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self._client_id = client_id.map(AnyString.init) + self._created_at = created_at.map(AnyString.init) + self.is_disabled = is_disabled + self._type = type.map(AnyString.init) + self._client_secret = client_secret.map(AnyString.init) + self._url = url.map(AnyString.init) } } -public struct DashboardBase: SDKModel { +public struct CreateDashboardFilter: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _content_favorite_id = "content_favorite_id" - case _content_metadata_id = "content_metadata_id" - case _description = "description" - case hidden case _id = "id" - case model - case _query_timezone = "query_timezone" - case readonly - case _refresh_interval = "refresh_interval" - case _refresh_interval_to_i = "refresh_interval_to_i" - case folder + case _dashboard_id = "dashboard_id" + case _name = "name" + case _title = "title" + case _type = "type" + case _default_value = "default_value" + case _model = "model" + case _explore = "explore" + case _dimension = "dimension" + case field + case _row = "row" + case _listens_to_filters = "listens_to_filters" + case allow_multiple_values + case required + case ui_config + } + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + private var _dashboard_id: AnyString + /** + * Id of Dashboard + */ + public var dashboard_id: String { + get { _dashboard_id.value } + set { _dashboard_id = AnyString.init(newValue) } + } + + private var _name: AnyString + /** + * Name of filter + */ + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } + } + + private var _title: AnyString + /** + * Title of filter + */ + public var title: String { + get { _title.value } + set { _title = AnyString.init(newValue) } + } + + private var _type: AnyString + /** + * Type of filter: one of date, number, string, or field + */ + public var type: String { + get { _type.value } + set { _type = AnyString.init(newValue) } + } + + private var _default_value: AnyString? + /** + * Default value of filter + */ + public var default_value: String? { + get { _default_value?.value } + set { _default_value = newValue.map(AnyString.init) } + } + + private var _model: AnyString? + /** + * Model of filter (required if type = field) + */ + public var model: String? { + get { _model?.value } + set { _model = newValue.map(AnyString.init) } + } + + private var _explore: AnyString? + /** + * Explore of filter (required if type = field) + */ + public var explore: String? { + get { _explore?.value } + set { _explore = newValue.map(AnyString.init) } + } + + private var _dimension: AnyString? + /** + * Dimension of filter (required if type = field) + */ + public var dimension: String? { + get { _dimension?.value } + set { _dimension = newValue.map(AnyString.init) } + } + + /** + * Field information (read-only) + */ + public var field: StringDictionary? + + private var _row: AnyInt? + /** + * Display order of this filter relative to other filters + */ + public var row: Int64? { + get { _row?.value } + set { _row = newValue.map(AnyInt.init) } + } + + private var _listens_to_filters: [AnyString]? + /** + * Array of listeners for faceted filters + */ + public var listens_to_filters: [String]? { + get { if let v = _listens_to_filters { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } } + } + + /** + * Whether the filter allows multiple filter values (deprecated in the latest version of dashboards) + */ + public var allow_multiple_values: Bool? + + /** + * Whether the filter requires a value to run the dashboard + */ + public var required: Bool? + + /** + * The visual configuration for this filter. Used to set up how the UI for this filter should appear. + */ + public var ui_config: StringDictionary? + + public init(id: String? = nil, dashboard_id: String, name: String, title: String, type: String, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil, field: StringDictionary? = nil, row: Int64? = nil, listens_to_filters: [String]? = nil, allow_multiple_values: Bool? = nil, required: Bool? = nil, ui_config: StringDictionary? = nil) { + self._id = id.map(AnyString.init) + self._dashboard_id = AnyString.init(dashboard_id) + self._name = AnyString.init(name) + self._title = AnyString.init(title) + self._type = AnyString.init(type) + self._default_value = default_value.map(AnyString.init) + self._model = model.map(AnyString.init) + self._explore = explore.map(AnyString.init) + self._dimension = dimension.map(AnyString.init) + self.field = field + self._row = row.map(AnyInt.init) + if let v = listens_to_filters { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } + self.allow_multiple_values = allow_multiple_values + self.required = required + self.ui_config = ui_config + } + + public init(id: String? = nil, _ dashboard_id: String, _ name: String, _ title: String, _ type: String, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil, field: StringDictionary? = nil, row: Int64? = nil, listens_to_filters: [String]? = nil, allow_multiple_values: Bool? = nil, required: Bool? = nil, ui_config: StringDictionary? = nil) { + self.init(id: id, dashboard_id: dashboard_id, name: name, title: title, type: type, default_value: default_value, model: model, explore: explore, dimension: dimension, field: field, row: row, listens_to_filters: listens_to_filters, allow_multiple_values: allow_multiple_values, required: required, ui_config: ui_config) + } + +} + +public struct CreateDashboardRenderTask: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _dashboard_filters = "dashboard_filters" + case _dashboard_style = "dashboard_style" + } + private var _dashboard_filters: AnyString? + /** + * Filter values to apply to the dashboard queries, in URL query format + */ + public var dashboard_filters: String? { + get { _dashboard_filters?.value } + set { _dashboard_filters = newValue.map(AnyString.init) } + } + + private var _dashboard_style: AnyString? + /** + * Dashboard layout style: single_column or tiled + */ + public var dashboard_style: String? { + get { _dashboard_style?.value } + set { _dashboard_style = newValue.map(AnyString.init) } + } + + public init(dashboard_filters: String? = nil, dashboard_style: String? = nil) { + self._dashboard_filters = dashboard_filters.map(AnyString.init) + self._dashboard_style = dashboard_style.map(AnyString.init) + } + +} + +public struct CreateEmbedUserRequest: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _external_user_id = "external_user_id" + } + private var _external_user_id: AnyString + public var external_user_id: String { + get { _external_user_id.value } + set { _external_user_id = AnyString.init(newValue) } + } + + public init(external_user_id: String) { + self._external_user_id = AnyString.init(external_user_id) + } + + public init(_ external_user_id: String) { + self.init(external_user_id: external_user_id) + } + +} + +public struct CreateFolder: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _parent_id = "parent_id" + } + private var _name: AnyString + /** + * Unique Name + */ + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } + } + + private var _parent_id: AnyString + /** + * Id of Parent. If the parent id is null, this is a root-level entry + */ + public var parent_id: String { + get { _parent_id.value } + set { _parent_id = AnyString.init(newValue) } + } + + public init(name: String, parent_id: String) { + self._name = AnyString.init(name) + self._parent_id = AnyString.init(parent_id) + } + + public init(_ name: String, _ parent_id: String) { + self.init(name: name, parent_id: parent_id) + } + +} + +public struct CreateOAuthApplicationUserStateRequest: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _user_id = "user_id" + case _oauth_application_id = "oauth_application_id" + case _access_token = "access_token" + case access_token_expires_at + case _refresh_token = "refresh_token" + case refresh_token_expires_at + } + private var _user_id: AnyString + public var user_id: String { + get { _user_id.value } + set { _user_id = AnyString.init(newValue) } + } + + private var _oauth_application_id: AnyString + public var oauth_application_id: String { + get { _oauth_application_id.value } + set { _oauth_application_id = AnyString.init(newValue) } + } + + private var _access_token: AnyString + public var access_token: String { + get { _access_token.value } + set { _access_token = AnyString.init(newValue) } + } + + public var access_token_expires_at: Date + + private var _refresh_token: AnyString? + public var refresh_token: String? { + get { _refresh_token?.value } + set { _refresh_token = newValue.map(AnyString.init) } + } + + public var refresh_token_expires_at: Date? + + public init(user_id: String, oauth_application_id: String, access_token: String, access_token_expires_at: Date, refresh_token: String? = nil, refresh_token_expires_at: Date? = nil) { + self._user_id = AnyString.init(user_id) + self._oauth_application_id = AnyString.init(oauth_application_id) + self._access_token = AnyString.init(access_token) + self.access_token_expires_at = access_token_expires_at + self._refresh_token = refresh_token.map(AnyString.init) + self.refresh_token_expires_at = refresh_token_expires_at + } + + public init(_ user_id: String, _ oauth_application_id: String, _ access_token: String, _ access_token_expires_at: Date, refresh_token: String? = nil, refresh_token_expires_at: Date? = nil) { + self.init(user_id: user_id, oauth_application_id: oauth_application_id, access_token: access_token, access_token_expires_at: access_token_expires_at, refresh_token: refresh_token, refresh_token_expires_at: refresh_token_expires_at) + } + +} + +public struct CreateOAuthApplicationUserStateResponse: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _user_id = "user_id" + case _oauth_application_id = "oauth_application_id" + } + private var _user_id: AnyString + /** + * User Id (read-only) + */ + public var user_id: String { + get { _user_id.value } + set { _user_id = AnyString.init(newValue) } + } + + private var _oauth_application_id: AnyString + /** + * OAuth Application ID (read-only) + */ + public var oauth_application_id: String { + get { _oauth_application_id.value } + set { _oauth_application_id = AnyString.init(newValue) } + } + + public init(user_id: String, oauth_application_id: String) { + self._user_id = AnyString.init(user_id) + self._oauth_application_id = AnyString.init(oauth_application_id) + } + + public init(_ user_id: String, _ oauth_application_id: String) { + self.init(user_id: user_id, oauth_application_id: oauth_application_id) + } + +} + +public struct CreateQueryTask: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _query_id = "query_id" + case result_format + case _source = "source" + case deferred + case _look_id = "look_id" + case _dashboard_id = "dashboard_id" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _query_id: AnyString + /** + * Id of query to run + */ + public var query_id: String { + get { _query_id.value } + set { _query_id = AnyString.init(newValue) } + } + + /** + * Desired async query result format. Valid values are: "inline_json", "json", "json_detail", "json_fe", "json_bi", "csv", "html", "md", "txt", "xlsx", "gsxml", "sql". + */ + public var result_format: ResultFormat + + private var _source: AnyString? + /** + * Source of query task + */ + public var source: String? { + get { _source?.value } + set { _source = newValue.map(AnyString.init) } + } + + /** + * Create the task but defer execution + */ + public var deferred: Bool? + + private var _look_id: AnyString? + /** + * Id of look associated with query. + */ + public var look_id: String? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyString.init) } + } + + private var _dashboard_id: AnyString? + /** + * Id of dashboard associated with query. + */ + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, query_id: String, result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: String? = nil, dashboard_id: String? = nil) { + self.can = can + self._query_id = AnyString.init(query_id) + self.result_format = result_format + self._source = source.map(AnyString.init) + self.deferred = deferred + self._look_id = look_id.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + } + + public init(can: StringDictionary? = nil, _ query_id: String, _ result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: String? = nil, dashboard_id: String? = nil) { + self.init(can: can, query_id: query_id, result_format: result_format, source: source, deferred: deferred, look_id: look_id, dashboard_id: dashboard_id) + } + +} + +public struct CredentialsApi3: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _id = "id" + case _client_id = "client_id" + case _created_at = "created_at" + case is_disabled + case _type = "type" + case _url = "url" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + private var _client_id: AnyString? + /** + * API key client_id (read-only) + */ + public var client_id: String? { + get { _client_id?.value } + set { _client_id = newValue.map(AnyString.init) } + } + + private var _created_at: AnyString? + /** + * Timestamp for the creation of this credential (read-only) + */ + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } + } + + /** + * Has this credential been disabled? (read-only) + */ + public var is_disabled: Bool? + + private var _type: AnyString? + /** + * Short name for the type of this kind of credential (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + + private var _url: AnyString? + /** + * Link to get this item (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, id: String? = nil, client_id: String? = nil, created_at: String? = nil, is_disabled: Bool? = nil, type: String? = nil, url: String? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self._client_id = client_id.map(AnyString.init) + self._created_at = created_at.map(AnyString.init) + self.is_disabled = is_disabled + self._type = type.map(AnyString.init) + self._url = url.map(AnyString.init) + } + +} + +public struct CredentialsEmail: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _created_at = "created_at" + case _email = "email" + case forced_password_reset_at_next_login + case _user_id = "user_id" + case is_disabled + case _logged_in_at = "logged_in_at" + case _password_reset_url = "password_reset_url" + case _account_setup_url = "account_setup_url" + case _type = "type" + case _url = "url" + case _user_url = "user_url" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _created_at: AnyString? + /** + * Timestamp for the creation of this credential (read-only) + */ + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } + } + + private var _email: AnyString? + /** + * EMail address used for user login + */ + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } + } + + /** + * Force the user to change their password upon their next login + */ + public var forced_password_reset_at_next_login: Bool? + + private var _user_id: AnyString? + /** + * Unique Id of the user (read-only) + */ + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } + } + + /** + * Has this credential been disabled? (read-only) + */ + public var is_disabled: Bool? + + private var _logged_in_at: AnyString? + /** + * Timestamp for most recent login using credential (read-only) + */ + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } + } + + private var _password_reset_url: AnyString? + /** + * Url with one-time use secret token that the user can use to reset password (read-only) + */ + public var password_reset_url: String? { + get { _password_reset_url?.value } + set { _password_reset_url = newValue.map(AnyString.init) } + } + + private var _account_setup_url: AnyString? + /** + * Url with one-time use secret token that the user can use to setup account (read-only) + */ + public var account_setup_url: String? { + get { _account_setup_url?.value } + set { _account_setup_url = newValue.map(AnyString.init) } + } + + private var _type: AnyString? + /** + * Short name for the type of this kind of credential (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + + private var _url: AnyString? + /** + * Link to get this item (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + + private var _user_url: AnyString? + /** + * Link to get this user (read-only) + */ + public var user_url: String? { + get { _user_url?.value } + set { _user_url = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, forced_password_reset_at_next_login: Bool? = nil, user_id: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, password_reset_url: String? = nil, account_setup_url: String? = nil, type: String? = nil, url: String? = nil, user_url: String? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._email = email.map(AnyString.init) + self.forced_password_reset_at_next_login = forced_password_reset_at_next_login + self._user_id = user_id.map(AnyString.init) + self.is_disabled = is_disabled + self._logged_in_at = logged_in_at.map(AnyString.init) + self._password_reset_url = password_reset_url.map(AnyString.init) + self._account_setup_url = account_setup_url.map(AnyString.init) + self._type = type.map(AnyString.init) + self._url = url.map(AnyString.init) + self._user_url = user_url.map(AnyString.init) + } + +} + +public struct CredentialsEmailSearch: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _created_at = "created_at" + case _email = "email" + case forced_password_reset_at_next_login + case _user_id = "user_id" + case is_disabled + case _logged_in_at = "logged_in_at" + case _password_reset_url = "password_reset_url" + case _account_setup_url = "account_setup_url" + case _type = "type" + case _url = "url" + case _user_url = "user_url" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _created_at: AnyString? + /** + * Timestamp for the creation of this credential (read-only) + */ + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } + } + + private var _email: AnyString? + /** + * EMail address used for user login + */ + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } + } + + /** + * Force the user to change their password upon their next login + */ + public var forced_password_reset_at_next_login: Bool? + + private var _user_id: AnyString? + /** + * Unique Id of the user (read-only) + */ + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } + } + + /** + * Has this credential been disabled? (read-only) + */ + public var is_disabled: Bool? + + private var _logged_in_at: AnyString? + /** + * Timestamp for most recent login using credential (read-only) + */ + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } + } + + private var _password_reset_url: AnyString? + /** + * Url with one-time use secret token that the user can use to reset password (read-only) + */ + public var password_reset_url: String? { + get { _password_reset_url?.value } + set { _password_reset_url = newValue.map(AnyString.init) } + } + + private var _account_setup_url: AnyString? + /** + * Url with one-time use secret token that the user can use to setup account (read-only) + */ + public var account_setup_url: String? { + get { _account_setup_url?.value } + set { _account_setup_url = newValue.map(AnyString.init) } + } + + private var _type: AnyString? + /** + * Short name for the type of this kind of credential (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + + private var _url: AnyString? + /** + * Link to get this item (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + + private var _user_url: AnyString? + /** + * Link to get this user (read-only) + */ + public var user_url: String? { + get { _user_url?.value } + set { _user_url = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, forced_password_reset_at_next_login: Bool? = nil, user_id: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, password_reset_url: String? = nil, account_setup_url: String? = nil, type: String? = nil, url: String? = nil, user_url: String? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._email = email.map(AnyString.init) + self.forced_password_reset_at_next_login = forced_password_reset_at_next_login + self._user_id = user_id.map(AnyString.init) + self.is_disabled = is_disabled + self._logged_in_at = logged_in_at.map(AnyString.init) + self._password_reset_url = password_reset_url.map(AnyString.init) + self._account_setup_url = account_setup_url.map(AnyString.init) + self._type = type.map(AnyString.init) + self._url = url.map(AnyString.init) + self._user_url = user_url.map(AnyString.init) + } + +} + +public struct CredentialsEmbed: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _created_at = "created_at" + case _external_group_id = "external_group_id" + case _external_user_id = "external_user_id" + case _id = "id" + case is_disabled + case _logged_in_at = "logged_in_at" + case _type = "type" + case _url = "url" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _created_at: AnyString? + /** + * Timestamp for the creation of this credential (read-only) + */ + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } + } + + private var _external_group_id: AnyString? + /** + * Embedder's id for a group to which this user was added during the most recent login (read-only) + */ + public var external_group_id: String? { + get { _external_group_id?.value } + set { _external_group_id = newValue.map(AnyString.init) } + } + + private var _external_user_id: AnyString? + /** + * Embedder's unique id for the user (read-only) + */ + public var external_user_id: String? { + get { _external_user_id?.value } + set { _external_user_id = newValue.map(AnyString.init) } + } + + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + /** + * Has this credential been disabled? (read-only) + */ + public var is_disabled: Bool? + + private var _logged_in_at: AnyString? + /** + * Timestamp for most recent login using credential (read-only) + */ + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } + } + + private var _type: AnyString? + /** + * Short name for the type of this kind of credential (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + + private var _url: AnyString? + /** + * Link to get this item (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, created_at: String? = nil, external_group_id: String? = nil, external_user_id: String? = nil, id: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, type: String? = nil, url: String? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._external_group_id = external_group_id.map(AnyString.init) + self._external_user_id = external_user_id.map(AnyString.init) + self._id = id.map(AnyString.init) + self.is_disabled = is_disabled + self._logged_in_at = logged_in_at.map(AnyString.init) + self._type = type.map(AnyString.init) + self._url = url.map(AnyString.init) + } + +} + +public struct CredentialsGoogle: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _created_at = "created_at" + case _domain = "domain" + case _email = "email" + case _google_user_id = "google_user_id" + case is_disabled + case _logged_in_at = "logged_in_at" + case _type = "type" + case _url = "url" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _created_at: AnyString? + /** + * Timestamp for the creation of this credential (read-only) + */ + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } + } + + private var _domain: AnyString? + /** + * Google domain (read-only) + */ + public var domain: String? { + get { _domain?.value } + set { _domain = newValue.map(AnyString.init) } + } + + private var _email: AnyString? + /** + * EMail address (read-only) + */ + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } + } + + private var _google_user_id: AnyString? + /** + * Google's Unique ID for this user (read-only) + */ + public var google_user_id: String? { + get { _google_user_id?.value } + set { _google_user_id = newValue.map(AnyString.init) } + } + + /** + * Has this credential been disabled? (read-only) + */ + public var is_disabled: Bool? + + private var _logged_in_at: AnyString? + /** + * Timestamp for most recent login using credential (read-only) + */ + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } + } + + private var _type: AnyString? + /** + * Short name for the type of this kind of credential (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + + private var _url: AnyString? + /** + * Link to get this item (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, created_at: String? = nil, domain: String? = nil, email: String? = nil, google_user_id: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, type: String? = nil, url: String? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._domain = domain.map(AnyString.init) + self._email = email.map(AnyString.init) + self._google_user_id = google_user_id.map(AnyString.init) + self.is_disabled = is_disabled + self._logged_in_at = logged_in_at.map(AnyString.init) + self._type = type.map(AnyString.init) + self._url = url.map(AnyString.init) + } + +} + +public struct CredentialsLDAP: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _created_at = "created_at" + case _email = "email" + case is_disabled + case _ldap_dn = "ldap_dn" + case _ldap_id = "ldap_id" + case _logged_in_at = "logged_in_at" + case _type = "type" + case _url = "url" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _created_at: AnyString? + /** + * Timestamp for the creation of this credential (read-only) + */ + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } + } + + private var _email: AnyString? + /** + * EMail address (read-only) + */ + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } + } + + /** + * Has this credential been disabled? (read-only) + */ + public var is_disabled: Bool? + + private var _ldap_dn: AnyString? + /** + * LDAP Distinguished name for this user (as-of the last login) (read-only) + */ + public var ldap_dn: String? { + get { _ldap_dn?.value } + set { _ldap_dn = newValue.map(AnyString.init) } + } + + private var _ldap_id: AnyString? + /** + * LDAP Unique ID for this user (read-only) + */ + public var ldap_id: String? { + get { _ldap_id?.value } + set { _ldap_id = newValue.map(AnyString.init) } + } + + private var _logged_in_at: AnyString? + /** + * Timestamp for most recent login using credential (read-only) + */ + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } + } + + private var _type: AnyString? + /** + * Short name for the type of this kind of credential (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + + private var _url: AnyString? + /** + * Link to get this item (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, ldap_dn: String? = nil, ldap_id: String? = nil, logged_in_at: String? = nil, type: String? = nil, url: String? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._email = email.map(AnyString.init) + self.is_disabled = is_disabled + self._ldap_dn = ldap_dn.map(AnyString.init) + self._ldap_id = ldap_id.map(AnyString.init) + self._logged_in_at = logged_in_at.map(AnyString.init) + self._type = type.map(AnyString.init) + self._url = url.map(AnyString.init) + } + +} + +public struct CredentialsLookerOpenid: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _created_at = "created_at" + case _email = "email" + case is_disabled + case _logged_in_at = "logged_in_at" + case _logged_in_ip = "logged_in_ip" + case _type = "type" + case _url = "url" + case _user_url = "user_url" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _created_at: AnyString? + /** + * Timestamp for the creation of this credential (read-only) + */ + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } + } + + private var _email: AnyString? + /** + * EMail address used for user login (read-only) + */ + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } + } + + /** + * Has this credential been disabled? (read-only) + */ + public var is_disabled: Bool? + + private var _logged_in_at: AnyString? + /** + * Timestamp for most recent login using credential (read-only) + */ + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } + } + + private var _logged_in_ip: AnyString? + /** + * IP address of client for most recent login using credential (read-only) + */ + public var logged_in_ip: String? { + get { _logged_in_ip?.value } + set { _logged_in_ip = newValue.map(AnyString.init) } + } + + private var _type: AnyString? + /** + * Short name for the type of this kind of credential (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + + private var _url: AnyString? + /** + * Link to get this item (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + + private var _user_url: AnyString? + /** + * Link to get this user (read-only) + */ + public var user_url: String? { + get { _user_url?.value } + set { _user_url = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, logged_in_ip: String? = nil, type: String? = nil, url: String? = nil, user_url: String? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._email = email.map(AnyString.init) + self.is_disabled = is_disabled + self._logged_in_at = logged_in_at.map(AnyString.init) + self._logged_in_ip = logged_in_ip.map(AnyString.init) + self._type = type.map(AnyString.init) + self._url = url.map(AnyString.init) + self._user_url = user_url.map(AnyString.init) + } + +} + +public struct CredentialsOIDC: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _created_at = "created_at" + case _email = "email" + case is_disabled + case _logged_in_at = "logged_in_at" + case _oidc_user_id = "oidc_user_id" + case _type = "type" + case _url = "url" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _created_at: AnyString? + /** + * Timestamp for the creation of this credential (read-only) + */ + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } + } + + private var _email: AnyString? + /** + * EMail address (read-only) + */ + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } + } + + /** + * Has this credential been disabled? (read-only) + */ + public var is_disabled: Bool? + + private var _logged_in_at: AnyString? + /** + * Timestamp for most recent login using credential (read-only) + */ + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } + } + + private var _oidc_user_id: AnyString? + /** + * OIDC OP's Unique ID for this user (read-only) + */ + public var oidc_user_id: String? { + get { _oidc_user_id?.value } + set { _oidc_user_id = newValue.map(AnyString.init) } + } + + private var _type: AnyString? + /** + * Short name for the type of this kind of credential (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + + private var _url: AnyString? + /** + * Link to get this item (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, oidc_user_id: String? = nil, type: String? = nil, url: String? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._email = email.map(AnyString.init) + self.is_disabled = is_disabled + self._logged_in_at = logged_in_at.map(AnyString.init) + self._oidc_user_id = oidc_user_id.map(AnyString.init) + self._type = type.map(AnyString.init) + self._url = url.map(AnyString.init) + } + +} + +public struct CredentialsSaml: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _created_at = "created_at" + case _email = "email" + case is_disabled + case _logged_in_at = "logged_in_at" + case _saml_user_id = "saml_user_id" + case _type = "type" + case _url = "url" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _created_at: AnyString? + /** + * Timestamp for the creation of this credential (read-only) + */ + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } + } + + private var _email: AnyString? + /** + * EMail address (read-only) + */ + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } + } + + /** + * Has this credential been disabled? (read-only) + */ + public var is_disabled: Bool? + + private var _logged_in_at: AnyString? + /** + * Timestamp for most recent login using credential (read-only) + */ + public var logged_in_at: String? { + get { _logged_in_at?.value } + set { _logged_in_at = newValue.map(AnyString.init) } + } + + private var _saml_user_id: AnyString? + /** + * Saml IdP's Unique ID for this user (read-only) + */ + public var saml_user_id: String? { + get { _saml_user_id?.value } + set { _saml_user_id = newValue.map(AnyString.init) } + } + + private var _type: AnyString? + /** + * Short name for the type of this kind of credential (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + + private var _url: AnyString? + /** + * Link to get this item (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, created_at: String? = nil, email: String? = nil, is_disabled: Bool? = nil, logged_in_at: String? = nil, saml_user_id: String? = nil, type: String? = nil, url: String? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self._email = email.map(AnyString.init) + self.is_disabled = is_disabled + self._logged_in_at = logged_in_at.map(AnyString.init) + self._saml_user_id = saml_user_id.map(AnyString.init) + self._type = type.map(AnyString.init) + self._url = url.map(AnyString.init) + } + +} + +/** + * WARNING: no writeable properties found for POST, PUT, or PATCH + */ +public struct CredentialsTotp: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _created_at = "created_at" + case is_disabled + case _type = "type" + case verified + case _url = "url" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _created_at: AnyString? + /** + * Timestamp for the creation of this credential (read-only) + */ + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } + } + + /** + * Has this credential been disabled? (read-only) + */ + public var is_disabled: Bool? + + private var _type: AnyString? + /** + * Short name for the type of this kind of credential (read-only) + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + + /** + * User has verified (read-only) + */ + public var verified: Bool? + + private var _url: AnyString? + /** + * Link to get this item (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, created_at: String? = nil, is_disabled: Bool? = nil, type: String? = nil, verified: Bool? = nil, url: String? = nil) { + self.can = can + self._created_at = created_at.map(AnyString.init) + self.is_disabled = is_disabled + self._type = type.map(AnyString.init) + self.verified = verified + self._url = url.map(AnyString.init) + } + +} + +public struct CustomWelcomeEmail: SDKModel { + + private enum CodingKeys : String, CodingKey { + case enabled + case _content = "content" + case _subject = "subject" + case _header = "header" + } + /** + * If true, custom email content will replace the default body of welcome emails + */ + public var enabled: Bool? + + private var _content: AnyString? + /** + * The HTML to use as custom content for welcome emails. Script elements and other potentially dangerous markup will be removed. + */ + public var content: String? { + get { _content?.value } + set { _content = newValue.map(AnyString.init) } + } + + private var _subject: AnyString? + /** + * The text to appear in the email subject line. Only available with a whitelabel license and whitelabel_configuration.advanced_custom_welcome_email enabled. + */ + public var subject: String? { + get { _subject?.value } + set { _subject = newValue.map(AnyString.init) } + } + + private var _header: AnyString? + /** + * 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. + */ + public var header: String? { + get { _header?.value } + set { _header = newValue.map(AnyString.init) } + } + + public init(enabled: Bool? = nil, content: String? = nil, subject: String? = nil, header: String? = nil) { + self.enabled = enabled + self._content = content.map(AnyString.init) + self._subject = subject.map(AnyString.init) + self._header = header.map(AnyString.init) + } + +} + +public struct Dashboard: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _content_favorite_id = "content_favorite_id" + case _content_metadata_id = "content_metadata_id" + case _description = "description" + case hidden + case _id = "id" + case model + case _query_timezone = "query_timezone" + case readonly + case _refresh_interval = "refresh_interval" + case _refresh_interval_to_i = "refresh_interval_to_i" + case folder + case _title = "title" + case _user_id = "user_id" + case _slug = "slug" + case _preferred_viewer = "preferred_viewer" + case alert_sync_with_dashboard_filter_enabled + case _background_color = "background_color" + case created_at + case crossfilter_enabled + case dashboard_elements + case dashboard_filters + case dashboard_layouts + case deleted + case deleted_at + case _deleter_id = "deleter_id" + case _edit_uri = "edit_uri" + case enable_viz_full_screen + case _favorite_count = "favorite_count" + case filters_bar_collapsed + case filters_location_top + case last_accessed_at + case last_viewed_at + case updated_at + case _last_updater_id = "last_updater_id" + case _last_updater_name = "last_updater_name" + case _user_name = "user_name" + case _load_configuration = "load_configuration" + case _lookml_link_id = "lookml_link_id" + case show_filters_bar + case show_title + case _folder_id = "folder_id" + case _text_tile_text_color = "text_tile_text_color" + case _tile_background_color = "tile_background_color" + case _tile_text_color = "tile_text_color" + case _title_color = "title_color" + case _view_count = "view_count" + case appearance + case _url = "url" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _content_favorite_id: AnyString? + /** + * Content Favorite Id (read-only) + */ + public var content_favorite_id: String? { + get { _content_favorite_id?.value } + set { _content_favorite_id = newValue.map(AnyString.init) } + } + + private var _content_metadata_id: AnyString? + /** + * Id of content metadata (read-only) + */ + public var content_metadata_id: String? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyString.init) } + } + + private var _description: AnyString? + /** + * Description + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } + + /** + * Is Hidden + */ + public var hidden: Bool? + + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + public var model: LookModel? + + private var _query_timezone: AnyString? + /** + * Timezone in which the Dashboard will run by default. + */ + public var query_timezone: String? { + get { _query_timezone?.value } + set { _query_timezone = newValue.map(AnyString.init) } + } + + /** + * Is Read-only (read-only) + */ + public var readonly: Bool? + + private var _refresh_interval: AnyString? + /** + * Refresh Interval, as a time duration phrase like "2 hours 30 minutes". A number with no time units will be interpreted as whole seconds. + */ + public var refresh_interval: String? { + get { _refresh_interval?.value } + set { _refresh_interval = newValue.map(AnyString.init) } + } + + private var _refresh_interval_to_i: AnyInt? + /** + * Refresh Interval in milliseconds (read-only) + */ + public var refresh_interval_to_i: Int64? { + get { _refresh_interval_to_i?.value } + set { _refresh_interval_to_i = newValue.map(AnyInt.init) } + } + + public var folder: FolderBase? + + private var _title: AnyString? + /** + * Dashboard Title + */ + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } + } + + private var _user_id: AnyString? + /** + * Id of User (read-only) + */ + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } + } + + private var _slug: AnyString? + /** + * Content Metadata Slug + */ + public var slug: String? { + get { _slug?.value } + set { _slug = newValue.map(AnyString.init) } + } + + private var _preferred_viewer: AnyString? + /** + * The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) + */ + public var preferred_viewer: String? { + get { _preferred_viewer?.value } + set { _preferred_viewer = newValue.map(AnyString.init) } + } + + /** + * Enables alerts to keep in sync with dashboard filter changes + */ + public var alert_sync_with_dashboard_filter_enabled: Bool? + + private var _background_color: AnyString? + /** + * Background color + */ + public var background_color: String? { + get { _background_color?.value } + set { _background_color = newValue.map(AnyString.init) } + } + + /** + * Time that the Dashboard was created. (read-only) + */ + public var created_at: Date? + + /** + * Enables crossfiltering in dashboards - only available in dashboards-next (beta) + */ + public var crossfilter_enabled: Bool? + + /** + * Elements (read-only) + */ + public var dashboard_elements: [DashboardElement]? + + /** + * Filters (read-only) + */ + public var dashboard_filters: [DashboardFilter]? + + /** + * Layouts (read-only) + */ + public var dashboard_layouts: [DashboardLayout]? + + /** + * Whether or not a dashboard is 'soft' deleted. + */ + public var deleted: Bool? + + /** + * Time that the Dashboard was 'soft' deleted. (read-only) + */ + public var deleted_at: Date? + + private var _deleter_id: AnyString? + /** + * Id of User that 'soft' deleted the dashboard. (read-only) + */ + public var deleter_id: String? { + get { _deleter_id?.value } + set { _deleter_id = newValue.map(AnyString.init) } + } + + private var _edit_uri: AnyString? + /** + * Relative path of URI of LookML file to edit the dashboard (LookML dashboard only). (read-only) + */ + public var edit_uri: String? { + get { _edit_uri?.value } + set { _edit_uri = newValue.map(AnyString.init) } + } + + /** + * Allow visualizations to be viewed in full screen mode + */ + public var enable_viz_full_screen: Bool? + + private var _favorite_count: AnyInt? + /** + * Number of times favorited (read-only) + */ + public var favorite_count: Int64? { + get { _favorite_count?.value } + set { _favorite_count = newValue.map(AnyInt.init) } + } + + /** + * Sets the default state of the filters bar to collapsed or open + */ + public var filters_bar_collapsed: Bool? + + /** + * Sets the default state of the filters location to top(true) or right(false) + */ + public var filters_location_top: Bool? + + /** + * Time the dashboard was last accessed (read-only) + */ + public var last_accessed_at: Date? + + /** + * Time last viewed in the Looker web UI (read-only) + */ + public var last_viewed_at: Date? + + /** + * Time that the Dashboard was most recently updated. (read-only) + */ + public var updated_at: Date? + + private var _last_updater_id: AnyString? + /** + * Id of User that most recently updated the dashboard. (read-only) + */ + public var last_updater_id: String? { + get { _last_updater_id?.value } + set { _last_updater_id = newValue.map(AnyString.init) } + } + + private var _last_updater_name: AnyString? + /** + * Name of User that most recently updated the dashboard. (read-only) + */ + public var last_updater_name: String? { + get { _last_updater_name?.value } + set { _last_updater_name = newValue.map(AnyString.init) } + } + + private var _user_name: AnyString? + /** + * Name of User that created the dashboard. (read-only) + */ + public var user_name: String? { + get { _user_name?.value } + set { _user_name = newValue.map(AnyString.init) } + } + + private var _load_configuration: AnyString? + /** + * configuration option that governs how dashboard loading will happen. + */ + public var load_configuration: String? { + get { _load_configuration?.value } + set { _load_configuration = newValue.map(AnyString.init) } + } + + private var _lookml_link_id: AnyString? + /** + * Links this dashboard to a particular LookML dashboard such that calling a **sync** operation on that LookML dashboard will update this dashboard to match. + */ + public var lookml_link_id: String? { + get { _lookml_link_id?.value } + set { _lookml_link_id = newValue.map(AnyString.init) } + } + + /** + * 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://cloud.google.com/looker/docs/r/api/control-access) + */ + public var show_filters_bar: Bool? + + /** + * Show title + */ + public var show_title: Bool? + + private var _folder_id: AnyString? + /** + * Id of folder + */ + public var folder_id: String? { + get { _folder_id?.value } + set { _folder_id = newValue.map(AnyString.init) } + } + + private var _text_tile_text_color: AnyString? + /** + * Color of text on text tiles + */ + public var text_tile_text_color: String? { + get { _text_tile_text_color?.value } + set { _text_tile_text_color = newValue.map(AnyString.init) } + } + + private var _tile_background_color: AnyString? + /** + * Tile background color + */ + public var tile_background_color: String? { + get { _tile_background_color?.value } + set { _tile_background_color = newValue.map(AnyString.init) } + } + + private var _tile_text_color: AnyString? + /** + * Tile text color + */ + public var tile_text_color: String? { + get { _tile_text_color?.value } + set { _tile_text_color = newValue.map(AnyString.init) } + } + + private var _title_color: AnyString? + /** + * Title color + */ + public var title_color: String? { + get { _title_color?.value } + set { _title_color = newValue.map(AnyString.init) } + } + + private var _view_count: AnyInt? + /** + * Number of times viewed in the Looker web UI (read-only) + */ + public var view_count: Int64? { + get { _view_count?.value } + set { _view_count = newValue.map(AnyInt.init) } + } + + public var appearance: DashboardAppearance? + + private var _url: AnyString? + /** + * Relative URL of the dashboard (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, content_favorite_id: String? = nil, content_metadata_id: String? = nil, description: String? = nil, hidden: Bool? = nil, id: String? = nil, model: LookModel? = nil, query_timezone: String? = nil, readonly: Bool? = nil, refresh_interval: String? = nil, refresh_interval_to_i: Int64? = nil, folder: FolderBase? = nil, title: String? = nil, user_id: String? = nil, slug: String? = nil, preferred_viewer: String? = nil, alert_sync_with_dashboard_filter_enabled: Bool? = nil, background_color: String? = nil, created_at: Date? = nil, crossfilter_enabled: Bool? = nil, dashboard_elements: [DashboardElement]? = nil, dashboard_filters: [DashboardFilter]? = nil, dashboard_layouts: [DashboardLayout]? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: String? = nil, edit_uri: String? = nil, enable_viz_full_screen: Bool? = nil, favorite_count: Int64? = nil, filters_bar_collapsed: Bool? = nil, filters_location_top: Bool? = nil, last_accessed_at: Date? = nil, last_viewed_at: Date? = nil, updated_at: Date? = nil, last_updater_id: String? = nil, last_updater_name: String? = nil, user_name: String? = nil, load_configuration: String? = nil, lookml_link_id: String? = nil, show_filters_bar: Bool? = nil, show_title: Bool? = nil, folder_id: String? = nil, text_tile_text_color: String? = nil, tile_background_color: String? = nil, tile_text_color: String? = nil, title_color: String? = nil, view_count: Int64? = nil, appearance: DashboardAppearance? = nil, url: String? = nil) { + self.can = can + self._content_favorite_id = content_favorite_id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) + self._description = description.map(AnyString.init) + self.hidden = hidden + self._id = id.map(AnyString.init) + self.model = model + self._query_timezone = query_timezone.map(AnyString.init) + self.readonly = readonly + self._refresh_interval = refresh_interval.map(AnyString.init) + self._refresh_interval_to_i = refresh_interval_to_i.map(AnyInt.init) + self.folder = folder + self._title = title.map(AnyString.init) + self._user_id = user_id.map(AnyString.init) + self._slug = slug.map(AnyString.init) + self._preferred_viewer = preferred_viewer.map(AnyString.init) + self.alert_sync_with_dashboard_filter_enabled = alert_sync_with_dashboard_filter_enabled + self._background_color = background_color.map(AnyString.init) + self.created_at = created_at + self.crossfilter_enabled = crossfilter_enabled + self.dashboard_elements = dashboard_elements + self.dashboard_filters = dashboard_filters + self.dashboard_layouts = dashboard_layouts + self.deleted = deleted + self.deleted_at = deleted_at + self._deleter_id = deleter_id.map(AnyString.init) + self._edit_uri = edit_uri.map(AnyString.init) + self.enable_viz_full_screen = enable_viz_full_screen + self._favorite_count = favorite_count.map(AnyInt.init) + self.filters_bar_collapsed = filters_bar_collapsed + self.filters_location_top = filters_location_top + self.last_accessed_at = last_accessed_at + self.last_viewed_at = last_viewed_at + self.updated_at = updated_at + self._last_updater_id = last_updater_id.map(AnyString.init) + self._last_updater_name = last_updater_name.map(AnyString.init) + self._user_name = user_name.map(AnyString.init) + self._load_configuration = load_configuration.map(AnyString.init) + self._lookml_link_id = lookml_link_id.map(AnyString.init) + self.show_filters_bar = show_filters_bar + self.show_title = show_title + self._folder_id = folder_id.map(AnyString.init) + self._text_tile_text_color = text_tile_text_color.map(AnyString.init) + self._tile_background_color = tile_background_color.map(AnyString.init) + self._tile_text_color = tile_text_color.map(AnyString.init) + self._title_color = title_color.map(AnyString.init) + self._view_count = view_count.map(AnyInt.init) + self.appearance = appearance + self._url = url.map(AnyString.init) + } + +} + +public struct DashboardAggregateTableLookml: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _dashboard_id = "dashboard_id" + case _aggregate_table_lookml = "aggregate_table_lookml" + } + private var _dashboard_id: AnyString? + /** + * Dashboard Id (read-only) + */ + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } + } + + private var _aggregate_table_lookml: AnyString? + /** + * Aggregate Table LookML (read-only) + */ + public var aggregate_table_lookml: String? { + get { _aggregate_table_lookml?.value } + set { _aggregate_table_lookml = newValue.map(AnyString.init) } + } + + public init(dashboard_id: String? = nil, aggregate_table_lookml: String? = nil) { + self._dashboard_id = dashboard_id.map(AnyString.init) + self._aggregate_table_lookml = aggregate_table_lookml.map(AnyString.init) + } + +} + +public struct DashboardAppearance: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _page_side_margins = "page_side_margins" + case _page_background_color = "page_background_color" + case _tile_title_alignment = "tile_title_alignment" + case _tile_space_between = "tile_space_between" + case _tile_background_color = "tile_background_color" + case tile_shadow + case _key_color = "key_color" + } + private var _page_side_margins: AnyInt? + /** + * Page margin (side) width + */ + public var page_side_margins: Int64? { + get { _page_side_margins?.value } + set { _page_side_margins = newValue.map(AnyInt.init) } + } + + private var _page_background_color: AnyString? + /** + * Background color for the dashboard + */ + public var page_background_color: String? { + get { _page_background_color?.value } + set { _page_background_color = newValue.map(AnyString.init) } + } + + private var _tile_title_alignment: AnyString? + /** + * Title alignment on dashboard tiles + */ + public var tile_title_alignment: String? { + get { _tile_title_alignment?.value } + set { _tile_title_alignment = newValue.map(AnyString.init) } + } + + private var _tile_space_between: AnyInt? + /** + * Space between tiles + */ + public var tile_space_between: Int64? { + get { _tile_space_between?.value } + set { _tile_space_between = newValue.map(AnyInt.init) } + } + + private var _tile_background_color: AnyString? + /** + * Background color for tiles + */ + public var tile_background_color: String? { + get { _tile_background_color?.value } + set { _tile_background_color = newValue.map(AnyString.init) } + } + + /** + * Tile shadow on/off + */ + public var tile_shadow: Bool? + + private var _key_color: AnyString? + /** + * Key color + */ + public var key_color: String? { + get { _key_color?.value } + set { _key_color = newValue.map(AnyString.init) } + } + + public init(page_side_margins: Int64? = nil, page_background_color: String? = nil, tile_title_alignment: String? = nil, tile_space_between: Int64? = nil, tile_background_color: String? = nil, tile_shadow: Bool? = nil, key_color: String? = nil) { + self._page_side_margins = page_side_margins.map(AnyInt.init) + self._page_background_color = page_background_color.map(AnyString.init) + self._tile_title_alignment = tile_title_alignment.map(AnyString.init) + self._tile_space_between = tile_space_between.map(AnyInt.init) + self._tile_background_color = tile_background_color.map(AnyString.init) + self.tile_shadow = tile_shadow + self._key_color = key_color.map(AnyString.init) + } + +} + +public struct DashboardBase: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _content_favorite_id = "content_favorite_id" + case _content_metadata_id = "content_metadata_id" + case _description = "description" + case hidden + case _id = "id" + case model + case _query_timezone = "query_timezone" + case readonly + case _refresh_interval = "refresh_interval" + case _refresh_interval_to_i = "refresh_interval_to_i" + case folder + case _title = "title" + case _user_id = "user_id" + case _slug = "slug" + case _preferred_viewer = "preferred_viewer" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _content_favorite_id: AnyString? + /** + * Content Favorite Id (read-only) + */ + public var content_favorite_id: String? { + get { _content_favorite_id?.value } + set { _content_favorite_id = newValue.map(AnyString.init) } + } + + private var _content_metadata_id: AnyString? + /** + * Id of content metadata (read-only) + */ + public var content_metadata_id: String? { + get { _content_metadata_id?.value } + set { _content_metadata_id = newValue.map(AnyString.init) } + } + + private var _description: AnyString? + /** + * Description (read-only) + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } + + /** + * Is Hidden (read-only) + */ + public var hidden: Bool? + + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + public var model: LookModel? + + private var _query_timezone: AnyString? + /** + * Timezone in which the Dashboard will run by default. (read-only) + */ + public var query_timezone: String? { + get { _query_timezone?.value } + set { _query_timezone = newValue.map(AnyString.init) } + } + + /** + * Is Read-only (read-only) + */ + public var readonly: Bool? + + private var _refresh_interval: AnyString? + /** + * Refresh Interval, as a time duration phrase like "2 hours 30 minutes". A number with no time units will be interpreted as whole seconds. (read-only) + */ + public var refresh_interval: String? { + get { _refresh_interval?.value } + set { _refresh_interval = newValue.map(AnyString.init) } + } + + private var _refresh_interval_to_i: AnyInt? + /** + * Refresh Interval in milliseconds (read-only) + */ + public var refresh_interval_to_i: Int64? { + get { _refresh_interval_to_i?.value } + set { _refresh_interval_to_i = newValue.map(AnyInt.init) } + } + + public var folder: FolderBase? + + private var _title: AnyString? + /** + * Dashboard Title (read-only) + */ + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } + } + + private var _user_id: AnyString? + /** + * Id of User (read-only) + */ + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } + } + + private var _slug: AnyString? + /** + * Content Metadata Slug (read-only) + */ + public var slug: String? { + get { _slug?.value } + set { _slug = newValue.map(AnyString.init) } + } + + private var _preferred_viewer: AnyString? + /** + * The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) (read-only) + */ + public var preferred_viewer: String? { + get { _preferred_viewer?.value } + set { _preferred_viewer = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, content_favorite_id: String? = nil, content_metadata_id: String? = nil, description: String? = nil, hidden: Bool? = nil, id: String? = nil, model: LookModel? = nil, query_timezone: String? = nil, readonly: Bool? = nil, refresh_interval: String? = nil, refresh_interval_to_i: Int64? = nil, folder: FolderBase? = nil, title: String? = nil, user_id: String? = nil, slug: String? = nil, preferred_viewer: String? = nil) { + self.can = can + self._content_favorite_id = content_favorite_id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) + self._description = description.map(AnyString.init) + self.hidden = hidden + self._id = id.map(AnyString.init) + self.model = model + self._query_timezone = query_timezone.map(AnyString.init) + self.readonly = readonly + self._refresh_interval = refresh_interval.map(AnyString.init) + self._refresh_interval_to_i = refresh_interval_to_i.map(AnyInt.init) + self.folder = folder + self._title = title.map(AnyString.init) + self._user_id = user_id.map(AnyString.init) + self._slug = slug.map(AnyString.init) + self._preferred_viewer = preferred_viewer.map(AnyString.init) + } + +} + +public struct DashboardElement: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _body_text = "body_text" + case _body_text_as_html = "body_text_as_html" + case _dashboard_id = "dashboard_id" + case _edit_uri = "edit_uri" + case _id = "id" + case look + case _look_id = "look_id" + case _lookml_link_id = "lookml_link_id" + case _merge_result_id = "merge_result_id" + case _note_display = "note_display" + case _note_state = "note_state" + case _note_text = "note_text" + case _note_text_as_html = "note_text_as_html" + case query + case _query_id = "query_id" + case _refresh_interval = "refresh_interval" + case _refresh_interval_to_i = "refresh_interval_to_i" + case result_maker + case _result_maker_id = "result_maker_id" + case _subtitle_text = "subtitle_text" + case _title = "title" + case title_hidden + case _title_text = "title_text" + case _type = "type" + case _alert_count = "alert_count" + case _rich_content_json = "rich_content_json" + case _title_text_as_html = "title_text_as_html" + case _subtitle_text_as_html = "subtitle_text_as_html" + case _extension_id = "extension_id" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _body_text: AnyString? + /** + * Text tile body text + */ + public var body_text: String? { + get { _body_text?.value } + set { _body_text = newValue.map(AnyString.init) } + } + + private var _body_text_as_html: AnyString? + /** + * Text tile body text as Html (read-only) + */ + public var body_text_as_html: String? { + get { _body_text_as_html?.value } + set { _body_text_as_html = newValue.map(AnyString.init) } + } + + private var _dashboard_id: AnyString? + /** + * Id of Dashboard + */ + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } + } + + private var _edit_uri: AnyString? + /** + * Relative path of URI of LookML file to edit the dashboard element (LookML dashboard only). (read-only) + */ + public var edit_uri: String? { + get { _edit_uri?.value } + set { _edit_uri = newValue.map(AnyString.init) } + } + + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + public var look: LookWithQuery? + + private var _look_id: AnyString? + /** + * Id Of Look + */ + public var look_id: String? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyString.init) } + } + + private var _lookml_link_id: AnyString? + /** + * LookML link ID (read-only) + */ + public var lookml_link_id: String? { + get { _lookml_link_id?.value } + set { _lookml_link_id = newValue.map(AnyString.init) } + } + + private var _merge_result_id: AnyString? + /** + * ID of merge result + */ + public var merge_result_id: String? { + get { _merge_result_id?.value } + set { _merge_result_id = newValue.map(AnyString.init) } + } + + private var _note_display: AnyString? + /** + * Note Display + */ + public var note_display: String? { + get { _note_display?.value } + set { _note_display = newValue.map(AnyString.init) } + } + + private var _note_state: AnyString? + /** + * Note State + */ + public var note_state: String? { + get { _note_state?.value } + set { _note_state = newValue.map(AnyString.init) } + } + + private var _note_text: AnyString? + /** + * Note Text + */ + public var note_text: String? { + get { _note_text?.value } + set { _note_text = newValue.map(AnyString.init) } + } + + private var _note_text_as_html: AnyString? + /** + * Note Text as Html (read-only) + */ + public var note_text_as_html: String? { + get { _note_text_as_html?.value } + set { _note_text_as_html = newValue.map(AnyString.init) } + } + + public var query: Query? + + private var _query_id: AnyString? + /** + * Id Of Query + */ + public var query_id: String? { + get { _query_id?.value } + set { _query_id = newValue.map(AnyString.init) } + } + + private var _refresh_interval: AnyString? + /** + * Refresh Interval + */ + public var refresh_interval: String? { + get { _refresh_interval?.value } + set { _refresh_interval = newValue.map(AnyString.init) } + } + + private var _refresh_interval_to_i: AnyInt? + /** + * Refresh Interval as integer (read-only) + */ + public var refresh_interval_to_i: Int64? { + get { _refresh_interval_to_i?.value } + set { _refresh_interval_to_i = newValue.map(AnyInt.init) } + } + + public var result_maker: ResultMakerWithIdVisConfigAndDynamicFields? + + private var _result_maker_id: AnyString? + /** + * ID of the ResultMakerLookup entry. + */ + public var result_maker_id: String? { + get { _result_maker_id?.value } + set { _result_maker_id = newValue.map(AnyString.init) } + } + + private var _subtitle_text: AnyString? + /** + * Text tile subtitle text + */ + public var subtitle_text: String? { + get { _subtitle_text?.value } + set { _subtitle_text = newValue.map(AnyString.init) } + } + + private var _title: AnyString? + /** + * Title of dashboard element + */ + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } + } + + /** + * Whether title is hidden + */ + public var title_hidden: Bool? + + private var _title_text: AnyString? + /** + * Text tile title + */ + public var title_text: String? { + get { _title_text?.value } + set { _title_text = newValue.map(AnyString.init) } + } + + private var _type: AnyString? + /** + * Type + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + + private var _alert_count: AnyInt? + /** + * Count of Alerts associated to a dashboard element (read-only) + */ + public var alert_count: Int64? { + get { _alert_count?.value } + set { _alert_count = newValue.map(AnyInt.init) } + } + + private var _rich_content_json: AnyString? + /** + * JSON with all the properties required for rich editor and buttons elements + */ + public var rich_content_json: String? { + get { _rich_content_json?.value } + set { _rich_content_json = newValue.map(AnyString.init) } + } + + private var _title_text_as_html: AnyString? + /** + * Text tile title text as Html (read-only) + */ + public var title_text_as_html: String? { + get { _title_text_as_html?.value } + set { _title_text_as_html = newValue.map(AnyString.init) } + } + + private var _subtitle_text_as_html: AnyString? + /** + * Text tile subtitle text as Html (read-only) + */ + public var subtitle_text_as_html: String? { + get { _subtitle_text_as_html?.value } + set { _subtitle_text_as_html = newValue.map(AnyString.init) } + } + + private var _extension_id: AnyString? + /** + * Extension ID + */ + public var extension_id: String? { + get { _extension_id?.value } + set { _extension_id = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, body_text: String? = nil, body_text_as_html: String? = nil, dashboard_id: String? = nil, edit_uri: String? = nil, id: String? = nil, look: LookWithQuery? = nil, look_id: String? = nil, lookml_link_id: String? = nil, merge_result_id: String? = nil, note_display: String? = nil, note_state: String? = nil, note_text: String? = nil, note_text_as_html: String? = nil, query: Query? = nil, query_id: String? = nil, refresh_interval: String? = nil, refresh_interval_to_i: Int64? = nil, result_maker: ResultMakerWithIdVisConfigAndDynamicFields? = nil, result_maker_id: String? = nil, subtitle_text: String? = nil, title: String? = nil, title_hidden: Bool? = nil, title_text: String? = nil, type: String? = nil, alert_count: Int64? = nil, rich_content_json: String? = nil, title_text_as_html: String? = nil, subtitle_text_as_html: String? = nil, extension_id: String? = nil) { + self.can = can + self._body_text = body_text.map(AnyString.init) + self._body_text_as_html = body_text_as_html.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self._edit_uri = edit_uri.map(AnyString.init) + self._id = id.map(AnyString.init) + self.look = look + self._look_id = look_id.map(AnyString.init) + self._lookml_link_id = lookml_link_id.map(AnyString.init) + self._merge_result_id = merge_result_id.map(AnyString.init) + self._note_display = note_display.map(AnyString.init) + self._note_state = note_state.map(AnyString.init) + self._note_text = note_text.map(AnyString.init) + self._note_text_as_html = note_text_as_html.map(AnyString.init) + self.query = query + self._query_id = query_id.map(AnyString.init) + self._refresh_interval = refresh_interval.map(AnyString.init) + self._refresh_interval_to_i = refresh_interval_to_i.map(AnyInt.init) + self.result_maker = result_maker + self._result_maker_id = result_maker_id.map(AnyString.init) + self._subtitle_text = subtitle_text.map(AnyString.init) + self._title = title.map(AnyString.init) + self.title_hidden = title_hidden + self._title_text = title_text.map(AnyString.init) + self._type = type.map(AnyString.init) + self._alert_count = alert_count.map(AnyInt.init) + self._rich_content_json = rich_content_json.map(AnyString.init) + self._title_text_as_html = title_text_as_html.map(AnyString.init) + self._subtitle_text_as_html = subtitle_text_as_html.map(AnyString.init) + self._extension_id = extension_id.map(AnyString.init) + } + +} + +public struct DashboardFilter: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _id = "id" + case _dashboard_id = "dashboard_id" + case _name = "name" case _title = "title" - case _user_id = "user_id" - case _slug = "slug" - case _preferred_viewer = "preferred_viewer" - case space + case _type = "type" + case _default_value = "default_value" + case _model = "model" + case _explore = "explore" + case _dimension = "dimension" + case field + case _row = "row" + case _listens_to_filters = "listens_to_filters" + case allow_multiple_values + case required + case ui_config } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _content_favorite_id: AnyInt? + private var _id: AnyString? /** - * Content Favorite Id (read-only) + * Unique Id (read-only) */ - public var content_favorite_id: Int64? { - get { _content_favorite_id?.value } - set { _content_favorite_id = newValue.map(AnyInt.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _content_metadata_id: AnyInt? + private var _dashboard_id: AnyString? /** - * Id of content metadata (read-only) + * Id of Dashboard (read-only) */ - public var content_metadata_id: Int64? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } - private var _description: AnyString? + private var _name: AnyString? /** - * Description (read-only) + * Name of filter */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } + private var _title: AnyString? /** - * Is Hidden (read-only) + * Title of filter */ - public var hidden: Bool? + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } + } - private var _id: AnyString? + private var _type: AnyString? /** - * Unique Id (read-only) + * Type of filter: one of date, number, string, or field */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - public var model: LookModel? - - private var _query_timezone: AnyString? + private var _default_value: AnyString? /** - * Timezone in which the Dashboard will run by default. (read-only) + * Default value of filter */ - public var query_timezone: String? { - get { _query_timezone?.value } - set { _query_timezone = newValue.map(AnyString.init) } + public var default_value: String? { + get { _default_value?.value } + set { _default_value = newValue.map(AnyString.init) } } + private var _model: AnyString? /** - * Is Read-only (read-only) + * Model of filter (required if type = field) */ - public var readonly: Bool? + public var model: String? { + get { _model?.value } + set { _model = newValue.map(AnyString.init) } + } - private var _refresh_interval: AnyString? + private var _explore: AnyString? /** - * Refresh Interval, as a time duration phrase like "2 hours 30 minutes". A number with no time units will be interpreted as whole seconds. (read-only) + * Explore of filter (required if type = field) */ - public var refresh_interval: String? { - get { _refresh_interval?.value } - set { _refresh_interval = newValue.map(AnyString.init) } + public var explore: String? { + get { _explore?.value } + set { _explore = newValue.map(AnyString.init) } } - private var _refresh_interval_to_i: AnyInt? + private var _dimension: AnyString? /** - * Refresh Interval in milliseconds (read-only) + * Dimension of filter (required if type = field) */ - public var refresh_interval_to_i: Int64? { - get { _refresh_interval_to_i?.value } - set { _refresh_interval_to_i = newValue.map(AnyInt.init) } + public var dimension: String? { + get { _dimension?.value } + set { _dimension = newValue.map(AnyString.init) } } - public var folder: FolderBase? + /** + * Field information (read-only) + */ + public var field: StringDictionary? - private var _title: AnyString? + private var _row: AnyInt? /** - * Dashboard Title (read-only) + * Display order of this filter relative to other filters */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var row: Int64? { + get { _row?.value } + set { _row = newValue.map(AnyInt.init) } } - private var _user_id: AnyInt? + private var _listens_to_filters: [AnyString]? /** - * Id of User (read-only) + * Array of listeners for faceted filters */ - public var user_id: Int64? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } + public var listens_to_filters: [String]? { + get { if let v = _listens_to_filters { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } } } - private var _slug: AnyString? /** - * Content Metadata Slug (read-only) + * Whether the filter allows multiple filter values (deprecated in the latest version of dashboards) */ - public var slug: String? { - get { _slug?.value } - set { _slug = newValue.map(AnyString.init) } - } + public var allow_multiple_values: Bool? - private var _preferred_viewer: AnyString? /** - * The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) (read-only) + * Whether the filter requires a value to run the dashboard */ - public var preferred_viewer: String? { - get { _preferred_viewer?.value } - set { _preferred_viewer = newValue.map(AnyString.init) } - } + public var required: Bool? - public var space: SpaceBase? + /** + * The visual configuration for this filter. Used to set up how the UI for this filter should appear. + */ + public var ui_config: StringDictionary? - public init(can: StringDictionary? = nil, content_favorite_id: Int64? = nil, content_metadata_id: Int64? = nil, description: String? = nil, hidden: Bool? = nil, id: String? = nil, model: LookModel? = nil, query_timezone: String? = nil, readonly: Bool? = nil, refresh_interval: String? = nil, refresh_interval_to_i: Int64? = nil, folder: FolderBase? = nil, title: String? = nil, user_id: Int64? = nil, slug: String? = nil, preferred_viewer: String? = nil, space: SpaceBase? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, dashboard_id: String? = nil, name: String? = nil, title: String? = nil, type: String? = nil, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil, field: StringDictionary? = nil, row: Int64? = nil, listens_to_filters: [String]? = nil, allow_multiple_values: Bool? = nil, required: Bool? = nil, ui_config: StringDictionary? = nil) { self.can = can - self._content_favorite_id = content_favorite_id.map(AnyInt.init) - self._content_metadata_id = content_metadata_id.map(AnyInt.init) - self._description = description.map(AnyString.init) - self.hidden = hidden self._id = id.map(AnyString.init) - self.model = model - self._query_timezone = query_timezone.map(AnyString.init) - self.readonly = readonly - self._refresh_interval = refresh_interval.map(AnyString.init) - self._refresh_interval_to_i = refresh_interval_to_i.map(AnyInt.init) - self.folder = folder + self._dashboard_id = dashboard_id.map(AnyString.init) + self._name = name.map(AnyString.init) self._title = title.map(AnyString.init) - self._user_id = user_id.map(AnyInt.init) - self._slug = slug.map(AnyString.init) - self._preferred_viewer = preferred_viewer.map(AnyString.init) - self.space = space + self._type = type.map(AnyString.init) + self._default_value = default_value.map(AnyString.init) + self._model = model.map(AnyString.init) + self._explore = explore.map(AnyString.init) + self._dimension = dimension.map(AnyString.init) + self.field = field + self._row = row.map(AnyInt.init) + if let v = listens_to_filters { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } + self.allow_multiple_values = allow_multiple_values + self.required = required + self.ui_config = ui_config } } -public struct DashboardElement: SDKModel { +public struct DashboardLayout: SDKModel { private enum CodingKeys : String, CodingKey { case can - case _body_text = "body_text" - case _body_text_as_html = "body_text_as_html" - case _dashboard_id = "dashboard_id" - case edit_uri case _id = "id" - case look - case _look_id = "look_id" - case _lookml_link_id = "lookml_link_id" - case _merge_result_id = "merge_result_id" - case _note_display = "note_display" - case _note_state = "note_state" - case _note_text = "note_text" - case _note_text_as_html = "note_text_as_html" - case query - case _query_id = "query_id" - case _refresh_interval = "refresh_interval" - case _refresh_interval_to_i = "refresh_interval_to_i" - case result_maker - case _result_maker_id = "result_maker_id" - case _subtitle_text = "subtitle_text" - case _title = "title" - case title_hidden - case _title_text = "title_text" + case _dashboard_id = "dashboard_id" case _type = "type" - case _alert_count = "alert_count" - case _rich_content_json = "rich_content_json" - case _title_text_as_html = "title_text_as_html" - case _subtitle_text_as_html = "subtitle_text_as_html" + case active + case _column_width = "column_width" + case _width = "width" + case deleted + case _dashboard_title = "dashboard_title" + case dashboard_layout_components } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _body_text: AnyString? - /** - * Text tile body text - */ - public var body_text: String? { - get { _body_text?.value } - set { _body_text = newValue.map(AnyString.init) } - } - - private var _body_text_as_html: AnyString? - /** - * Text tile body text as Html (read-only) - */ - public var body_text_as_html: String? { - get { _body_text_as_html?.value } - set { _body_text_as_html = newValue.map(AnyString.init) } - } - - private var _dashboard_id: AnyString? - /** - * Id of Dashboard - */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } - } - - /** - * Relative path of URI of LookML file to edit the dashboard element (LookML dashboard only). (read-only) - */ - public var edit_uri: URI? - private var _id: AnyString? /** - * Unique Id (read-only) - */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } - - public var look: LookWithQuery? - - private var _look_id: AnyString? - /** - * Id Of Look - */ - public var look_id: String? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyString.init) } - } - - private var _lookml_link_id: AnyString? - /** - * LookML link ID (read-only) - */ - public var lookml_link_id: String? { - get { _lookml_link_id?.value } - set { _lookml_link_id = newValue.map(AnyString.init) } + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _merge_result_id: AnyString? + private var _dashboard_id: AnyString? /** - * ID of merge result + * Id of Dashboard */ - public var merge_result_id: String? { - get { _merge_result_id?.value } - set { _merge_result_id = newValue.map(AnyString.init) } + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } } - private var _note_display: AnyString? + private var _type: AnyString? /** - * Note Display + * Type */ - public var note_display: String? { - get { _note_display?.value } - set { _note_display = newValue.map(AnyString.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } - private var _note_state: AnyString? /** - * Note State + * Is Active */ - public var note_state: String? { - get { _note_state?.value } - set { _note_state = newValue.map(AnyString.init) } - } + public var active: Bool? - private var _note_text: AnyString? + private var _column_width: AnyInt? /** - * Note Text + * Column Width */ - public var note_text: String? { - get { _note_text?.value } - set { _note_text = newValue.map(AnyString.init) } + public var column_width: Int64? { + get { _column_width?.value } + set { _column_width = newValue.map(AnyInt.init) } } - private var _note_text_as_html: AnyString? + private var _width: AnyInt? /** - * Note Text as Html (read-only) + * Width */ - public var note_text_as_html: String? { - get { _note_text_as_html?.value } - set { _note_text_as_html = newValue.map(AnyString.init) } + public var width: Int64? { + get { _width?.value } + set { _width = newValue.map(AnyInt.init) } } - public var query: Query? - - private var _query_id: AnyInt? /** - * Id Of Query + * Whether or not the dashboard layout is deleted. (read-only) */ - public var query_id: Int64? { - get { _query_id?.value } - set { _query_id = newValue.map(AnyInt.init) } - } + public var deleted: Bool? - private var _refresh_interval: AnyString? + private var _dashboard_title: AnyString? /** - * Refresh Interval + * Title extracted from the dashboard this layout represents. (read-only) */ - public var refresh_interval: String? { - get { _refresh_interval?.value } - set { _refresh_interval = newValue.map(AnyString.init) } + public var dashboard_title: String? { + get { _dashboard_title?.value } + set { _dashboard_title = newValue.map(AnyString.init) } } - private var _refresh_interval_to_i: AnyInt? /** - * Refresh Interval as integer (read-only) + * Components (read-only) */ - public var refresh_interval_to_i: Int64? { - get { _refresh_interval_to_i?.value } - set { _refresh_interval_to_i = newValue.map(AnyInt.init) } + public var dashboard_layout_components: [DashboardLayoutComponent]? + + public init(can: StringDictionary? = nil, id: String? = nil, dashboard_id: String? = nil, type: String? = nil, active: Bool? = nil, column_width: Int64? = nil, width: Int64? = nil, deleted: Bool? = nil, dashboard_title: String? = nil, dashboard_layout_components: [DashboardLayoutComponent]? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self._type = type.map(AnyString.init) + self.active = active + self._column_width = column_width.map(AnyInt.init) + self._width = width.map(AnyInt.init) + self.deleted = deleted + self._dashboard_title = dashboard_title.map(AnyString.init) + self.dashboard_layout_components = dashboard_layout_components } - public var result_maker: ResultMakerWithIdVisConfigAndDynamicFields? +} + +public struct DashboardLayoutComponent: SDKModel { - private var _result_maker_id: AnyInt? + private enum CodingKeys : String, CodingKey { + case can + case _id = "id" + case _dashboard_layout_id = "dashboard_layout_id" + case _dashboard_element_id = "dashboard_element_id" + case _row = "row" + case _column = "column" + case _width = "width" + case _height = "height" + case deleted + case _element_title = "element_title" + case element_title_hidden + case _vis_type = "vis_type" + } /** - * ID of the ResultMakerLookup entry. + * Operations the current user is able to perform on this object (read-only) */ - public var result_maker_id: Int64? { - get { _result_maker_id?.value } - set { _result_maker_id = newValue.map(AnyInt.init) } - } + public var can: StringDictionary? - private var _subtitle_text: AnyString? + private var _id: AnyString? /** - * Text tile subtitle text + * Unique Id (read-only) */ - public var subtitle_text: String? { - get { _subtitle_text?.value } - set { _subtitle_text = newValue.map(AnyString.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _title: AnyString? + private var _dashboard_layout_id: AnyString? /** - * Title of dashboard element + * Id of Dashboard Layout */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var dashboard_layout_id: String? { + get { _dashboard_layout_id?.value } + set { _dashboard_layout_id = newValue.map(AnyString.init) } } + private var _dashboard_element_id: AnyString? /** - * Whether title is hidden + * Id Of Dashboard Element */ - public var title_hidden: Bool? + public var dashboard_element_id: String? { + get { _dashboard_element_id?.value } + set { _dashboard_element_id = newValue.map(AnyString.init) } + } - private var _title_text: AnyString? + private var _row: AnyInt? /** - * Text tile title + * Row */ - public var title_text: String? { - get { _title_text?.value } - set { _title_text = newValue.map(AnyString.init) } + public var row: Int64? { + get { _row?.value } + set { _row = newValue.map(AnyInt.init) } } - private var _type: AnyString? + private var _column: AnyInt? /** - * Type + * Column */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var column: Int64? { + get { _column?.value } + set { _column = newValue.map(AnyInt.init) } } - private var _alert_count: AnyInt? + private var _width: AnyInt? /** - * Count of Alerts associated to a dashboard element (read-only) + * Width */ - public var alert_count: Int64? { - get { _alert_count?.value } - set { _alert_count = newValue.map(AnyInt.init) } + public var width: Int64? { + get { _width?.value } + set { _width = newValue.map(AnyInt.init) } } - private var _rich_content_json: AnyString? + private var _height: AnyInt? /** - * JSON with all the properties required for rich editor and buttons elements + * Height */ - public var rich_content_json: String? { - get { _rich_content_json?.value } - set { _rich_content_json = newValue.map(AnyString.init) } + public var height: Int64? { + get { _height?.value } + set { _height = newValue.map(AnyInt.init) } } - private var _title_text_as_html: AnyString? /** - * Text tile title text as Html (read-only) + * Whether or not the dashboard layout component is deleted (read-only) */ - public var title_text_as_html: String? { - get { _title_text_as_html?.value } - set { _title_text_as_html = newValue.map(AnyString.init) } - } + public var deleted: Bool? - private var _subtitle_text_as_html: AnyString? + private var _element_title: AnyString? /** - * Text tile subtitle text as Html (read-only) + * Dashboard element title, extracted from the Dashboard Element. (read-only) */ - public var subtitle_text_as_html: String? { - get { _subtitle_text_as_html?.value } - set { _subtitle_text_as_html = newValue.map(AnyString.init) } - } - - public init(can: StringDictionary? = nil, body_text: String? = nil, body_text_as_html: String? = nil, dashboard_id: String? = nil, edit_uri: URI? = nil, id: String? = nil, look: LookWithQuery? = nil, look_id: String? = nil, lookml_link_id: String? = nil, merge_result_id: String? = nil, note_display: String? = nil, note_state: String? = nil, note_text: String? = nil, note_text_as_html: String? = nil, query: Query? = nil, query_id: Int64? = nil, refresh_interval: String? = nil, refresh_interval_to_i: Int64? = nil, result_maker: ResultMakerWithIdVisConfigAndDynamicFields? = nil, result_maker_id: Int64? = nil, subtitle_text: String? = nil, title: String? = nil, title_hidden: Bool? = nil, title_text: String? = nil, type: String? = nil, alert_count: Int64? = nil, rich_content_json: String? = nil, title_text_as_html: String? = nil, subtitle_text_as_html: String? = nil) { - self.can = can - self._body_text = body_text.map(AnyString.init) - self._body_text_as_html = body_text_as_html.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self.edit_uri = edit_uri - self._id = id.map(AnyString.init) - self.look = look - self._look_id = look_id.map(AnyString.init) - self._lookml_link_id = lookml_link_id.map(AnyString.init) - self._merge_result_id = merge_result_id.map(AnyString.init) - self._note_display = note_display.map(AnyString.init) - self._note_state = note_state.map(AnyString.init) - self._note_text = note_text.map(AnyString.init) - self._note_text_as_html = note_text_as_html.map(AnyString.init) - self.query = query - self._query_id = query_id.map(AnyInt.init) - self._refresh_interval = refresh_interval.map(AnyString.init) - self._refresh_interval_to_i = refresh_interval_to_i.map(AnyInt.init) - self.result_maker = result_maker - self._result_maker_id = result_maker_id.map(AnyInt.init) - self._subtitle_text = subtitle_text.map(AnyString.init) - self._title = title.map(AnyString.init) - self.title_hidden = title_hidden - self._title_text = title_text.map(AnyString.init) - self._type = type.map(AnyString.init) - self._alert_count = alert_count.map(AnyInt.init) - self._rich_content_json = rich_content_json.map(AnyString.init) - self._title_text_as_html = title_text_as_html.map(AnyString.init) - self._subtitle_text_as_html = subtitle_text_as_html.map(AnyString.init) + public var element_title: String? { + get { _element_title?.value } + set { _element_title = newValue.map(AnyString.init) } } -} - -public struct DashboardFilter: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _id = "id" - case _dashboard_id = "dashboard_id" - case _name = "name" - case _title = "title" - case _type = "type" - case _default_value = "default_value" - case _model = "model" - case _explore = "explore" - case _dimension = "dimension" - case field - case _row = "row" - case _listens_to_filters = "listens_to_filters" - case allow_multiple_values - case required - case ui_config - } /** - * Operations the current user is able to perform on this object (read-only) + * Whether or not the dashboard element title is displayed. (read-only) */ - public var can: StringDictionary? + public var element_title_hidden: Bool? - private var _id: AnyString? + private var _vis_type: AnyString? /** - * Unique Id (read-only) + * Visualization type, extracted from a query's vis_config (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var vis_type: String? { + get { _vis_type?.value } + set { _vis_type = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, id: String? = nil, dashboard_layout_id: String? = nil, dashboard_element_id: String? = nil, row: Int64? = nil, column: Int64? = nil, width: Int64? = nil, height: Int64? = nil, deleted: Bool? = nil, element_title: String? = nil, element_title_hidden: Bool? = nil, vis_type: String? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self._dashboard_layout_id = dashboard_layout_id.map(AnyString.init) + self._dashboard_element_id = dashboard_element_id.map(AnyString.init) + self._row = row.map(AnyInt.init) + self._column = column.map(AnyInt.init) + self._width = width.map(AnyInt.init) + self._height = height.map(AnyInt.init) + self.deleted = deleted + self._element_title = element_title.map(AnyString.init) + self.element_title_hidden = element_title_hidden + self._vis_type = vis_type.map(AnyString.init) } +} + +public struct DashboardLookml: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _dashboard_id = "dashboard_id" + case _folder_id = "folder_id" + case _lookml = "lookml" + } private var _dashboard_id: AnyString? /** * Id of Dashboard (read-only) @@ -3995,799 +6373,839 @@ public struct DashboardFilter: SDKModel { set { _dashboard_id = newValue.map(AnyString.init) } } - private var _name: AnyString? + private var _folder_id: AnyString? /** - * Name of filter + * (Write-Only) Id of the folder */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var folder_id: String? { + get { _folder_id?.value } + set { _folder_id = newValue.map(AnyString.init) } } - private var _title: AnyString? + private var _lookml: AnyString? /** - * Title of filter + * lookml of UDD */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var lookml: String? { + get { _lookml?.value } + set { _lookml = newValue.map(AnyString.init) } } - private var _type: AnyString? - /** - * Type of filter: one of date, number, string, or field - */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public init(dashboard_id: String? = nil, folder_id: String? = nil, lookml: String? = nil) { + self._dashboard_id = dashboard_id.map(AnyString.init) + self._folder_id = folder_id.map(AnyString.init) + self._lookml = lookml.map(AnyString.init) } - private var _default_value: AnyString? +} + +public struct DataActionForm: SDKModel { + public var state: DataActionUserState? + /** - * Default value of filter + * Array of form fields. (read-only) */ - public var default_value: String? { - get { _default_value?.value } - set { _default_value = newValue.map(AnyString.init) } + public var fields: [DataActionFormField]? + + public init(state: DataActionUserState? = nil, fields: [DataActionFormField]? = nil) { + self.state = state + self.fields = fields } - private var _model: AnyString? +} + +public struct DataActionFormField: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _label = "label" + case _description = "description" + case _type = "type" + case _default = "default" + case _oauth_url = "oauth_url" + case interactive + case required + case options + } + private var _name: AnyString? /** - * Model of filter (required if type = field) + * Name (read-only) */ - public var model: String? { - get { _model?.value } - set { _model = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - private var _explore: AnyString? + private var _label: AnyString? /** - * Explore of filter (required if type = field) + * Human-readable label (read-only) */ - public var explore: String? { - get { _explore?.value } - set { _explore = newValue.map(AnyString.init) } + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } } - private var _dimension: AnyString? + private var _description: AnyString? /** - * Dimension of filter (required if type = field) + * Description of field (read-only) */ - public var dimension: String? { - get { _dimension?.value } - set { _dimension = newValue.map(AnyString.init) } + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } } + private var _type: AnyString? /** - * Field information (read-only) + * Type of field. (read-only) */ - public var field: StringDictionary? + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } - private var _row: AnyInt? + private var _default: AnyString? /** - * Display order of this filter relative to other filters + * Default value of the field. (read-only) */ - public var row: Int64? { - get { _row?.value } - set { _row = newValue.map(AnyInt.init) } + public var `default`: String? { + get { _default?.value } + set { _default = newValue.map(AnyString.init) } } - private var _listens_to_filters: [AnyString]? + private var _oauth_url: AnyString? /** - * Array of listeners for faceted filters + * The URL for an oauth link, if type is 'oauth_link'. (read-only) */ - public var listens_to_filters: [String]? { - get { if let v = _listens_to_filters { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } } + public var oauth_url: String? { + get { _oauth_url?.value } + set { _oauth_url = newValue.map(AnyString.init) } } /** - * Whether the filter allows multiple filter values (deprecated in the latest version of dashboards) + * Whether or not a field supports interactive forms. (read-only) */ - public var allow_multiple_values: Bool? + public var interactive: Bool? /** - * Whether the filter requires a value to run the dashboard + * 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. (read-only) */ public var required: Bool? /** - * The visual configuration for this filter. Used to set up how the UI for this filter should appear. + * If the form type is 'select', a list of options to be selected from. (read-only) */ - public var ui_config: StringDictionary? + public var options: [DataActionFormSelectOption]? - public init(can: StringDictionary? = nil, id: String? = nil, dashboard_id: String? = nil, name: String? = nil, title: String? = nil, type: String? = nil, default_value: String? = nil, model: String? = nil, explore: String? = nil, dimension: String? = nil, field: StringDictionary? = nil, row: Int64? = nil, listens_to_filters: [String]? = nil, allow_multiple_values: Bool? = nil, required: Bool? = nil, ui_config: StringDictionary? = nil) { - self.can = can - self._id = id.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) + public init(name: String? = nil, label: String? = nil, description: String? = nil, type: String? = nil, `default`: String? = nil, oauth_url: String? = nil, interactive: Bool? = nil, required: Bool? = nil, options: [DataActionFormSelectOption]? = nil) { self._name = name.map(AnyString.init) - self._title = title.map(AnyString.init) + self._label = label.map(AnyString.init) + self._description = description.map(AnyString.init) self._type = type.map(AnyString.init) - self._default_value = default_value.map(AnyString.init) - self._model = model.map(AnyString.init) - self._explore = explore.map(AnyString.init) - self._dimension = dimension.map(AnyString.init) - self.field = field - self._row = row.map(AnyInt.init) - if let v = listens_to_filters { _listens_to_filters = v.map { AnyString.init($0) } } else { _listens_to_filters = nil } - self.allow_multiple_values = allow_multiple_values + self._default = `default`.map(AnyString.init) + self._oauth_url = oauth_url.map(AnyString.init) + self.interactive = interactive self.required = required - self.ui_config = ui_config + self.options = options } } -public struct DashboardLayout: SDKModel { +public struct DataActionFormSelectOption: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _id = "id" - case _dashboard_id = "dashboard_id" - case _type = "type" - case active - case _column_width = "column_width" - case _width = "width" - case deleted - case _dashboard_title = "dashboard_title" - case dashboard_layout_components + case _name = "name" + case _label = "label" } + private var _name: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * Name (read-only) */ - public var can: StringDictionary? + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } - private var _id: AnyString? + private var _label: AnyString? /** - * Unique Id (read-only) + * Human-readable label (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } } - private var _dashboard_id: AnyString? + public init(name: String? = nil, label: String? = nil) { + self._name = name.map(AnyString.init) + self._label = label.map(AnyString.init) + } + +} + +public struct DataActionRequest: SDKModel { /** - * Id of Dashboard + * 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. */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } + public var action: StringDictionary? + + /** + * User input for any form values the data action might use. + */ + public var form_values: StringDictionary? + + public init(action: StringDictionary? = nil, form_values: StringDictionary? = nil) { + self.action = action + self.form_values = form_values } - private var _type: AnyString? +} + +public struct DataActionResponse: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _webhook_id = "webhook_id" + case success + case refresh_query + case validation_errors + case _message = "message" + } + private var _webhook_id: AnyString? /** - * Type + * ID of the webhook event that sent this data action. In some error conditions, this may be null. (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var webhook_id: String? { + get { _webhook_id?.value } + set { _webhook_id = newValue.map(AnyString.init) } } /** - * Is Active + * Whether the data action was successful. (read-only) */ - public var active: Bool? + public var success: Bool? - private var _column_width: AnyInt? /** - * Column Width + * When true, indicates that the client should refresh (rerun) the source query because the data may have been changed by the action. (read-only) */ - public var column_width: Int64? { - get { _column_width?.value } - set { _column_width = newValue.map(AnyInt.init) } - } + public var refresh_query: Bool? - private var _width: AnyInt? + public var validation_errors: ValidationError? + + private var _message: AnyString? /** - * Width + * 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. (read-only) */ - public var width: Int64? { - get { _width?.value } - set { _width = newValue.map(AnyInt.init) } + public var message: String? { + get { _message?.value } + set { _message = newValue.map(AnyString.init) } } - /** - * Whether or not the dashboard layout is deleted. (read-only) - */ - public var deleted: Bool? + public init(webhook_id: String? = nil, success: Bool? = nil, refresh_query: Bool? = nil, validation_errors: ValidationError? = nil, message: String? = nil) { + self._webhook_id = webhook_id.map(AnyString.init) + self.success = success + self.refresh_query = refresh_query + self.validation_errors = validation_errors + self._message = message.map(AnyString.init) + } - private var _dashboard_title: AnyString? +} + +public struct DataActionUserState: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _data = "data" + case _refresh_time = "refresh_time" + } + private var _data: AnyString? /** - * Title extracted from the dashboard this layout represents. (read-only) + * User state data (read-only) */ - public var dashboard_title: String? { - get { _dashboard_title?.value } - set { _dashboard_title = newValue.map(AnyString.init) } + public var data: String? { + get { _data?.value } + set { _data = newValue.map(AnyString.init) } } + private var _refresh_time: AnyInt? /** - * Components (read-only) + * Time in seconds until the state needs to be refreshed (read-only) */ - public var dashboard_layout_components: [DashboardLayoutComponent]? + public var refresh_time: Int64? { + get { _refresh_time?.value } + set { _refresh_time = newValue.map(AnyInt.init) } + } - public init(can: StringDictionary? = nil, id: String? = nil, dashboard_id: String? = nil, type: String? = nil, active: Bool? = nil, column_width: Int64? = nil, width: Int64? = nil, deleted: Bool? = nil, dashboard_title: String? = nil, dashboard_layout_components: [DashboardLayoutComponent]? = nil) { - self.can = can - self._id = id.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyString.init) - self._type = type.map(AnyString.init) - self.active = active - self._column_width = column_width.map(AnyInt.init) - self._width = width.map(AnyInt.init) - self.deleted = deleted - self._dashboard_title = dashboard_title.map(AnyString.init) - self.dashboard_layout_components = dashboard_layout_components + public init(data: String? = nil, refresh_time: Int64? = nil) { + self._data = data.map(AnyString.init) + self._refresh_time = refresh_time.map(AnyInt.init) } } -public struct DashboardLayoutComponent: SDKModel { +public struct Datagroup: SDKModel { private enum CodingKeys : String, CodingKey { case can + case _created_at = "created_at" case _id = "id" - case _dashboard_layout_id = "dashboard_layout_id" - case _dashboard_element_id = "dashboard_element_id" - case _row = "row" - case _column = "column" - case _width = "width" - case _height = "height" - case deleted - case _element_title = "element_title" - case element_title_hidden - case _vis_type = "vis_type" + case _model_name = "model_name" + case _name = "name" + case _stale_before = "stale_before" + case _trigger_check_at = "trigger_check_at" + case _trigger_error = "trigger_error" + case _trigger_value = "trigger_value" + case _triggered_at = "triggered_at" } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _id: AnyString? + private var _created_at: AnyInt? /** - * Unique Id (read-only) + * UNIX timestamp at which this entry was created. (read-only) */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var created_at: Int64? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyInt.init) } } - private var _dashboard_layout_id: AnyString? + private var _id: AnyString? /** - * Id of Dashboard Layout + * Unique ID of the datagroup (read-only) */ - public var dashboard_layout_id: String? { - get { _dashboard_layout_id?.value } - set { _dashboard_layout_id = newValue.map(AnyString.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _dashboard_element_id: AnyString? + private var _model_name: AnyString? /** - * Id Of Dashboard Element + * Name of the model containing the datagroup. Unique when combined with name. (read-only) */ - public var dashboard_element_id: String? { - get { _dashboard_element_id?.value } - set { _dashboard_element_id = newValue.map(AnyString.init) } + public var model_name: String? { + get { _model_name?.value } + set { _model_name = newValue.map(AnyString.init) } } - private var _row: AnyInt? + private var _name: AnyString? /** - * Row + * Name of the datagroup. Unique when combined with model_name. (read-only) */ - public var row: Int64? { - get { _row?.value } - set { _row = newValue.map(AnyInt.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - private var _column: AnyInt? + private var _stale_before: AnyInt? /** - * Column + * UNIX timestamp before which cache entries are considered stale. Cannot be in the future. */ - public var column: Int64? { - get { _column?.value } - set { _column = newValue.map(AnyInt.init) } + public var stale_before: Int64? { + get { _stale_before?.value } + set { _stale_before = newValue.map(AnyInt.init) } } - private var _width: AnyInt? + private var _trigger_check_at: AnyInt? /** - * Width + * UNIX timestamp at which this entry trigger was last checked. (read-only) */ - public var width: Int64? { - get { _width?.value } - set { _width = newValue.map(AnyInt.init) } + public var trigger_check_at: Int64? { + get { _trigger_check_at?.value } + set { _trigger_check_at = newValue.map(AnyInt.init) } } - private var _height: AnyInt? + private var _trigger_error: AnyString? /** - * Height + * The message returned with the error of the last trigger check. (read-only) */ - public var height: Int64? { - get { _height?.value } - set { _height = newValue.map(AnyInt.init) } + public var trigger_error: String? { + get { _trigger_error?.value } + set { _trigger_error = newValue.map(AnyString.init) } } + private var _trigger_value: AnyString? /** - * Whether or not the dashboard layout component is deleted (read-only) - */ - public var deleted: Bool? - - private var _element_title: AnyString? - /** - * Dashboard element title, extracted from the Dashboard Element. (read-only) + * The value of the trigger when last checked. (read-only) */ - public var element_title: String? { - get { _element_title?.value } - set { _element_title = newValue.map(AnyString.init) } + public var trigger_value: String? { + get { _trigger_value?.value } + set { _trigger_value = newValue.map(AnyString.init) } } + private var _triggered_at: AnyInt? /** - * Whether or not the dashboard element title is displayed. (read-only) - */ - public var element_title_hidden: Bool? - - private var _vis_type: AnyString? - /** - * Visualization type, extracted from a query's vis_config (read-only) + * UNIX timestamp at which this entry became triggered. Cannot be in the future. */ - public var vis_type: String? { - get { _vis_type?.value } - set { _vis_type = newValue.map(AnyString.init) } + public var triggered_at: Int64? { + get { _triggered_at?.value } + set { _triggered_at = newValue.map(AnyInt.init) } } - public init(can: StringDictionary? = nil, id: String? = nil, dashboard_layout_id: String? = nil, dashboard_element_id: String? = nil, row: Int64? = nil, column: Int64? = nil, width: Int64? = nil, height: Int64? = nil, deleted: Bool? = nil, element_title: String? = nil, element_title_hidden: Bool? = nil, vis_type: String? = nil) { + public init(can: StringDictionary? = nil, created_at: Int64? = nil, id: String? = nil, model_name: String? = nil, name: String? = nil, stale_before: Int64? = nil, trigger_check_at: Int64? = nil, trigger_error: String? = nil, trigger_value: String? = nil, triggered_at: Int64? = nil) { self.can = can + self._created_at = created_at.map(AnyInt.init) self._id = id.map(AnyString.init) - self._dashboard_layout_id = dashboard_layout_id.map(AnyString.init) - self._dashboard_element_id = dashboard_element_id.map(AnyString.init) - self._row = row.map(AnyInt.init) - self._column = column.map(AnyInt.init) - self._width = width.map(AnyInt.init) - self._height = height.map(AnyInt.init) - self.deleted = deleted - self._element_title = element_title.map(AnyString.init) - self.element_title_hidden = element_title_hidden - self._vis_type = vis_type.map(AnyString.init) + self._model_name = model_name.map(AnyString.init) + self._name = name.map(AnyString.init) + self._stale_before = stale_before.map(AnyInt.init) + self._trigger_check_at = trigger_check_at.map(AnyInt.init) + self._trigger_error = trigger_error.map(AnyString.init) + self._trigger_value = trigger_value.map(AnyString.init) + self._triggered_at = triggered_at.map(AnyInt.init) } } -public struct DashboardLookml: SDKModel { +public struct DBConnection: SDKModel { private enum CodingKeys : String, CodingKey { - case _dashboard_id = "dashboard_id" - case _folder_id = "folder_id" - case _lookml = "lookml" + case can + case _name = "name" + case dialect + case snippets + case pdts_enabled + case _host = "host" + case _port = "port" + case _username = "username" + case _password = "password" + case uses_oauth + case _certificate = "certificate" + case _file_type = "file_type" + case _database = "database" + case _db_timezone = "db_timezone" + case _query_timezone = "query_timezone" + case _schema = "schema" + case _max_connections = "max_connections" + case _max_billing_gigabytes = "max_billing_gigabytes" + case ssl + case verify_ssl + case _tmp_db_name = "tmp_db_name" + case _jdbc_additional_params = "jdbc_additional_params" + case _pool_timeout = "pool_timeout" + case _dialect_name = "dialect_name" + case supports_data_studio_link + case _created_at = "created_at" + case _user_id = "user_id" + case example + case user_db_credentials + case _user_attribute_fields = "user_attribute_fields" + case _maintenance_cron = "maintenance_cron" + case _last_regen_at = "last_regen_at" + case _last_reap_at = "last_reap_at" + case sql_runner_precache_tables + case sql_writing_with_info_schema + case _after_connect_statements = "after_connect_statements" + case pdt_context_override + case managed + case _custom_local_port = "custom_local_port" + case _tunnel_id = "tunnel_id" + case uses_tns + case _pdt_concurrency = "pdt_concurrency" + case disable_context_comment + case _oauth_application_id = "oauth_application_id" + case always_retry_failed_builds + case cost_estimate_enabled + case pdt_api_control_enabled } - private var _dashboard_id: AnyString? /** - * Id of Dashboard (read-only) + * Operations the current user is able to perform on this object (read-only) */ - public var dashboard_id: String? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyString.init) } - } + public var can: StringDictionary? - private var _folder_id: AnyString? + private var _name: AnyString? /** - * (Write-Only) Id of the folder + * Name of the connection. Also used as the unique identifier */ - public var folder_id: String? { - get { _folder_id?.value } - set { _folder_id = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - private var _lookml: AnyString? + public var dialect: Dialect? + /** - * lookml of UDD + * SQL Runner snippets for this connection (read-only) */ - public var lookml: String? { - get { _lookml?.value } - set { _lookml = newValue.map(AnyString.init) } - } - - public init(dashboard_id: String? = nil, folder_id: String? = nil, lookml: String? = nil) { - self._dashboard_id = dashboard_id.map(AnyString.init) - self._folder_id = folder_id.map(AnyString.init) - self._lookml = lookml.map(AnyString.init) - } - -} - -public struct DataActionForm: SDKModel { - public var state: DataActionUserState? + public var snippets: [Snippet]? /** - * Array of form fields. (read-only) + * True if PDTs are enabled on this connection (read-only) */ - public var fields: [DataActionFormField]? + public var pdts_enabled: Bool? - public init(state: DataActionUserState? = nil, fields: [DataActionFormField]? = nil) { - self.state = state - self.fields = fields + private var _host: AnyString? + /** + * Host name/address of server; or the string 'localhost' in case of a connection over an SSH tunnel. + */ + public var host: String? { + get { _host?.value } + set { _host = newValue.map(AnyString.init) } } -} - -public struct DataActionFormField: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _label = "label" - case _description = "description" - case _type = "type" - case _default = "default" - case _oauth_url = "oauth_url" - case interactive - case required - case options - } - private var _name: AnyString? + private var _port: AnyString? /** - * Name (read-only) + * Port number on server. If the connection is over an SSH tunnel, then the local port associated with the SSH tunnel. */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var port: String? { + get { _port?.value } + set { _port = newValue.map(AnyString.init) } } - private var _label: AnyString? + private var _username: AnyString? /** - * Human-readable label (read-only) + * Username for server authentication */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } + public var username: String? { + get { _username?.value } + set { _username = newValue.map(AnyString.init) } } - private var _description: AnyString? + private var _password: AnyString? /** - * Description of field (read-only) + * (Write-Only) Password for server authentication */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + public var password: String? { + get { _password?.value } + set { _password = newValue.map(AnyString.init) } } - private var _type: AnyString? /** - * Type of field. (read-only) + * Whether the connection uses OAuth for authentication. (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } - } + public var uses_oauth: Bool? - private var _default: AnyString? + private var _certificate: AnyString? /** - * Default value of the field. (read-only) + * (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). */ - public var `default`: String? { - get { _default?.value } - set { _default = newValue.map(AnyString.init) } + public var certificate: String? { + get { _certificate?.value } + set { _certificate = newValue.map(AnyString.init) } } - private var _oauth_url: AnyString? + private var _file_type: AnyString? /** - * The URL for an oauth link, if type is 'oauth_link'. (read-only) + * (Write-Only) Certificate keyfile type - .json or .p12 */ - public var oauth_url: String? { - get { _oauth_url?.value } - set { _oauth_url = newValue.map(AnyString.init) } + public var file_type: String? { + get { _file_type?.value } + set { _file_type = newValue.map(AnyString.init) } } + private var _database: AnyString? /** - * Whether or not a field supports interactive forms. (read-only) + * Database name */ - public var interactive: Bool? + public var database: String? { + get { _database?.value } + set { _database = newValue.map(AnyString.init) } + } + private var _db_timezone: AnyString? /** - * 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. (read-only) + * Time zone of database */ - public var required: Bool? + public var db_timezone: String? { + get { _db_timezone?.value } + set { _db_timezone = newValue.map(AnyString.init) } + } + private var _query_timezone: AnyString? /** - * If the form type is 'select', a list of options to be selected from. (read-only) + * Timezone to use in queries */ - public var options: [DataActionFormSelectOption]? - - public init(name: String? = nil, label: String? = nil, description: String? = nil, type: String? = nil, `default`: String? = nil, oauth_url: String? = nil, interactive: Bool? = nil, required: Bool? = nil, options: [DataActionFormSelectOption]? = nil) { - self._name = name.map(AnyString.init) - self._label = label.map(AnyString.init) - self._description = description.map(AnyString.init) - self._type = type.map(AnyString.init) - self._default = `default`.map(AnyString.init) - self._oauth_url = oauth_url.map(AnyString.init) - self.interactive = interactive - self.required = required - self.options = options + public var query_timezone: String? { + get { _query_timezone?.value } + set { _query_timezone = newValue.map(AnyString.init) } } -} - -public struct DataActionFormSelectOption: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _label = "label" - } - private var _name: AnyString? + private var _schema: AnyString? /** - * Name (read-only) + * Schema name */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var schema: String? { + get { _schema?.value } + set { _schema = newValue.map(AnyString.init) } } - private var _label: AnyString? + private var _max_connections: AnyInt? /** - * Human-readable label (read-only) + * Maximum number of concurrent connection to use */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } + public var max_connections: Int64? { + get { _max_connections?.value } + set { _max_connections = newValue.map(AnyInt.init) } } - public init(name: String? = nil, label: String? = nil) { - self._name = name.map(AnyString.init) - self._label = label.map(AnyString.init) + private var _max_billing_gigabytes: AnyString? + /** + * Maximum size of query in GBs (BigQuery only, can be a user_attribute name) + */ + public var max_billing_gigabytes: String? { + get { _max_billing_gigabytes?.value } + set { _max_billing_gigabytes = newValue.map(AnyString.init) } } -} - -public struct DataActionRequest: SDKModel { /** - * 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. + * Use SSL/TLS when connecting to server */ - public var action: StringDictionary? + public var ssl: Bool? /** - * User input for any form values the data action might use. + * Verify the SSL */ - public var form_values: StringDictionary? + public var verify_ssl: Bool? - public init(action: StringDictionary? = nil, form_values: StringDictionary? = nil) { - self.action = action - self.form_values = form_values + private var _tmp_db_name: AnyString? + /** + * Name of temporary database (if used) + */ + public var tmp_db_name: String? { + get { _tmp_db_name?.value } + set { _tmp_db_name = newValue.map(AnyString.init) } } -} - -public struct DataActionResponse: SDKModel { + private var _jdbc_additional_params: AnyString? + /** + * Additional params to add to JDBC connection string + */ + public var jdbc_additional_params: String? { + get { _jdbc_additional_params?.value } + set { _jdbc_additional_params = newValue.map(AnyString.init) } + } - private enum CodingKeys : String, CodingKey { - case _webhook_id = "webhook_id" - case success - case refresh_query - case validation_errors - case _message = "message" + private var _pool_timeout: AnyInt? + /** + * Connection Pool Timeout, in seconds + */ + public var pool_timeout: Int64? { + get { _pool_timeout?.value } + set { _pool_timeout = newValue.map(AnyInt.init) } } - private var _webhook_id: AnyString? + + private var _dialect_name: AnyString? /** - * ID of the webhook event that sent this data action. In some error conditions, this may be null. (read-only) + * (Read/Write) SQL Dialect name */ - public var webhook_id: String? { - get { _webhook_id?.value } - set { _webhook_id = newValue.map(AnyString.init) } + public var dialect_name: String? { + get { _dialect_name?.value } + set { _dialect_name = newValue.map(AnyString.init) } } /** - * Whether the data action was successful. (read-only) + * Database connection has the ability to support open data studio from explore (read-only) */ - public var success: Bool? + public var supports_data_studio_link: Bool? + private var _created_at: AnyString? /** - * When true, indicates that the client should refresh (rerun) the source query because the data may have been changed by the action. (read-only) + * Creation date for this connection (read-only) */ - public var refresh_query: Bool? - - public var validation_errors: ValidationError? + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } + } - private var _message: AnyString? + private var _user_id: AnyString? /** - * 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. (read-only) + * Id of user who last modified this connection configuration (read-only) */ - public var message: String? { - get { _message?.value } - set { _message = newValue.map(AnyString.init) } - } - - public init(webhook_id: String? = nil, success: Bool? = nil, refresh_query: Bool? = nil, validation_errors: ValidationError? = nil, message: String? = nil) { - self._webhook_id = webhook_id.map(AnyString.init) - self.success = success - self.refresh_query = refresh_query - self.validation_errors = validation_errors - self._message = message.map(AnyString.init) + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } } -} + /** + * Is this an example connection? (read-only) + */ + public var example: Bool? -public struct DataActionUserState: SDKModel { + /** + * (Limited access feature) Are per user db credentials enabled. Enabling will remove previously set username and password + */ + public var user_db_credentials: Bool? - private enum CodingKeys : String, CodingKey { - case _data = "data" - case _refresh_time = "refresh_time" + private var _user_attribute_fields: [AnyString]? + /** + * Fields whose values map to user attribute names + */ + public var user_attribute_fields: [String]? { + get { if let v = _user_attribute_fields { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _user_attribute_fields = v.map { AnyString.init($0) } } else { _user_attribute_fields = nil } } } - private var _data: AnyString? + + private var _maintenance_cron: AnyString? /** - * User state data (read-only) + * Cron string specifying when maintenance such as PDT trigger checks and drops should be performed */ - public var data: String? { - get { _data?.value } - set { _data = newValue.map(AnyString.init) } + public var maintenance_cron: String? { + get { _maintenance_cron?.value } + set { _maintenance_cron = newValue.map(AnyString.init) } } - private var _refresh_time: AnyInt? + private var _last_regen_at: AnyString? /** - * Time in seconds until the state needs to be refreshed (read-only) + * Unix timestamp at start of last completed PDT trigger check process (read-only) */ - public var refresh_time: Int64? { - get { _refresh_time?.value } - set { _refresh_time = newValue.map(AnyInt.init) } + public var last_regen_at: String? { + get { _last_regen_at?.value } + set { _last_regen_at = newValue.map(AnyString.init) } } - public init(data: String? = nil, refresh_time: Int64? = nil) { - self._data = data.map(AnyString.init) - self._refresh_time = refresh_time.map(AnyInt.init) + private var _last_reap_at: AnyString? + /** + * Unix timestamp at start of last completed PDT reap process (read-only) + */ + public var last_reap_at: String? { + get { _last_reap_at?.value } + set { _last_reap_at = newValue.map(AnyString.init) } } -} + /** + * Precache tables in the SQL Runner + */ + public var sql_runner_precache_tables: Bool? -public struct Datagroup: SDKModel { + /** + * Fetch Information Schema For SQL Writing + */ + public var sql_writing_with_info_schema: Bool? - private enum CodingKeys : String, CodingKey { - case can - case _created_at = "created_at" - case _id = "id" - case _model_name = "model_name" - case _name = "name" - case _stale_before = "stale_before" - case _trigger_check_at = "trigger_check_at" - case _trigger_error = "trigger_error" - case _trigger_value = "trigger_value" - case _triggered_at = "triggered_at" + private var _after_connect_statements: AnyString? + /** + * SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature + */ + public var after_connect_statements: String? { + get { _after_connect_statements?.value } + set { _after_connect_statements = newValue.map(AnyString.init) } } + + public var pdt_context_override: DBConnectionOverride? + /** - * Operations the current user is able to perform on this object (read-only) + * Is this connection created and managed by Looker (read-only) */ - public var can: StringDictionary? + public var managed: Bool? - private var _created_at: AnyInt? + private var _custom_local_port: AnyInt? /** - * UNIX timestamp at which this entry was created. (read-only) + * 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. */ - public var created_at: Int64? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyInt.init) } + public var custom_local_port: Int64? { + get { _custom_local_port?.value } + set { _custom_local_port = newValue.map(AnyInt.init) } } - private var _id: AnyInt? + private var _tunnel_id: AnyString? /** - * Unique ID of the datagroup (read-only) + * The Id of the ssh tunnel this connection uses */ - public var id: Int64? { - get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + public var tunnel_id: String? { + get { _tunnel_id?.value } + set { _tunnel_id = newValue.map(AnyString.init) } } - private var _model_name: AnyString? /** - * Name of the model containing the datagroup. Unique when combined with name. (read-only) + * Enable Transparent Network Substrate (TNS) connections */ - public var model_name: String? { - get { _model_name?.value } - set { _model_name = newValue.map(AnyString.init) } - } + public var uses_tns: Bool? - private var _name: AnyString? + private var _pdt_concurrency: AnyInt? /** - * Name of the datagroup. Unique when combined with model_name. (read-only) + * Maximum number of threads to use to build PDTs in parallel */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var pdt_concurrency: Int64? { + get { _pdt_concurrency?.value } + set { _pdt_concurrency = newValue.map(AnyInt.init) } } - private var _stale_before: AnyInt? /** - * UNIX timestamp before which cache entries are considered stale. Cannot be in the future. + * When disable_context_comment is true comment will not be added to SQL */ - public var stale_before: Int64? { - get { _stale_before?.value } - set { _stale_before = newValue.map(AnyInt.init) } - } + public var disable_context_comment: Bool? - private var _trigger_check_at: AnyInt? + private var _oauth_application_id: AnyString? /** - * UNIX timestamp at which this entry trigger was last checked. (read-only) + * An External OAuth Application to use for authenticating to the database */ - public var trigger_check_at: Int64? { - get { _trigger_check_at?.value } - set { _trigger_check_at = newValue.map(AnyInt.init) } + public var oauth_application_id: String? { + get { _oauth_application_id?.value } + set { _oauth_application_id = newValue.map(AnyString.init) } } - private var _trigger_error: AnyString? /** - * The message returned with the error of the last trigger check. (read-only) + * When true, error PDTs will be retried every regenerator cycle */ - public var trigger_error: String? { - get { _trigger_error?.value } - set { _trigger_error = newValue.map(AnyString.init) } - } + public var always_retry_failed_builds: Bool? - private var _trigger_value: AnyString? /** - * The value of the trigger when last checked. (read-only) + * When true, query cost estimate will be displayed in explore. */ - public var trigger_value: String? { - get { _trigger_value?.value } - set { _trigger_value = newValue.map(AnyString.init) } - } + public var cost_estimate_enabled: Bool? - private var _triggered_at: AnyInt? /** - * UNIX timestamp at which this entry became triggered. Cannot be in the future. + * PDT builds on this connection can be kicked off and cancelled via API. */ - public var triggered_at: Int64? { - get { _triggered_at?.value } - set { _triggered_at = newValue.map(AnyInt.init) } - } + public var pdt_api_control_enabled: Bool? - public init(can: StringDictionary? = nil, created_at: Int64? = nil, id: Int64? = nil, model_name: String? = nil, name: String? = nil, stale_before: Int64? = nil, trigger_check_at: Int64? = nil, trigger_error: String? = nil, trigger_value: String? = nil, triggered_at: Int64? = nil) { + public init(can: StringDictionary? = nil, name: String? = nil, dialect: Dialect? = nil, snippets: [Snippet]? = nil, pdts_enabled: Bool? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, uses_oauth: Bool? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, db_timezone: String? = nil, query_timezone: String? = nil, schema: String? = nil, max_connections: Int64? = nil, max_billing_gigabytes: String? = nil, ssl: Bool? = nil, verify_ssl: Bool? = nil, tmp_db_name: String? = nil, jdbc_additional_params: String? = nil, pool_timeout: Int64? = nil, dialect_name: String? = nil, supports_data_studio_link: Bool? = nil, created_at: String? = nil, user_id: String? = nil, example: Bool? = nil, user_db_credentials: Bool? = nil, user_attribute_fields: [String]? = nil, maintenance_cron: String? = nil, last_regen_at: String? = nil, last_reap_at: String? = nil, sql_runner_precache_tables: Bool? = nil, sql_writing_with_info_schema: Bool? = nil, after_connect_statements: String? = nil, pdt_context_override: DBConnectionOverride? = nil, managed: Bool? = nil, custom_local_port: Int64? = nil, tunnel_id: String? = nil, uses_tns: Bool? = nil, pdt_concurrency: Int64? = nil, disable_context_comment: Bool? = nil, oauth_application_id: String? = nil, always_retry_failed_builds: Bool? = nil, cost_estimate_enabled: Bool? = nil, pdt_api_control_enabled: Bool? = nil) { self.can = can - self._created_at = created_at.map(AnyInt.init) - self._id = id.map(AnyInt.init) - self._model_name = model_name.map(AnyString.init) self._name = name.map(AnyString.init) - self._stale_before = stale_before.map(AnyInt.init) - self._trigger_check_at = trigger_check_at.map(AnyInt.init) - self._trigger_error = trigger_error.map(AnyString.init) - self._trigger_value = trigger_value.map(AnyString.init) - self._triggered_at = triggered_at.map(AnyInt.init) + self.dialect = dialect + self.snippets = snippets + self.pdts_enabled = pdts_enabled + self._host = host.map(AnyString.init) + self._port = port.map(AnyString.init) + self._username = username.map(AnyString.init) + self._password = password.map(AnyString.init) + self.uses_oauth = uses_oauth + self._certificate = certificate.map(AnyString.init) + self._file_type = file_type.map(AnyString.init) + self._database = database.map(AnyString.init) + self._db_timezone = db_timezone.map(AnyString.init) + self._query_timezone = query_timezone.map(AnyString.init) + self._schema = schema.map(AnyString.init) + self._max_connections = max_connections.map(AnyInt.init) + self._max_billing_gigabytes = max_billing_gigabytes.map(AnyString.init) + self.ssl = ssl + self.verify_ssl = verify_ssl + self._tmp_db_name = tmp_db_name.map(AnyString.init) + self._jdbc_additional_params = jdbc_additional_params.map(AnyString.init) + self._pool_timeout = pool_timeout.map(AnyInt.init) + self._dialect_name = dialect_name.map(AnyString.init) + self.supports_data_studio_link = supports_data_studio_link + self._created_at = created_at.map(AnyString.init) + self._user_id = user_id.map(AnyString.init) + self.example = example + self.user_db_credentials = user_db_credentials + if let v = user_attribute_fields { _user_attribute_fields = v.map { AnyString.init($0) } } else { _user_attribute_fields = nil } + self._maintenance_cron = maintenance_cron.map(AnyString.init) + self._last_regen_at = last_regen_at.map(AnyString.init) + self._last_reap_at = last_reap_at.map(AnyString.init) + self.sql_runner_precache_tables = sql_runner_precache_tables + self.sql_writing_with_info_schema = sql_writing_with_info_schema + self._after_connect_statements = after_connect_statements.map(AnyString.init) + self.pdt_context_override = pdt_context_override + self.managed = managed + self._custom_local_port = custom_local_port.map(AnyInt.init) + self._tunnel_id = tunnel_id.map(AnyString.init) + self.uses_tns = uses_tns + self._pdt_concurrency = pdt_concurrency.map(AnyInt.init) + self.disable_context_comment = disable_context_comment + self._oauth_application_id = oauth_application_id.map(AnyString.init) + self.always_retry_failed_builds = always_retry_failed_builds + self.cost_estimate_enabled = cost_estimate_enabled + self.pdt_api_control_enabled = pdt_api_control_enabled } } -public struct DBConnection: SDKModel { +public struct DBConnectionBase: SDKModel { private enum CodingKeys : String, CodingKey { - case can - case _name = "name" - case dialect - case snippets - case pdts_enabled - case _host = "host" - case _port = "port" - case _username = "username" - case _password = "password" - case uses_oauth - case _certificate = "certificate" - case _file_type = "file_type" - case _database = "database" - case _db_timezone = "db_timezone" - case _query_timezone = "query_timezone" - case _schema = "schema" - case _max_connections = "max_connections" - case _max_billing_gigabytes = "max_billing_gigabytes" - case ssl - case verify_ssl - case _tmp_db_name = "tmp_db_name" - case _jdbc_additional_params = "jdbc_additional_params" - case _pool_timeout = "pool_timeout" - case _dialect_name = "dialect_name" - case supports_data_studio_link - case _created_at = "created_at" - case _user_id = "user_id" - case example - case user_db_credentials - case _user_attribute_fields = "user_attribute_fields" - case _maintenance_cron = "maintenance_cron" - case _last_regen_at = "last_regen_at" - case _last_reap_at = "last_reap_at" - case sql_runner_precache_tables - case sql_writing_with_info_schema - case _after_connect_statements = "after_connect_statements" - case pdt_context_override - case managed - case uses_tns + case can + case _name = "name" + case dialect + case snippets + case pdts_enabled } /** * Operations the current user is able to perform on this object (read-only) @@ -4796,7 +7214,7 @@ public struct DBConnection: SDKModel { private var _name: AnyString? /** - * Name of the connection. Also used as the unique identifier + * Name of the connection. Also used as the unique identifier (read-only) */ public var name: String? { get { _name?.value } @@ -4815,9 +7233,44 @@ public struct DBConnection: SDKModel { */ public var pdts_enabled: Bool? + public init(can: StringDictionary? = nil, name: String? = nil, dialect: Dialect? = nil, snippets: [Snippet]? = nil, pdts_enabled: Bool? = nil) { + self.can = can + self._name = name.map(AnyString.init) + self.dialect = dialect + self.snippets = snippets + self.pdts_enabled = pdts_enabled + } + +} + +public struct DBConnectionOverride: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _context = "context" + case _host = "host" + case _port = "port" + case _username = "username" + case _password = "password" + case has_password + case _certificate = "certificate" + case _file_type = "file_type" + case _database = "database" + case _schema = "schema" + case _jdbc_additional_params = "jdbc_additional_params" + case _after_connect_statements = "after_connect_statements" + } + private var _context: AnyString? + /** + * Context in which to override (`pdt` is the only allowed value) + */ + public var context: String? { + get { _context?.value } + set { _context = newValue.map(AnyString.init) } + } + private var _host: AnyString? /** - * Host name/address of server; or the string 'localhost' in case of a connection over an SSH tunnel. + * Host name/address of server */ public var host: String? { get { _host?.value } @@ -4826,7 +7279,7 @@ public struct DBConnection: SDKModel { private var _port: AnyString? /** - * Port number on server. If the connection is over an SSH tunnel, then the local port associated with the SSH tunnel. + * Port number on server */ public var port: String? { get { _port?.value } @@ -4852,9 +7305,9 @@ public struct DBConnection: SDKModel { } /** - * Whether the connection uses OAuth for authentication. (read-only) + * Whether or not the password is overridden in this context (read-only) */ - public var uses_oauth: Bool? + public var has_password: Bool? private var _certificate: AnyString? /** @@ -4883,990 +7336,1235 @@ public struct DBConnection: SDKModel { set { _database = newValue.map(AnyString.init) } } - private var _db_timezone: AnyString? + private var _schema: AnyString? /** - * Time zone of database + * Schema name */ - public var db_timezone: String? { - get { _db_timezone?.value } - set { _db_timezone = newValue.map(AnyString.init) } + public var schema: String? { + get { _schema?.value } + set { _schema = newValue.map(AnyString.init) } } - private var _query_timezone: AnyString? + private var _jdbc_additional_params: AnyString? /** - * Timezone to use in queries + * Additional params to add to JDBC connection string */ - public var query_timezone: String? { - get { _query_timezone?.value } - set { _query_timezone = newValue.map(AnyString.init) } + public var jdbc_additional_params: String? { + get { _jdbc_additional_params?.value } + set { _jdbc_additional_params = newValue.map(AnyString.init) } } - private var _schema: AnyString? + private var _after_connect_statements: AnyString? /** - * Schema name + * SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature */ - public var schema: String? { - get { _schema?.value } - set { _schema = newValue.map(AnyString.init) } + public var after_connect_statements: String? { + get { _after_connect_statements?.value } + set { _after_connect_statements = newValue.map(AnyString.init) } } - private var _max_connections: AnyInt? + public init(context: String? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, has_password: Bool? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, schema: String? = nil, jdbc_additional_params: String? = nil, after_connect_statements: String? = nil) { + self._context = context.map(AnyString.init) + self._host = host.map(AnyString.init) + self._port = port.map(AnyString.init) + self._username = username.map(AnyString.init) + self._password = password.map(AnyString.init) + self.has_password = has_password + self._certificate = certificate.map(AnyString.init) + self._file_type = file_type.map(AnyString.init) + self._database = database.map(AnyString.init) + self._schema = schema.map(AnyString.init) + self._jdbc_additional_params = jdbc_additional_params.map(AnyString.init) + self._after_connect_statements = after_connect_statements.map(AnyString.init) + } + +} + +public struct DBConnectionTestResult: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _connection_string = "connection_string" + case _message = "message" + case _name = "name" + case _status = "status" + } /** - * Maximum number of concurrent connection to use + * Operations the current user is able to perform on this object (read-only) */ - public var max_connections: Int64? { - get { _max_connections?.value } - set { _max_connections = newValue.map(AnyInt.init) } + public var can: StringDictionary? + + private var _connection_string: AnyString? + /** + * JDBC connection string. (only populated in the 'connect' test) (read-only) + */ + public var connection_string: String? { + get { _connection_string?.value } + set { _connection_string = newValue.map(AnyString.init) } } - private var _max_billing_gigabytes: AnyString? + private var _message: AnyString? /** - * Maximum size of query in GBs (BigQuery only, can be a user_attribute name) + * Result message of test (read-only) */ - public var max_billing_gigabytes: String? { - get { _max_billing_gigabytes?.value } - set { _max_billing_gigabytes = newValue.map(AnyString.init) } + public var message: String? { + get { _message?.value } + set { _message = newValue.map(AnyString.init) } } + private var _name: AnyString? /** - * Use SSL/TLS when connecting to server + * Name of test (read-only) */ - public var ssl: Bool? + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + private var _status: AnyString? /** - * Verify the SSL + * Result code of test (read-only) */ - public var verify_ssl: Bool? + public var status: String? { + get { _status?.value } + set { _status = newValue.map(AnyString.init) } + } - private var _tmp_db_name: AnyString? + public init(can: StringDictionary? = nil, connection_string: String? = nil, message: String? = nil, name: String? = nil, status: String? = nil) { + self.can = can + self._connection_string = connection_string.map(AnyString.init) + self._message = message.map(AnyString.init) + self._name = name.map(AnyString.init) + self._status = status.map(AnyString.init) + } + +} + +public struct DelegateOauthTest: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _installation_target_id = "installation_target_id" + case _installation_id = "installation_id" + case success + } + private var _name: AnyString? /** - * Name of temporary database (if used) + * Delegate Oauth Connection Name (read-only) */ - public var tmp_db_name: String? { - get { _tmp_db_name?.value } - set { _tmp_db_name = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - private var _jdbc_additional_params: AnyString? + private var _installation_target_id: AnyString? /** - * Additional params to add to JDBC connection string + * The ID of the installation target. For Slack, this would be workspace id. (read-only) */ - public var jdbc_additional_params: String? { - get { _jdbc_additional_params?.value } - set { _jdbc_additional_params = newValue.map(AnyString.init) } + public var installation_target_id: String? { + get { _installation_target_id?.value } + set { _installation_target_id = newValue.map(AnyString.init) } } - private var _pool_timeout: AnyInt? + private var _installation_id: AnyString? /** - * Connection Pool Timeout, in seconds + * Installation ID (read-only) */ - public var pool_timeout: Int64? { - get { _pool_timeout?.value } - set { _pool_timeout = newValue.map(AnyInt.init) } + public var installation_id: String? { + get { _installation_id?.value } + set { _installation_id = newValue.map(AnyString.init) } } - private var _dialect_name: AnyString? /** - * (Read/Write) SQL Dialect name + * Whether or not the test was successful (read-only) */ - public var dialect_name: String? { - get { _dialect_name?.value } - set { _dialect_name = newValue.map(AnyString.init) } + public var success: Bool? + + public init(name: String? = nil, installation_target_id: String? = nil, installation_id: String? = nil, success: Bool? = nil) { + self._name = name.map(AnyString.init) + self._installation_target_id = installation_target_id.map(AnyString.init) + self._installation_id = installation_id.map(AnyString.init) + self.success = success + } + +} + +public struct DependencyGraph: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _graph_text = "graph_text" + } + private var _graph_text: AnyString? + /** + * The graph structure in the dot language that can be rendered into an image. (read-only) + */ + public var graph_text: String? { + get { _graph_text?.value } + set { _graph_text = newValue.map(AnyString.init) } + } + + public init(graph_text: String? = nil) { + self._graph_text = graph_text.map(AnyString.init) + } + +} + +/** + * Status of the dependencies in your project. Valid values are: "lock_optional", "lock_required", "lock_error", "install_none". (Enum defined in ProjectWorkspace) + */ +public enum DependencyStatus: String, Codable { + case lock_optional = "lock_optional" + case lock_required = "lock_required" + case lock_error = "lock_error" + case install_none = "install_none" +} + +/** + * Type of destination that the alert will be sent to Valid values are: "EMAIL", "ACTION_HUB". (Enum defined in AlertDestination) + */ +public enum DestinationType: String, Codable { + case EMAIL = "EMAIL" + case ACTION_HUB = "ACTION_HUB" +} + +/** + * Specifies type of device. Valid values are: "android", "ios". (Enum defined in MobileToken) + */ +public enum DeviceType: String, Codable { + case android = "android" + case ios = "ios" +} + +public struct Dialect: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _label = "label" + case supports_cost_estimate + case _cost_estimate_style = "cost_estimate_style" + case _persistent_table_indexes = "persistent_table_indexes" + case _persistent_table_sortkeys = "persistent_table_sortkeys" + case _persistent_table_distkey = "persistent_table_distkey" + case supports_streaming + case automatically_run_sql_runner_snippets + case _connection_tests = "connection_tests" + case supports_inducer + case supports_multiple_databases + case supports_persistent_derived_tables + case has_ssl_support } - - /** - * Database connection has the ability to support open data studio from explore (read-only) - */ - public var supports_data_studio_link: Bool? - - private var _created_at: AnyString? + private var _name: AnyString? /** - * Creation date for this connection (read-only) + * The name of the dialect (read-only) */ - public var created_at: String? { - get { _created_at?.value } - set { _created_at = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - private var _user_id: AnyString? + private var _label: AnyString? /** - * Id of user who last modified this connection configuration (read-only) + * The human-readable label of the connection (read-only) */ - public var user_id: String? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyString.init) } + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } } /** - * Is this an example connection? (read-only) + * Whether the dialect supports query cost estimates (read-only) */ - public var example: Bool? + public var supports_cost_estimate: Bool? + private var _cost_estimate_style: AnyString? /** - * (Limited access feature) Are per user db credentials enabled. Enabling will remove previously set username and password + * How the dialect handles cost estimation (read-only) */ - public var user_db_credentials: Bool? + public var cost_estimate_style: String? { + get { _cost_estimate_style?.value } + set { _cost_estimate_style = newValue.map(AnyString.init) } + } - private var _user_attribute_fields: [AnyString]? + private var _persistent_table_indexes: AnyString? /** - * Fields whose values map to user attribute names + * PDT index columns (read-only) */ - public var user_attribute_fields: [String]? { - get { if let v = _user_attribute_fields { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _user_attribute_fields = v.map { AnyString.init($0) } } else { _user_attribute_fields = nil } } + public var persistent_table_indexes: String? { + get { _persistent_table_indexes?.value } + set { _persistent_table_indexes = newValue.map(AnyString.init) } } - private var _maintenance_cron: AnyString? + private var _persistent_table_sortkeys: AnyString? /** - * Cron string specifying when maintenance such as PDT trigger checks and drops should be performed + * PDT sortkey columns (read-only) */ - public var maintenance_cron: String? { - get { _maintenance_cron?.value } - set { _maintenance_cron = newValue.map(AnyString.init) } + public var persistent_table_sortkeys: String? { + get { _persistent_table_sortkeys?.value } + set { _persistent_table_sortkeys = newValue.map(AnyString.init) } } - private var _last_regen_at: AnyString? + private var _persistent_table_distkey: AnyString? /** - * Unix timestamp at start of last completed PDT trigger check process (read-only) + * PDT distkey column (read-only) */ - public var last_regen_at: String? { - get { _last_regen_at?.value } - set { _last_regen_at = newValue.map(AnyString.init) } + public var persistent_table_distkey: String? { + get { _persistent_table_distkey?.value } + set { _persistent_table_distkey = newValue.map(AnyString.init) } } - private var _last_reap_at: AnyString? /** - * Unix timestamp at start of last completed PDT reap process (read-only) + * Suports streaming results (read-only) */ - public var last_reap_at: String? { - get { _last_reap_at?.value } - set { _last_reap_at = newValue.map(AnyString.init) } - } + public var supports_streaming: Bool? /** - * Precache tables in the SQL Runner + * Should SQL Runner snippets automatically be run (read-only) */ - public var sql_runner_precache_tables: Bool? + public var automatically_run_sql_runner_snippets: Bool? + private var _connection_tests: [AnyString]? /** - * Fetch Information Schema For SQL Writing + * Array of names of the tests that can be run on a connection using this dialect (read-only) */ - public var sql_writing_with_info_schema: Bool? + public var connection_tests: [String]? { + get { if let v = _connection_tests { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _connection_tests = v.map { AnyString.init($0) } } else { _connection_tests = nil } } + } - private var _after_connect_statements: AnyString? /** - * SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature + * Is supported with the inducer (i.e. generate from sql) (read-only) */ - public var after_connect_statements: String? { - get { _after_connect_statements?.value } - set { _after_connect_statements = newValue.map(AnyString.init) } - } + public var supports_inducer: Bool? - public var pdt_context_override: DBConnectionOverride? + /** + * Can multiple databases be accessed from a connection using this dialect (read-only) + */ + public var supports_multiple_databases: Bool? /** - * Is this connection created and managed by Looker (read-only) + * Whether the dialect supports allowing Looker to build persistent derived tables (read-only) */ - public var managed: Bool? + public var supports_persistent_derived_tables: Bool? /** - * Enable Transparent Network Substrate (TNS) connections + * Does the database have client SSL support settable through the JDBC string explicitly? (read-only) */ - public var uses_tns: Bool? + public var has_ssl_support: Bool? - public init(can: StringDictionary? = nil, name: String? = nil, dialect: Dialect? = nil, snippets: [Snippet]? = nil, pdts_enabled: Bool? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, uses_oauth: Bool? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, db_timezone: String? = nil, query_timezone: String? = nil, schema: String? = nil, max_connections: Int64? = nil, max_billing_gigabytes: String? = nil, ssl: Bool? = nil, verify_ssl: Bool? = nil, tmp_db_name: String? = nil, jdbc_additional_params: String? = nil, pool_timeout: Int64? = nil, dialect_name: String? = nil, supports_data_studio_link: Bool? = nil, created_at: String? = nil, user_id: String? = nil, example: Bool? = nil, user_db_credentials: Bool? = nil, user_attribute_fields: [String]? = nil, maintenance_cron: String? = nil, last_regen_at: String? = nil, last_reap_at: String? = nil, sql_runner_precache_tables: Bool? = nil, sql_writing_with_info_schema: Bool? = nil, after_connect_statements: String? = nil, pdt_context_override: DBConnectionOverride? = nil, managed: Bool? = nil, uses_tns: Bool? = nil) { - self.can = can + public init(name: String? = nil, label: String? = nil, supports_cost_estimate: Bool? = nil, cost_estimate_style: String? = nil, persistent_table_indexes: String? = nil, persistent_table_sortkeys: String? = nil, persistent_table_distkey: String? = nil, supports_streaming: Bool? = nil, automatically_run_sql_runner_snippets: Bool? = nil, connection_tests: [String]? = nil, supports_inducer: Bool? = nil, supports_multiple_databases: Bool? = nil, supports_persistent_derived_tables: Bool? = nil, has_ssl_support: Bool? = nil) { self._name = name.map(AnyString.init) - self.dialect = dialect - self.snippets = snippets - self.pdts_enabled = pdts_enabled - self._host = host.map(AnyString.init) - self._port = port.map(AnyString.init) - self._username = username.map(AnyString.init) - self._password = password.map(AnyString.init) - self.uses_oauth = uses_oauth - self._certificate = certificate.map(AnyString.init) - self._file_type = file_type.map(AnyString.init) - self._database = database.map(AnyString.init) - self._db_timezone = db_timezone.map(AnyString.init) - self._query_timezone = query_timezone.map(AnyString.init) - self._schema = schema.map(AnyString.init) - self._max_connections = max_connections.map(AnyInt.init) - self._max_billing_gigabytes = max_billing_gigabytes.map(AnyString.init) - self.ssl = ssl - self.verify_ssl = verify_ssl - self._tmp_db_name = tmp_db_name.map(AnyString.init) - self._jdbc_additional_params = jdbc_additional_params.map(AnyString.init) - self._pool_timeout = pool_timeout.map(AnyInt.init) - self._dialect_name = dialect_name.map(AnyString.init) - self.supports_data_studio_link = supports_data_studio_link - self._created_at = created_at.map(AnyString.init) - self._user_id = user_id.map(AnyString.init) - self.example = example - self.user_db_credentials = user_db_credentials - if let v = user_attribute_fields { _user_attribute_fields = v.map { AnyString.init($0) } } else { _user_attribute_fields = nil } - self._maintenance_cron = maintenance_cron.map(AnyString.init) - self._last_regen_at = last_regen_at.map(AnyString.init) - self._last_reap_at = last_reap_at.map(AnyString.init) - self.sql_runner_precache_tables = sql_runner_precache_tables - self.sql_writing_with_info_schema = sql_writing_with_info_schema - self._after_connect_statements = after_connect_statements.map(AnyString.init) - self.pdt_context_override = pdt_context_override - self.managed = managed - self.uses_tns = uses_tns + self._label = label.map(AnyString.init) + self.supports_cost_estimate = supports_cost_estimate + self._cost_estimate_style = cost_estimate_style.map(AnyString.init) + self._persistent_table_indexes = persistent_table_indexes.map(AnyString.init) + self._persistent_table_sortkeys = persistent_table_sortkeys.map(AnyString.init) + self._persistent_table_distkey = persistent_table_distkey.map(AnyString.init) + self.supports_streaming = supports_streaming + self.automatically_run_sql_runner_snippets = automatically_run_sql_runner_snippets + if let v = connection_tests { _connection_tests = v.map { AnyString.init($0) } } else { _connection_tests = nil } + self.supports_inducer = supports_inducer + self.supports_multiple_databases = supports_multiple_databases + self.supports_persistent_derived_tables = supports_persistent_derived_tables + self.has_ssl_support = has_ssl_support } } -public struct DBConnectionBase: SDKModel { +public struct DialectInfo: SDKModel { private enum CodingKeys : String, CodingKey { case can + case _default_max_connections = "default_max_connections" + case _default_port = "default_port" + case installed + case _label = "label" + case _label_for_database_equivalent = "label_for_database_equivalent" case _name = "name" - case dialect - case snippets - case pdts_enabled + case supported_options } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _name: AnyString? + private var _default_max_connections: AnyString? /** - * Name of the connection. Also used as the unique identifier (read-only) + * Default number max connections (read-only) */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var default_max_connections: String? { + get { _default_max_connections?.value } + set { _default_max_connections = newValue.map(AnyString.init) } } - public var dialect: Dialect? + private var _default_port: AnyString? + /** + * Default port number (read-only) + */ + public var default_port: String? { + get { _default_port?.value } + set { _default_port = newValue.map(AnyString.init) } + } /** - * SQL Runner snippets for this connection (read-only) + * Is the supporting driver installed (read-only) */ - public var snippets: [Snippet]? + public var installed: Bool? + private var _label: AnyString? /** - * True if PDTs are enabled on this connection (read-only) + * The human-readable label of the connection (read-only) */ - public var pdts_enabled: Bool? + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, name: String? = nil, dialect: Dialect? = nil, snippets: [Snippet]? = nil, pdts_enabled: Bool? = nil) { + private var _label_for_database_equivalent: AnyString? + /** + * What the dialect calls the equivalent of a normal SQL table (read-only) + */ + public var label_for_database_equivalent: String? { + get { _label_for_database_equivalent?.value } + set { _label_for_database_equivalent = newValue.map(AnyString.init) } + } + + private var _name: AnyString? + /** + * The name of the dialect (read-only) + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + + public var supported_options: DialectInfoOptions? + + public init(can: StringDictionary? = nil, default_max_connections: String? = nil, default_port: String? = nil, installed: Bool? = nil, label: String? = nil, label_for_database_equivalent: String? = nil, name: String? = nil, supported_options: DialectInfoOptions? = nil) { self.can = can + self._default_max_connections = default_max_connections.map(AnyString.init) + self._default_port = default_port.map(AnyString.init) + self.installed = installed + self._label = label.map(AnyString.init) + self._label_for_database_equivalent = label_for_database_equivalent.map(AnyString.init) self._name = name.map(AnyString.init) - self.dialect = dialect - self.snippets = snippets - self.pdts_enabled = pdts_enabled + self.supported_options = supported_options } } -public struct DBConnectionOverride: SDKModel { +public struct DialectInfoOptions: SDKModel { + /** + * Has additional params support (read-only) + */ + public var additional_params: Bool? + + /** + * Has support for issuing statements after connecting to the database (read-only) + */ + public var after_connect_statements: Bool? + + /** + * Has analytical view support (read-only) + */ + public var analytical_view_dataset: Bool? - private enum CodingKeys : String, CodingKey { - case _context = "context" - case _host = "host" - case _port = "port" - case _username = "username" - case _password = "password" - case has_password - case _certificate = "certificate" - case _file_type = "file_type" - case _database = "database" - case _schema = "schema" - case _jdbc_additional_params = "jdbc_additional_params" - case _after_connect_statements = "after_connect_statements" - } - private var _context: AnyString? /** - * Context in which to override (`pdt` is the only allowed value) + * Has auth support (read-only) */ - public var context: String? { - get { _context?.value } - set { _context = newValue.map(AnyString.init) } - } + public var auth: Bool? - private var _host: AnyString? /** - * Host name/address of server + * Has configurable cost estimation (read-only) */ - public var host: String? { - get { _host?.value } - set { _host = newValue.map(AnyString.init) } - } + public var cost_estimate: Bool? - private var _port: AnyString? /** - * Port number on server + * Can disable query context comments (read-only) */ - public var port: String? { - get { _port?.value } - set { _port = newValue.map(AnyString.init) } - } + public var disable_context_comment: Bool? - private var _username: AnyString? /** - * Username for server authentication + * Host is required (read-only) */ - public var username: String? { - get { _username?.value } - set { _username = newValue.map(AnyString.init) } - } + public var host: Bool? - private var _password: AnyString? /** - * (Write-Only) Password for server authentication + * Instance name is required (read-only) */ - public var password: String? { - get { _password?.value } - set { _password = newValue.map(AnyString.init) } - } + public var instance_name: Bool? /** - * Whether or not the password is overridden in this context (read-only) + * Has max billing gigabytes support (read-only) */ - public var has_password: Bool? + public var max_billing_gigabytes: Bool? - private var _certificate: AnyString? /** - * (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). + * Has support for a service account (read-only) */ - public var certificate: String? { - get { _certificate?.value } - set { _certificate = newValue.map(AnyString.init) } - } + public var oauth_credentials: Bool? - private var _file_type: AnyString? /** - * (Write-Only) Certificate keyfile type - .json or .p12 + * Has OAuth for PDT support (read-only) */ - public var file_type: String? { - get { _file_type?.value } - set { _file_type = newValue.map(AnyString.init) } - } + public var pdts_for_oauth: Bool? - private var _database: AnyString? /** - * Database name + * Port can be specified (read-only) */ - public var database: String? { - get { _database?.value } - set { _database = newValue.map(AnyString.init) } - } + public var port: Bool? - private var _schema: AnyString? /** - * Schema name + * Has project name support (read-only) */ - public var schema: String? { - get { _schema?.value } - set { _schema = newValue.map(AnyString.init) } - } + public var project_name: Bool? - private var _jdbc_additional_params: AnyString? /** - * Additional params to add to JDBC connection string + * Schema can be specified (read-only) */ - public var jdbc_additional_params: String? { - get { _jdbc_additional_params?.value } - set { _jdbc_additional_params = newValue.map(AnyString.init) } - } + public var schema: Bool? - private var _after_connect_statements: AnyString? /** - * SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature + * Has support for a service account (read-only) */ - public var after_connect_statements: String? { - get { _after_connect_statements?.value } - set { _after_connect_statements = newValue.map(AnyString.init) } - } + public var service_account_credentials: Bool? - public init(context: String? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, has_password: Bool? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, schema: String? = nil, jdbc_additional_params: String? = nil, after_connect_statements: String? = nil) { - self._context = context.map(AnyString.init) - self._host = host.map(AnyString.init) - self._port = port.map(AnyString.init) - self._username = username.map(AnyString.init) - self._password = password.map(AnyString.init) - self.has_password = has_password - self._certificate = certificate.map(AnyString.init) - self._file_type = file_type.map(AnyString.init) - self._database = database.map(AnyString.init) - self._schema = schema.map(AnyString.init) - self._jdbc_additional_params = jdbc_additional_params.map(AnyString.init) - self._after_connect_statements = after_connect_statements.map(AnyString.init) - } + /** + * Has TLS/SSL support (read-only) + */ + public var ssl: Bool? -} + /** + * Has timezone support (read-only) + */ + public var timezone: Bool? -public struct DBConnectionTestResult: SDKModel { + /** + * Has tmp table support (read-only) + */ + public var tmp_table: Bool? - private enum CodingKeys : String, CodingKey { - case can - case _connection_string = "connection_string" - case _message = "message" - case _name = "name" - case _status = "status" - } /** - * Operations the current user is able to perform on this object (read-only) + * Has Oracle TNS support (read-only) */ - public var can: StringDictionary? + public var tns: Bool? - private var _connection_string: AnyString? /** - * JDBC connection string. (only populated in the 'connect' test) (read-only) + * Username can be specified (read-only) */ - public var connection_string: String? { - get { _connection_string?.value } - set { _connection_string = newValue.map(AnyString.init) } - } + public var username: Bool? - private var _message: AnyString? /** - * Result message of test (read-only) + * Username is required (read-only) */ - public var message: String? { - get { _message?.value } - set { _message = newValue.map(AnyString.init) } + public var username_required: Bool? + + public init(additional_params: Bool? = nil, after_connect_statements: Bool? = nil, analytical_view_dataset: Bool? = nil, auth: Bool? = nil, cost_estimate: Bool? = nil, disable_context_comment: Bool? = nil, host: Bool? = nil, instance_name: Bool? = nil, max_billing_gigabytes: Bool? = nil, oauth_credentials: Bool? = nil, pdts_for_oauth: Bool? = nil, port: Bool? = nil, project_name: Bool? = nil, schema: Bool? = nil, service_account_credentials: Bool? = nil, ssl: Bool? = nil, timezone: Bool? = nil, tmp_table: Bool? = nil, tns: Bool? = nil, username: Bool? = nil, username_required: Bool? = nil) { + self.additional_params = additional_params + self.after_connect_statements = after_connect_statements + self.analytical_view_dataset = analytical_view_dataset + self.auth = auth + self.cost_estimate = cost_estimate + self.disable_context_comment = disable_context_comment + self.host = host + self.instance_name = instance_name + self.max_billing_gigabytes = max_billing_gigabytes + self.oauth_credentials = oauth_credentials + self.pdts_for_oauth = pdts_for_oauth + self.port = port + self.project_name = project_name + self.schema = schema + self.service_account_credentials = service_account_credentials + self.ssl = ssl + self.timezone = timezone + self.tmp_table = tmp_table + self.tns = tns + self.username = username + self.username_required = username_required } - private var _name: AnyString? +} + +public struct DigestEmails: SDKModel { /** - * Name of test (read-only) + * Whether or not digest emails are enabled */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var is_enabled: Bool? + + public init(is_enabled: Bool? = nil) { + self.is_enabled = is_enabled } - private var _status: AnyString? +} + +public struct DigestEmailSend: SDKModel { /** - * Result code of test (read-only) + * True if content was successfully generated and delivered */ - public var status: String? { - get { _status?.value } - set { _status = newValue.map(AnyString.init) } - } + public var configuration_delivered: Bool? - public init(can: StringDictionary? = nil, connection_string: String? = nil, message: String? = nil, name: String? = nil, status: String? = nil) { - self.can = can - self._connection_string = connection_string.map(AnyString.init) - self._message = message.map(AnyString.init) - self._name = name.map(AnyString.init) - self._status = status.map(AnyString.init) + public init(configuration_delivered: Bool? = nil) { + self.configuration_delivered = configuration_delivered } } -public struct DelegateOauthTest: SDKModel { +public struct DiscretePalette: SDKModel { private enum CodingKeys : String, CodingKey { - case _name = "name" - case _installation_target_id = "installation_target_id" - case _installation_id = "installation_id" - case success + case _id = "id" + case _label = "label" + case _type = "type" + case _colors = "colors" } - private var _name: AnyString? + private var _id: AnyString? /** - * Delegate Oauth Connection Name (read-only) + * Unique identity string (read-only) */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } } - private var _installation_target_id: AnyString? + private var _label: AnyString? /** - * The ID of the installation target. For Slack, this would be workspace id. (read-only) + * Label for palette */ - public var installation_target_id: String? { - get { _installation_target_id?.value } - set { _installation_target_id = newValue.map(AnyString.init) } + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } } - private var _installation_id: AnyInt? + private var _type: AnyString? /** - * Installation ID (read-only) + * Type of palette */ - public var installation_id: Int64? { - get { _installation_id?.value } - set { _installation_id = newValue.map(AnyInt.init) } + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } } + private var _colors: [AnyString]? /** - * Whether or not the test was successful (read-only) + * Array of colors in the palette */ - public var success: Bool? + public var colors: [String]? { + get { if let v = _colors { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _colors = v.map { AnyString.init($0) } } else { _colors = nil } } + } - public init(name: String? = nil, installation_target_id: String? = nil, installation_id: Int64? = nil, success: Bool? = nil) { - self._name = name.map(AnyString.init) - self._installation_target_id = installation_target_id.map(AnyString.init) - self._installation_id = installation_id.map(AnyInt.init) - self.success = success + public init(id: String? = nil, label: String? = nil, type: String? = nil, colors: [String]? = nil) { + self._id = id.map(AnyString.init) + self._label = label.map(AnyString.init) + self._type = type.map(AnyString.init) + if let v = colors { _colors = v.map { AnyString.init($0) } } else { _colors = nil } } } -public struct DependencyGraph: SDKModel { +public struct EgressIpAddresses: SDKModel { private enum CodingKeys : String, CodingKey { - case _graph_text = "graph_text" + case _egress_ip_addresses = "egress_ip_addresses" } - private var _graph_text: AnyString? + private var _egress_ip_addresses: [AnyString]? /** - * The graph structure in the dot language that can be rendered into an image. (read-only) + * Egress IP addresses (read-only) */ - public var graph_text: String? { - get { _graph_text?.value } - set { _graph_text = newValue.map(AnyString.init) } + public var egress_ip_addresses: [String]? { + get { if let v = _egress_ip_addresses { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _egress_ip_addresses = v.map { AnyString.init($0) } } else { _egress_ip_addresses = nil } } } - public init(graph_text: String? = nil) { - self._graph_text = graph_text.map(AnyString.init) + public init(egress_ip_addresses: [String]? = nil) { + if let v = egress_ip_addresses { _egress_ip_addresses = v.map { AnyString.init($0) } } else { _egress_ip_addresses = nil } } } -/** - * Status of the dependencies in your project. Valid values are: "lock_optional", "lock_required", "lock_error", "install_none". (Enum defined in ProjectWorkspace) - */ -public enum DependencyStatus: String, Codable { - case lock_optional = "lock_optional" - case lock_required = "lock_required" - case lock_error = "lock_error" - case install_none = "install_none" -} - -public struct Dialect: SDKModel { +public struct EmbedConfig: SDKModel { private enum CodingKeys : String, CodingKey { - case _name = "name" - case _label = "label" - case supports_cost_estimate - case _cost_estimate_style = "cost_estimate_style" - case _persistent_table_indexes = "persistent_table_indexes" - case _persistent_table_sortkeys = "persistent_table_sortkeys" - case _persistent_table_distkey = "persistent_table_distkey" - case supports_streaming - case automatically_run_sql_runner_snippets - case _connection_tests = "connection_tests" - case supports_inducer - case supports_multiple_databases - case supports_persistent_derived_tables - case has_ssl_support + case _domain_allowlist = "domain_allowlist" + case _alert_url_allowlist = "alert_url_allowlist" + case _alert_url_param_owner = "alert_url_param_owner" + case _alert_url_label = "alert_url_label" + case sso_auth_enabled + case embed_cookieless_v2 + case embed_content_navigation + case embed_content_management + case strict_sameorigin_for_login + case look_filters + case hide_look_navigation } - private var _name: AnyString? + private var _domain_allowlist: [AnyString]? /** - * The name of the dialect (read-only) + * List of domains to allow for embedding */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var domain_allowlist: [String]? { + get { if let v = _domain_allowlist { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _domain_allowlist = v.map { AnyString.init($0) } } else { _domain_allowlist = nil } } } - private var _label: AnyString? + private var _alert_url_allowlist: [AnyString]? /** - * The human-readable label of the connection (read-only) + * List of base urls to allow for alert/schedule */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } + public var alert_url_allowlist: [String]? { + get { if let v = _alert_url_allowlist { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _alert_url_allowlist = v.map { AnyString.init($0) } } else { _alert_url_allowlist = nil } } } + private var _alert_url_param_owner: AnyString? /** - * Whether the dialect supports query cost estimates (read-only) + * Owner of who defines the alert/schedule params on the base url */ - public var supports_cost_estimate: Bool? + public var alert_url_param_owner: String? { + get { _alert_url_param_owner?.value } + set { _alert_url_param_owner = newValue.map(AnyString.init) } + } - private var _cost_estimate_style: AnyString? + private var _alert_url_label: AnyString? /** - * How the dialect handles cost estimation (read-only) + * Label for the alert/schedule url */ - public var cost_estimate_style: String? { - get { _cost_estimate_style?.value } - set { _cost_estimate_style = newValue.map(AnyString.init) } + public var alert_url_label: String? { + get { _alert_url_label?.value } + set { _alert_url_label = newValue.map(AnyString.init) } } - private var _persistent_table_indexes: AnyString? /** - * PDT index columns (read-only) + * Is SSO embedding enabled for this Looker */ - public var persistent_table_indexes: String? { - get { _persistent_table_indexes?.value } - set { _persistent_table_indexes = newValue.map(AnyString.init) } - } + public var sso_auth_enabled: Bool? - private var _persistent_table_sortkeys: AnyString? /** - * PDT sortkey columns (read-only) + * Is Cookieless embedding enabled for this Looker */ - public var persistent_table_sortkeys: String? { - get { _persistent_table_sortkeys?.value } - set { _persistent_table_sortkeys = newValue.map(AnyString.init) } - } + public var embed_cookieless_v2: Bool? - private var _persistent_table_distkey: AnyString? /** - * PDT distkey column (read-only) + * Is embed content navigation enabled for this looker */ - public var persistent_table_distkey: String? { - get { _persistent_table_distkey?.value } - set { _persistent_table_distkey = newValue.map(AnyString.init) } - } + public var embed_content_navigation: Bool? /** - * Suports streaming results (read-only) + * Is embed content management enabled for this Looker */ - public var supports_streaming: Bool? + public var embed_content_management: Bool? /** - * Should SQL Runner snippets automatically be run (read-only) + * 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. */ - public var automatically_run_sql_runner_snippets: Bool? + public var strict_sameorigin_for_login: Bool? - private var _connection_tests: [AnyString]? /** - * Array of names of the tests that can be run on a connection using this dialect (read-only) + * When true, filters are enabled on embedded Looks */ - public var connection_tests: [String]? { - get { if let v = _connection_tests { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _connection_tests = v.map { AnyString.init($0) } } else { _connection_tests = nil } } - } + public var look_filters: Bool? /** - * Is supported with the inducer (i.e. generate from sql) (read-only) + * When true, removes navigation to Looks from embedded dashboards and explores. */ - public var supports_inducer: Bool? + public var hide_look_navigation: Bool? + + public init(domain_allowlist: [String]? = nil, alert_url_allowlist: [String]? = nil, alert_url_param_owner: String? = nil, alert_url_label: String? = nil, sso_auth_enabled: Bool? = nil, embed_cookieless_v2: Bool? = nil, embed_content_navigation: Bool? = nil, embed_content_management: Bool? = nil, strict_sameorigin_for_login: Bool? = nil, look_filters: Bool? = nil, hide_look_navigation: Bool? = nil) { + if let v = domain_allowlist { _domain_allowlist = v.map { AnyString.init($0) } } else { _domain_allowlist = nil } + if let v = alert_url_allowlist { _alert_url_allowlist = v.map { AnyString.init($0) } } else { _alert_url_allowlist = nil } + self._alert_url_param_owner = alert_url_param_owner.map(AnyString.init) + self._alert_url_label = alert_url_label.map(AnyString.init) + self.sso_auth_enabled = sso_auth_enabled + self.embed_cookieless_v2 = embed_cookieless_v2 + self.embed_content_navigation = embed_content_navigation + self.embed_content_management = embed_content_management + self.strict_sameorigin_for_login = strict_sameorigin_for_login + self.look_filters = look_filters + self.hide_look_navigation = hide_look_navigation + } + +} + +public struct EmbedCookielessSessionAcquire: SDKModel { + private enum CodingKeys : String, CodingKey { + case _session_length = "session_length" + case force_logout_login + case _external_user_id = "external_user_id" + case _first_name = "first_name" + case _last_name = "last_name" + case _user_timezone = "user_timezone" + case _permissions = "permissions" + case _models = "models" + case _group_ids = "group_ids" + case _external_group_id = "external_group_id" + case user_attributes + case _embed_domain = "embed_domain" + case _session_reference_token = "session_reference_token" + } + private var _session_length: AnyInt? /** - * Can multiple databases be accessed from a connection using this dialect (read-only) + * 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). */ - public var supports_multiple_databases: Bool? + public var session_length: Int64? { + get { _session_length?.value } + set { _session_length = newValue.map(AnyInt.init) } + } /** - * Whether the dialect supports allowing Looker to build persistent derived tables (read-only) + * 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. */ - public var supports_persistent_derived_tables: Bool? + public var force_logout_login: Bool? + private var _external_user_id: AnyString? /** - * Does the database have client SSL support settable through the JDBC string explicitly? (read-only) + * A value from an external system that uniquely identifies the embed user. Since the user_ids of Looker embed users may change with every embed session, external_user_id provides a way to assign a known, stable user identifier across multiple embed sessions. When the same external user id value is used for a new embed session, any existing session is terminated and existing access grants are replaced with the access grants associated with the new embed session. */ - public var has_ssl_support: Bool? - - public init(name: String? = nil, label: String? = nil, supports_cost_estimate: Bool? = nil, cost_estimate_style: String? = nil, persistent_table_indexes: String? = nil, persistent_table_sortkeys: String? = nil, persistent_table_distkey: String? = nil, supports_streaming: Bool? = nil, automatically_run_sql_runner_snippets: Bool? = nil, connection_tests: [String]? = nil, supports_inducer: Bool? = nil, supports_multiple_databases: Bool? = nil, supports_persistent_derived_tables: Bool? = nil, has_ssl_support: Bool? = nil) { - self._name = name.map(AnyString.init) - self._label = label.map(AnyString.init) - self.supports_cost_estimate = supports_cost_estimate - self._cost_estimate_style = cost_estimate_style.map(AnyString.init) - self._persistent_table_indexes = persistent_table_indexes.map(AnyString.init) - self._persistent_table_sortkeys = persistent_table_sortkeys.map(AnyString.init) - self._persistent_table_distkey = persistent_table_distkey.map(AnyString.init) - self.supports_streaming = supports_streaming - self.automatically_run_sql_runner_snippets = automatically_run_sql_runner_snippets - if let v = connection_tests { _connection_tests = v.map { AnyString.init($0) } } else { _connection_tests = nil } - self.supports_inducer = supports_inducer - self.supports_multiple_databases = supports_multiple_databases - self.supports_persistent_derived_tables = supports_persistent_derived_tables - self.has_ssl_support = has_ssl_support + public var external_user_id: String? { + get { _external_user_id?.value } + set { _external_user_id = newValue.map(AnyString.init) } } -} - -public struct DialectInfo: SDKModel { - - private enum CodingKeys : String, CodingKey { - case can - case _default_max_connections = "default_max_connections" - case _default_port = "default_port" - case installed - case _label = "label" - case _label_for_database_equivalent = "label_for_database_equivalent" - case _name = "name" - case supported_options + private var _first_name: AnyString? + /** + * First name of the embed user. Defaults to 'Embed' if not specified + */ + public var first_name: String? { + get { _first_name?.value } + set { _first_name = newValue.map(AnyString.init) } } + + private var _last_name: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * Last name of the embed user. Defaults to 'User' if not specified */ - public var can: StringDictionary? + public var last_name: String? { + get { _last_name?.value } + set { _last_name = newValue.map(AnyString.init) } + } - private var _default_max_connections: AnyString? + private var _user_timezone: AnyString? /** - * Default number max connections (read-only) + * Sets the user timezone for the embed user session, if the User Specific Timezones setting is enabled in the Looker admin settings. A value of `null` forces the embed user to use the Looker Application Default Timezone. You MUST omit this property from the request if the User Specific Timezones setting is disabled. Timezone values are validated against the IANA Timezone standard and can be seen in the Application Time Zone dropdown list on the Looker General Settings admin page. */ - public var default_max_connections: String? { - get { _default_max_connections?.value } - set { _default_max_connections = newValue.map(AnyString.init) } + public var user_timezone: String? { + get { _user_timezone?.value } + set { _user_timezone = newValue.map(AnyString.init) } } - private var _default_port: AnyString? + private var _permissions: [AnyString]? /** - * Default port number (read-only) + * List of Looker permission names to grant to the embed user. Requested permissions will be filtered to permissions allowed for embed sessions. */ - public var default_port: String? { - get { _default_port?.value } - set { _default_port = newValue.map(AnyString.init) } + public var permissions: [String]? { + get { if let v = _permissions { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } } } + private var _models: [AnyString]? /** - * Is the supporting driver installed (read-only) + * List of model names that the embed user may access */ - public var installed: Bool? + public var models: [String]? { + get { if let v = _models { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _models = v.map { AnyString.init($0) } } else { _models = nil } } + } - private var _label: AnyString? + private var _group_ids: [AnyString]? /** - * The human-readable label of the connection (read-only) + * List of Looker group ids in which to enroll the embed user */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } + public var group_ids: [String]? { + get { if let v = _group_ids { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _group_ids = v.map { AnyString.init($0) } } else { _group_ids = nil } } } - private var _label_for_database_equivalent: AnyString? + private var _external_group_id: AnyString? /** - * What the dialect calls the equivalent of a normal SQL table (read-only) + * A unique value identifying an embed-exclusive group. Multiple embed users using the same `external_group_id` value will be able to share Looker content with each other. Content and embed users associated with the `external_group_id` will not be accessible to normal Looker users or embed users not associated with this `external_group_id`. */ - public var label_for_database_equivalent: String? { - get { _label_for_database_equivalent?.value } - set { _label_for_database_equivalent = newValue.map(AnyString.init) } + public var external_group_id: String? { + get { _external_group_id?.value } + set { _external_group_id = newValue.map(AnyString.init) } } - private var _name: AnyString? /** - * The name of the dialect (read-only) + * A dictionary of name-value pairs associating a Looker user attribute name with a value. */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var user_attributes: StringDictionary? + + private var _embed_domain: AnyString? + /** + * 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. + */ + public var embed_domain: String? { + get { _embed_domain?.value } + set { _embed_domain = newValue.map(AnyString.init) } } - public var supported_options: DialectInfoOptions? + private var _session_reference_token: AnyString? + /** + * Token referencing the embed session and is used to generate new authentication, navigation and api tokens. + */ + public var session_reference_token: String? { + get { _session_reference_token?.value } + set { _session_reference_token = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, default_max_connections: String? = nil, default_port: String? = nil, installed: Bool? = nil, label: String? = nil, label_for_database_equivalent: String? = nil, name: String? = nil, supported_options: DialectInfoOptions? = nil) { - self.can = can - self._default_max_connections = default_max_connections.map(AnyString.init) - self._default_port = default_port.map(AnyString.init) - self.installed = installed - self._label = label.map(AnyString.init) - self._label_for_database_equivalent = label_for_database_equivalent.map(AnyString.init) - self._name = name.map(AnyString.init) - self.supported_options = supported_options + public init(session_length: Int64? = nil, force_logout_login: Bool? = nil, external_user_id: String? = nil, first_name: String? = nil, last_name: String? = nil, user_timezone: String? = nil, permissions: [String]? = nil, models: [String]? = nil, group_ids: [String]? = nil, external_group_id: String? = nil, user_attributes: StringDictionary? = nil, embed_domain: String? = nil, session_reference_token: String? = nil) { + self._session_length = session_length.map(AnyInt.init) + self.force_logout_login = force_logout_login + self._external_user_id = external_user_id.map(AnyString.init) + self._first_name = first_name.map(AnyString.init) + self._last_name = last_name.map(AnyString.init) + self._user_timezone = user_timezone.map(AnyString.init) + if let v = permissions { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } + if let v = models { _models = v.map { AnyString.init($0) } } else { _models = nil } + if let v = group_ids { _group_ids = v.map { AnyString.init($0) } } else { _group_ids = nil } + self._external_group_id = external_group_id.map(AnyString.init) + self.user_attributes = user_attributes + self._embed_domain = embed_domain.map(AnyString.init) + self._session_reference_token = session_reference_token.map(AnyString.init) } } -public struct DialectInfoOptions: SDKModel { - /** - * Has additional params support (read-only) - */ - public var additional_params: Bool? +public struct EmbedCookielessSessionAcquireResponse: SDKModel { + private enum CodingKeys : String, CodingKey { + case _authentication_token = "authentication_token" + case _authentication_token_ttl = "authentication_token_ttl" + case _navigation_token = "navigation_token" + case _navigation_token_ttl = "navigation_token_ttl" + case _api_token = "api_token" + case _api_token_ttl = "api_token_ttl" + case _session_reference_token = "session_reference_token" + case _session_reference_token_ttl = "session_reference_token_ttl" + } + private var _authentication_token: AnyString? /** - * Has support for issuing statements after connecting to the database (read-only) + * One time token used to create or to attach to an embedded session in the Looker application server. */ - public var after_connect_statements: Bool? + public var authentication_token: String? { + get { _authentication_token?.value } + set { _authentication_token = newValue.map(AnyString.init) } + } + private var _authentication_token_ttl: AnyInt? /** - * Has analytical view support (read-only) + * Authentication token time to live in seconds. */ - public var analytical_view_dataset: Bool? + public var authentication_token_ttl: Int64? { + get { _authentication_token_ttl?.value } + set { _authentication_token_ttl = newValue.map(AnyInt.init) } + } + private var _navigation_token: AnyString? /** - * Has auth support (read-only) + * Token used to load and navigate between Looker pages. */ - public var auth: Bool? + public var navigation_token: String? { + get { _navigation_token?.value } + set { _navigation_token = newValue.map(AnyString.init) } + } + private var _navigation_token_ttl: AnyInt? /** - * Has configurable cost estimation (read-only) + * Navigation token time to live in seconds. */ - public var cost_estimate: Bool? + public var navigation_token_ttl: Int64? { + get { _navigation_token_ttl?.value } + set { _navigation_token_ttl = newValue.map(AnyInt.init) } + } + private var _api_token: AnyString? /** - * Can disable query context comments (read-only) + * Token to used to call Looker APIs. */ - public var disable_context_comment: Bool? + public var api_token: String? { + get { _api_token?.value } + set { _api_token = newValue.map(AnyString.init) } + } + private var _api_token_ttl: AnyInt? /** - * Host is required (read-only) + * Api token time to live in seconds. */ - public var host: Bool? + public var api_token_ttl: Int64? { + get { _api_token_ttl?.value } + set { _api_token_ttl = newValue.map(AnyInt.init) } + } + private var _session_reference_token: AnyString? /** - * Instance name is required (read-only) + * 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. */ - public var instance_name: Bool? + public var session_reference_token: String? { + get { _session_reference_token?.value } + set { _session_reference_token = newValue.map(AnyString.init) } + } + private var _session_reference_token_ttl: AnyInt? /** - * Has max billing gigabytes support (read-only) + * Session reference token time to live in seconds. Note that this is the same as actual session. */ - public var max_billing_gigabytes: Bool? + public var session_reference_token_ttl: Int64? { + get { _session_reference_token_ttl?.value } + set { _session_reference_token_ttl = newValue.map(AnyInt.init) } + } - /** - * Has support for a service account (read-only) - */ - public var oauth_credentials: Bool? + public init(authentication_token: String? = nil, authentication_token_ttl: Int64? = nil, navigation_token: String? = nil, navigation_token_ttl: Int64? = nil, api_token: String? = nil, api_token_ttl: Int64? = nil, session_reference_token: String? = nil, session_reference_token_ttl: Int64? = nil) { + self._authentication_token = authentication_token.map(AnyString.init) + self._authentication_token_ttl = authentication_token_ttl.map(AnyInt.init) + self._navigation_token = navigation_token.map(AnyString.init) + self._navigation_token_ttl = navigation_token_ttl.map(AnyInt.init) + self._api_token = api_token.map(AnyString.init) + self._api_token_ttl = api_token_ttl.map(AnyInt.init) + self._session_reference_token = session_reference_token.map(AnyString.init) + self._session_reference_token_ttl = session_reference_token_ttl.map(AnyInt.init) + } - /** - * Has OAuth for PDT support (read-only) - */ - public var pdts_for_oauth: Bool? +} - /** - * Port can be specified (read-only) - */ - public var port: Bool? +public struct EmbedCookielessSessionGenerateTokens: SDKModel { + private enum CodingKeys : String, CodingKey { + case _session_reference_token = "session_reference_token" + case _navigation_token = "navigation_token" + case _api_token = "api_token" + } + private var _session_reference_token: AnyString /** - * Has project name support (read-only) + * Token referencing the embed session and is used to generate new authentication, navigation and api tokens. */ - public var project_name: Bool? + public var session_reference_token: String { + get { _session_reference_token.value } + set { _session_reference_token = AnyString.init(newValue) } + } + private var _navigation_token: AnyString? /** - * Schema can be specified (read-only) + * Token used to load and navigate between Looker pages. */ - public var schema: Bool? + public var navigation_token: String? { + get { _navigation_token?.value } + set { _navigation_token = newValue.map(AnyString.init) } + } + private var _api_token: AnyString? /** - * Has support for a service account (read-only) + * Token to used to call Looker APIs. */ - public var service_account_credentials: Bool? + public var api_token: String? { + get { _api_token?.value } + set { _api_token = newValue.map(AnyString.init) } + } - /** - * Has TLS/SSL support (read-only) - */ - public var ssl: Bool? + public init(session_reference_token: String, navigation_token: String? = nil, api_token: String? = nil) { + self._session_reference_token = AnyString.init(session_reference_token) + self._navigation_token = navigation_token.map(AnyString.init) + self._api_token = api_token.map(AnyString.init) + } + public init(_ session_reference_token: String, navigation_token: String? = nil, api_token: String? = nil) { + self.init(session_reference_token: session_reference_token, navigation_token: navigation_token, api_token: api_token) + } + +} + +public struct EmbedCookielessSessionGenerateTokensResponse: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _navigation_token = "navigation_token" + case _navigation_token_ttl = "navigation_token_ttl" + case _api_token = "api_token" + case _api_token_ttl = "api_token_ttl" + case _session_reference_token = "session_reference_token" + case _session_reference_token_ttl = "session_reference_token_ttl" + } + private var _navigation_token: AnyString? /** - * Has timezone support (read-only) + * Token used to load and navigate between Looker pages. */ - public var timezone: Bool? + public var navigation_token: String? { + get { _navigation_token?.value } + set { _navigation_token = newValue.map(AnyString.init) } + } + private var _navigation_token_ttl: AnyInt? /** - * Has tmp table support (read-only) + * Navigation token time to live in seconds. */ - public var tmp_table: Bool? + public var navigation_token_ttl: Int64? { + get { _navigation_token_ttl?.value } + set { _navigation_token_ttl = newValue.map(AnyInt.init) } + } + private var _api_token: AnyString? /** - * Has Oracle TNS support (read-only) + * Token to used to call Looker APIs. */ - public var tns: Bool? + public var api_token: String? { + get { _api_token?.value } + set { _api_token = newValue.map(AnyString.init) } + } + private var _api_token_ttl: AnyInt? /** - * Username can be specified (read-only) + * Api token time to live in seconds. */ - public var username: Bool? + public var api_token_ttl: Int64? { + get { _api_token_ttl?.value } + set { _api_token_ttl = newValue.map(AnyInt.init) } + } + private var _session_reference_token: AnyString /** - * Username is required (read-only) + * Token referencing the embed session and is used to generate new authentication, navigation and api tokens. */ - public var username_required: Bool? + public var session_reference_token: String { + get { _session_reference_token.value } + set { _session_reference_token = AnyString.init(newValue) } + } + private var _session_reference_token_ttl: AnyInt? /** - * Operations the current user is able to perform on this object (read-only) + * Session reference token time to live in seconds. Note that this is the same as actual session. */ - public var can: StringDictionary? + public var session_reference_token_ttl: Int64? { + get { _session_reference_token_ttl?.value } + set { _session_reference_token_ttl = newValue.map(AnyInt.init) } + } - public init(additional_params: Bool? = nil, after_connect_statements: Bool? = nil, analytical_view_dataset: Bool? = nil, auth: Bool? = nil, cost_estimate: Bool? = nil, disable_context_comment: Bool? = nil, host: Bool? = nil, instance_name: Bool? = nil, max_billing_gigabytes: Bool? = nil, oauth_credentials: Bool? = nil, pdts_for_oauth: Bool? = nil, port: Bool? = nil, project_name: Bool? = nil, schema: Bool? = nil, service_account_credentials: Bool? = nil, ssl: Bool? = nil, timezone: Bool? = nil, tmp_table: Bool? = nil, tns: Bool? = nil, username: Bool? = nil, username_required: Bool? = nil, can: StringDictionary? = nil) { - self.additional_params = additional_params - self.after_connect_statements = after_connect_statements - self.analytical_view_dataset = analytical_view_dataset - self.auth = auth - self.cost_estimate = cost_estimate - self.disable_context_comment = disable_context_comment - self.host = host - self.instance_name = instance_name - self.max_billing_gigabytes = max_billing_gigabytes - self.oauth_credentials = oauth_credentials - self.pdts_for_oauth = pdts_for_oauth - self.port = port - self.project_name = project_name - self.schema = schema - self.service_account_credentials = service_account_credentials - self.ssl = ssl - self.timezone = timezone - self.tmp_table = tmp_table - self.tns = tns - self.username = username - self.username_required = username_required - self.can = can + public init(navigation_token: String? = nil, navigation_token_ttl: Int64? = nil, api_token: String? = nil, api_token_ttl: Int64? = nil, session_reference_token: String, session_reference_token_ttl: Int64? = nil) { + self._navigation_token = navigation_token.map(AnyString.init) + self._navigation_token_ttl = navigation_token_ttl.map(AnyInt.init) + self._api_token = api_token.map(AnyString.init) + self._api_token_ttl = api_token_ttl.map(AnyInt.init) + self._session_reference_token = AnyString.init(session_reference_token) + self._session_reference_token_ttl = session_reference_token_ttl.map(AnyInt.init) + } + + public init(navigation_token: String? = nil, navigation_token_ttl: Int64? = nil, api_token: String? = nil, api_token_ttl: Int64? = nil, _ session_reference_token: String, session_reference_token_ttl: Int64? = nil) { + self.init(navigation_token: navigation_token, navigation_token_ttl: navigation_token_ttl, api_token: api_token, api_token_ttl: api_token_ttl, session_reference_token: session_reference_token, session_reference_token_ttl: session_reference_token_ttl) } } -public struct DigestEmails: SDKModel { +public struct EmbedParams: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _target_url = "target_url" + case _session_length = "session_length" + case force_logout_login + } + private var _target_url: AnyString /** - * Whether or not digest emails are enabled + * The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. */ - public var is_enabled: Bool? - - public init(is_enabled: Bool? = nil) { - self.is_enabled = is_enabled + public var target_url: String { + get { _target_url.value } + set { _target_url = AnyString.init(newValue) } } -} + private var _session_length: AnyInt? + /** + * 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). + */ + public var session_length: Int64? { + get { _session_length?.value } + set { _session_length = newValue.map(AnyInt.init) } + } -public struct DigestEmailSend: SDKModel { /** - * True if content was successfully generated and delivered + * 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. */ - public var configuration_delivered: Bool? + public var force_logout_login: Bool? - public init(configuration_delivered: Bool? = nil) { - self.configuration_delivered = configuration_delivered + public init(target_url: String, session_length: Int64? = nil, force_logout_login: Bool? = nil) { + self._target_url = AnyString.init(target_url) + self._session_length = session_length.map(AnyInt.init) + self.force_logout_login = force_logout_login + } + + public init(_ target_url: String, session_length: Int64? = nil, force_logout_login: Bool? = nil) { + self.init(target_url: target_url, session_length: session_length, force_logout_login: force_logout_login) } } -public struct DiscretePalette: SDKModel { +public struct EmbedSecret: SDKModel { private enum CodingKeys : String, CodingKey { + case _algorithm = "algorithm" + case _created_at = "created_at" + case enabled case _id = "id" - case _label = "label" - case _type = "type" - case _colors = "colors" + case _secret = "secret" + case _user_id = "user_id" + case secret_type + } + private var _algorithm: AnyString? + /** + * Signing algorithm to use with this secret. Either `hmac/sha-256`(default) or `hmac/sha-1` + */ + public var algorithm: String? { + get { _algorithm?.value } + set { _algorithm = newValue.map(AnyString.init) } + } + + private var _created_at: AnyString? + /** + * When secret was created (read-only) + */ + public var created_at: String? { + get { _created_at?.value } + set { _created_at = newValue.map(AnyString.init) } } + + /** + * Is this secret currently enabled + */ + public var enabled: Bool? + private var _id: AnyString? /** - * Unique identity string (read-only) + * Unique Id (read-only) */ public var id: String? { get { _id?.value } set { _id = newValue.map(AnyString.init) } } - private var _label: AnyString? + private var _secret: AnyString? /** - * Label for palette + * Secret for use with SSO embedding (read-only) */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } + public var secret: String? { + get { _secret?.value } + set { _secret = newValue.map(AnyString.init) } } - private var _type: AnyString? + private var _user_id: AnyString? /** - * Type of palette + * Id of user who created this secret (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } } - private var _colors: [AnyString]? /** - * Array of colors in the palette + * Field to distinguish between SSO secrets and JWT secrets Valid values are: "SSO", "JWT". */ - public var colors: [String]? { - get { if let v = _colors { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _colors = v.map { AnyString.init($0) } } else { _colors = nil } } - } + public var secret_type: SecretType? - public init(id: String? = nil, label: String? = nil, type: String? = nil, colors: [String]? = nil) { + public init(algorithm: String? = nil, created_at: String? = nil, enabled: Bool? = nil, id: String? = nil, secret: String? = nil, user_id: String? = nil, secret_type: SecretType? = nil) { + self._algorithm = algorithm.map(AnyString.init) + self._created_at = created_at.map(AnyString.init) + self.enabled = enabled self._id = id.map(AnyString.init) - self._label = label.map(AnyString.init) - self._type = type.map(AnyString.init) - if let v = colors { _colors = v.map { AnyString.init($0) } } else { _colors = nil } + self._secret = secret.map(AnyString.init) + self._user_id = user_id.map(AnyString.init) + self.secret_type = secret_type } } @@ -5874,7 +8572,7 @@ public struct DiscretePalette: SDKModel { public struct EmbedSsoParams: SDKModel { private enum CodingKeys : String, CodingKey { - case target_url + case _target_url = "target_url" case _session_length = "session_length" case force_logout_login case _external_user_id = "external_user_id" @@ -5889,10 +8587,14 @@ public struct EmbedSsoParams: SDKModel { case _secret_id = "secret_id" case _embed_domain = "embed_domain" } + private var _target_url: AnyString /** * The complete URL of the Looker UI page to display in the embed context. For example, to display the dashboard with id 34, `target_url` would look like: `https://mycompany.looker.com:9999/dashboards/34`. `target_uri` MUST contain a scheme (HTTPS), domain name, and URL path. Port must be included if it is required to reach the Looker server from browser clients. If the Looker instance is behind a load balancer or other proxy, `target_uri` must be the public-facing domain name and port required to reach the Looker instance, not the actual internal network machine name of the Looker instance. */ - public var target_url: URI + public var target_url: String { + get { _target_url.value } + set { _target_url = AnyString.init(newValue) } + } private var _session_length: AnyInt? /** @@ -5962,13 +8664,13 @@ public struct EmbedSsoParams: SDKModel { set { if let v = newValue { _models = v.map { AnyString.init($0) } } else { _models = nil } } } - private var _group_ids: [AnyInt]? + private var _group_ids: [AnyString]? /** * List of Looker group ids in which to enroll the embed user */ - public var group_ids: [Int64]? { + public var group_ids: [String]? { get { if let v = _group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _group_ids = v.map { AnyInt.init($0) } } else { _group_ids = nil } } + set { if let v = newValue { _group_ids = v.map { AnyString.init($0) } } else { _group_ids = nil } } } private var _external_group_id: AnyString? @@ -5985,13 +8687,13 @@ public struct EmbedSsoParams: SDKModel { */ public var user_attributes: StringDictionary? - private var _secret_id: AnyInt? + private var _secret_id: AnyString? /** * 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. */ - public var secret_id: Int64? { + public var secret_id: String? { get { _secret_id?.value } - set { _secret_id = newValue.map(AnyInt.init) } + set { _secret_id = newValue.map(AnyString.init) } } private var _embed_domain: AnyString? @@ -6003,8 +8705,8 @@ public struct EmbedSsoParams: SDKModel { set { _embed_domain = newValue.map(AnyString.init) } } - public init(target_url: URI, session_length: Int64? = nil, force_logout_login: Bool? = nil, external_user_id: String? = nil, first_name: String? = nil, last_name: String? = nil, user_timezone: String? = nil, permissions: [String]? = nil, models: [String]? = nil, group_ids: [Int64]? = nil, external_group_id: String? = nil, user_attributes: StringDictionary? = nil, secret_id: Int64? = nil, embed_domain: String? = nil) { - self.target_url = target_url + public init(target_url: String, session_length: Int64? = nil, force_logout_login: Bool? = nil, external_user_id: String? = nil, first_name: String? = nil, last_name: String? = nil, user_timezone: String? = nil, permissions: [String]? = nil, models: [String]? = nil, group_ids: [String]? = nil, external_group_id: String? = nil, user_attributes: StringDictionary? = nil, secret_id: String? = nil, embed_domain: String? = nil) { + self._target_url = AnyString.init(target_url) self._session_length = session_length.map(AnyInt.init) self.force_logout_login = force_logout_login self._external_user_id = external_user_id.map(AnyString.init) @@ -6013,14 +8715,14 @@ public struct EmbedSsoParams: SDKModel { self._user_timezone = user_timezone.map(AnyString.init) if let v = permissions { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } if let v = models { _models = v.map { AnyString.init($0) } } else { _models = nil } - if let v = group_ids { _group_ids = v.map { AnyInt.init($0) } } else { _group_ids = nil } + if let v = group_ids { _group_ids = v.map { AnyString.init($0) } } else { _group_ids = nil } self._external_group_id = external_group_id.map(AnyString.init) self.user_attributes = user_attributes - self._secret_id = secret_id.map(AnyInt.init) + self._secret_id = secret_id.map(AnyString.init) self._embed_domain = embed_domain.map(AnyString.init) } - public init(_ target_url: URI, session_length: Int64? = nil, force_logout_login: Bool? = nil, external_user_id: String? = nil, first_name: String? = nil, last_name: String? = nil, user_timezone: String? = nil, permissions: [String]? = nil, models: [String]? = nil, group_ids: [Int64]? = nil, external_group_id: String? = nil, user_attributes: StringDictionary? = nil, secret_id: Int64? = nil, embed_domain: String? = nil) { + public init(_ target_url: String, session_length: Int64? = nil, force_logout_login: Bool? = nil, external_user_id: String? = nil, first_name: String? = nil, last_name: String? = nil, user_timezone: String? = nil, permissions: [String]? = nil, models: [String]? = nil, group_ids: [String]? = nil, external_group_id: String? = nil, user_attributes: StringDictionary? = nil, secret_id: String? = nil, embed_domain: String? = nil) { self.init(target_url: target_url, session_length: session_length, force_logout_login: force_logout_login, external_user_id: external_user_id, first_name: first_name, last_name: last_name, user_timezone: user_timezone, permissions: permissions, models: models, group_ids: group_ids, external_group_id: external_group_id, user_attributes: user_attributes, secret_id: secret_id, embed_domain: embed_domain) } @@ -6050,29 +8752,111 @@ public struct LkError: SDKModel { private enum CodingKeys : String, CodingKey { case _message = "message" - case documentation_url + case _documentation_url = "documentation_url" + } + private var _message: AnyString + /** + * Error details (read-only) + */ + public var message: String { + get { _message.value } + set { _message = AnyString.init(newValue) } + } + + private var _documentation_url: AnyString + /** + * Documentation link (read-only) + */ + public var documentation_url: String { + get { _documentation_url.value } + set { _documentation_url = AnyString.init(newValue) } + } + + public init(message: String, documentation_url: String) { + self._message = AnyString.init(message) + self._documentation_url = AnyString.init(documentation_url) + } + + public init(_ message: String, _ documentation_url: String) { + self.init(message: message, documentation_url: documentation_url) + } + +} + +public struct ExternalOauthApplication: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _id = "id" + case _name = "name" + case _client_id = "client_id" + case _client_secret = "client_secret" + case _dialect_name = "dialect_name" + case created_at + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _id: AnyString? + /** + * ID of this OAuth Application (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + private var _name: AnyString? + /** + * The name of this application. For Snowflake connections, this should be the name of the host database. + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - private var _message: AnyString + + private var _client_id: AnyString? /** - * Error details (read-only) + * The OAuth Client ID for this application */ - public var message: String { - get { _message.value } - set { _message = AnyString.init(newValue) } + public var client_id: String? { + get { _client_id?.value } + set { _client_id = newValue.map(AnyString.init) } } + private var _client_secret: AnyString? /** - * Documentation link (read-only) + * (Write-Only) The OAuth Client Secret for this application */ - public var documentation_url: URI + public var client_secret: String? { + get { _client_secret?.value } + set { _client_secret = newValue.map(AnyString.init) } + } - public init(message: String, documentation_url: URI) { - self._message = AnyString.init(message) - self.documentation_url = documentation_url + private var _dialect_name: AnyString? + /** + * The database dialect for this application. + */ + public var dialect_name: String? { + get { _dialect_name?.value } + set { _dialect_name = newValue.map(AnyString.init) } } - public init(_ message: String, _ documentation_url: URI) { - self.init(message: message, documentation_url: documentation_url) + /** + * Creation time for this application (read-only) + */ + public var created_at: Date? + + public init(can: StringDictionary? = nil, id: String? = nil, name: String? = nil, client_id: String? = nil, client_secret: String? = nil, dialect_name: String? = nil, created_at: Date? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self._name = name.map(AnyString.init) + self._client_id = client_id.map(AnyString.init) + self._client_secret = client_secret.map(AnyString.init) + self._dialect_name = dialect_name.map(AnyString.init) + self.created_at = created_at } } @@ -6134,13 +8918,13 @@ public struct Folder: SDKModel { set { _id = newValue.map(AnyString.init) } } - private var _content_metadata_id: AnyInt? + private var _content_metadata_id: AnyString? /** * Id of content metadata (read-only) */ - public var content_metadata_id: Int64? { + public var content_metadata_id: String? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } + set { _content_metadata_id = newValue.map(AnyString.init) } } /** @@ -6148,13 +8932,13 @@ public struct Folder: SDKModel { */ public var created_at: Date? - private var _creator_id: AnyInt? + private var _creator_id: AnyString? /** * User Id of Creator (read-only) */ - public var creator_id: Int64? { + public var creator_id: String? { get { _creator_id?.value } - set { _creator_id = newValue.map(AnyInt.init) } + set { _creator_id = newValue.map(AnyString.init) } } private var _child_count: AnyInt? @@ -6225,13 +9009,13 @@ public struct Folder: SDKModel { */ public var looks: [LookWithDashboards]? - public init(name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil, dashboards: [DashboardBase]? = nil, looks: [LookWithDashboards]? = nil) { + public init(name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: String? = nil, created_at: Date? = nil, creator_id: String? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil, dashboards: [DashboardBase]? = nil, looks: [LookWithDashboards]? = nil) { self._name = AnyString.init(name) self._parent_id = parent_id.map(AnyString.init) self._id = id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) self.created_at = created_at - self._creator_id = creator_id.map(AnyInt.init) + self._creator_id = creator_id.map(AnyString.init) self._child_count = child_count.map(AnyInt.init) self._external_id = external_id.map(AnyString.init) self.is_embed = is_embed @@ -6246,7 +9030,7 @@ public struct Folder: SDKModel { self.looks = looks } - public init(_ name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil, dashboards: [DashboardBase]? = nil, looks: [LookWithDashboards]? = nil) { + public init(_ name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: String? = nil, created_at: Date? = nil, creator_id: String? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil, dashboards: [DashboardBase]? = nil, looks: [LookWithDashboards]? = nil) { self.init(name: name, parent_id: parent_id, id: id, content_metadata_id: content_metadata_id, created_at: created_at, creator_id: creator_id, child_count: child_count, external_id: external_id, is_embed: is_embed, is_embed_shared_root: is_embed_shared_root, is_embed_users_root: is_embed_users_root, is_personal: is_personal, is_personal_descendant: is_personal_descendant, is_shared_root: is_shared_root, is_users_root: is_users_root, can: can, dashboards: dashboards, looks: looks) } @@ -6299,13 +9083,13 @@ public struct FolderBase: SDKModel { set { _id = newValue.map(AnyString.init) } } - private var _content_metadata_id: AnyInt? + private var _content_metadata_id: AnyString? /** * Id of content metadata (read-only) */ - public var content_metadata_id: Int64? { + public var content_metadata_id: String? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } + set { _content_metadata_id = newValue.map(AnyString.init) } } /** @@ -6313,13 +9097,13 @@ public struct FolderBase: SDKModel { */ public var created_at: Date? - private var _creator_id: AnyInt? + private var _creator_id: AnyString? /** * User Id of Creator (read-only) */ - public var creator_id: Int64? { + public var creator_id: String? { get { _creator_id?.value } - set { _creator_id = newValue.map(AnyInt.init) } + set { _creator_id = newValue.map(AnyString.init) } } private var _child_count: AnyInt? @@ -6380,13 +9164,13 @@ public struct FolderBase: SDKModel { */ public var can: StringDictionary? - public init(name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil) { + public init(name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: String? = nil, created_at: Date? = nil, creator_id: String? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil) { self._name = AnyString.init(name) self._parent_id = parent_id.map(AnyString.init) self._id = id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) self.created_at = created_at - self._creator_id = creator_id.map(AnyInt.init) + self._creator_id = creator_id.map(AnyString.init) self._child_count = child_count.map(AnyInt.init) self._external_id = external_id.map(AnyString.init) self.is_embed = is_embed @@ -6399,7 +9183,7 @@ public struct FolderBase: SDKModel { self.can = can } - public init(_ name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil) { + public init(_ name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: String? = nil, created_at: Date? = nil, creator_id: String? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil) { self.init(name: name, parent_id: parent_id, id: id, content_metadata_id: content_metadata_id, created_at: created_at, creator_id: creator_id, child_count: child_count, external_id: external_id, is_embed: is_embed, is_embed_shared_root: is_embed_shared_root, is_embed_users_root: is_embed_users_root, is_personal: is_personal, is_personal_descendant: is_personal_descendant, is_shared_root: is_shared_root, is_users_root: is_users_root, can: can) } @@ -6679,7 +9463,6 @@ public struct GitStatus: SDKModel { case conflict case revertable case _text = "text" - case can } private var _action: AnyString? /** @@ -6709,22 +9492,104 @@ public struct GitStatus: SDKModel { set { _text = newValue.map(AnyString.init) } } + public init(action: String? = nil, conflict: Bool? = nil, revertable: Bool? = nil, text: String? = nil) { + self._action = action.map(AnyString.init) + self.conflict = conflict + self.revertable = revertable + self._text = text.map(AnyString.init) + } + +} + +public struct LkGroup: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case can_add_to_content_metadata + case contains_current_user + case _external_group_id = "external_group_id" + case externally_managed + case _id = "id" + case include_by_default + case _name = "name" + case _user_count = "user_count" + } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - public init(action: String? = nil, conflict: Bool? = nil, revertable: Bool? = nil, text: String? = nil, can: StringDictionary? = nil) { - self._action = action.map(AnyString.init) - self.conflict = conflict - self.revertable = revertable - self._text = text.map(AnyString.init) + /** + * Group can be used in content access controls + */ + public var can_add_to_content_metadata: Bool? + + /** + * Currently logged in user is group member (read-only) + */ + public var contains_current_user: Bool? + + private var _external_group_id: AnyString? + /** + * External Id group if embed group (read-only) + */ + public var external_group_id: String? { + get { _external_group_id?.value } + set { _external_group_id = newValue.map(AnyString.init) } + } + + /** + * Group membership controlled outside of Looker (read-only) + */ + public var externally_managed: Bool? + + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + /** + * New users are added to this group by default (read-only) + */ + public var include_by_default: Bool? + + private var _name: AnyString? + /** + * Name of group + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + + private var _user_count: AnyInt? + /** + * Number of users included in this group (read-only) + */ + public var user_count: Int64? { + get { _user_count?.value } + set { _user_count = newValue.map(AnyInt.init) } + } + + public init(can: StringDictionary? = nil, can_add_to_content_metadata: Bool? = nil, contains_current_user: Bool? = nil, external_group_id: String? = nil, externally_managed: Bool? = nil, id: String? = nil, include_by_default: Bool? = nil, name: String? = nil, user_count: Int64? = nil) { self.can = can + self.can_add_to_content_metadata = can_add_to_content_metadata + self.contains_current_user = contains_current_user + self._external_group_id = external_group_id.map(AnyString.init) + self.externally_managed = externally_managed + self._id = id.map(AnyString.init) + self.include_by_default = include_by_default + self._name = name.map(AnyString.init) + self._user_count = user_count.map(AnyInt.init) } } -public struct LkGroup: SDKModel { +public struct GroupHierarchy: SDKModel { private enum CodingKeys : String, CodingKey { case can @@ -6736,6 +9601,8 @@ public struct LkGroup: SDKModel { case include_by_default case _name = "name" case _user_count = "user_count" + case _parent_group_ids = "parent_group_ids" + case _role_ids = "role_ids" } /** * Operations the current user is able to perform on this object (read-only) @@ -6766,13 +9633,13 @@ public struct LkGroup: SDKModel { */ public var externally_managed: Bool? - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } /** @@ -6798,16 +9665,36 @@ public struct LkGroup: SDKModel { set { _user_count = newValue.map(AnyInt.init) } } - public init(can: StringDictionary? = nil, can_add_to_content_metadata: Bool? = nil, contains_current_user: Bool? = nil, external_group_id: String? = nil, externally_managed: Bool? = nil, id: Int64? = nil, include_by_default: Bool? = nil, name: String? = nil, user_count: Int64? = nil) { + private var _parent_group_ids: [AnyString]? + /** + * IDs of parents of this group (read-only) + */ + public var parent_group_ids: [String]? { + get { if let v = _parent_group_ids { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _parent_group_ids = v.map { AnyString.init($0) } } else { _parent_group_ids = nil } } + } + + private var _role_ids: [AnyString]? + /** + * Role IDs assigned to group (read-only) + */ + public var role_ids: [String]? { + get { if let v = _role_ids { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } } + } + + public init(can: StringDictionary? = nil, can_add_to_content_metadata: Bool? = nil, contains_current_user: Bool? = nil, external_group_id: String? = nil, externally_managed: Bool? = nil, id: String? = nil, include_by_default: Bool? = nil, name: String? = nil, user_count: Int64? = nil, parent_group_ids: [String]? = nil, role_ids: [String]? = nil) { self.can = can self.can_add_to_content_metadata = can_add_to_content_metadata self.contains_current_user = contains_current_user self._external_group_id = external_group_id.map(AnyString.init) self.externally_managed = externally_managed - self._id = id.map(AnyInt.init) + self._id = id.map(AnyString.init) self.include_by_default = include_by_default self._name = name.map(AnyString.init) self._user_count = user_count.map(AnyInt.init) + if let v = parent_group_ids { _parent_group_ids = v.map { AnyString.init($0) } } else { _parent_group_ids = nil } + if let v = role_ids { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } } } @@ -6820,17 +9707,17 @@ public struct GroupIdForGroupInclusion: SDKModel { private enum CodingKeys : String, CodingKey { case _group_id = "group_id" } - private var _group_id: AnyInt? + private var _group_id: AnyString? /** * Id of group (read-only) */ - public var group_id: Int64? { + public var group_id: String? { get { _group_id?.value } - set { _group_id = newValue.map(AnyInt.init) } + set { _group_id = newValue.map(AnyString.init) } } - public init(group_id: Int64? = nil) { - self._group_id = group_id.map(AnyInt.init) + public init(group_id: String? = nil) { + self._group_id = group_id.map(AnyString.init) } } @@ -6843,134 +9730,112 @@ public struct GroupIdForGroupUserInclusion: SDKModel { private enum CodingKeys : String, CodingKey { case _user_id = "user_id" } - private var _user_id: AnyInt? + private var _user_id: AnyString? /** * Id of user (read-only) */ - public var user_id: Int64? { + public var user_id: String? { get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } + set { _user_id = newValue.map(AnyString.init) } } - public init(user_id: Int64? = nil) { - self._user_id = user_id.map(AnyInt.init) + public init(user_id: String? = nil) { + self._user_id = user_id.map(AnyString.init) } } -public struct Homepage: SDKModel { +public struct GroupSearch: SDKModel { private enum CodingKeys : String, CodingKey { case can - case _content_metadata_id = "content_metadata_id" - case created_at - case deleted_at - case _description = "description" - case homepage_sections + case can_add_to_content_metadata + case contains_current_user + case _external_group_id = "external_group_id" + case externally_managed case _id = "id" - case _section_order = "section_order" - case _title = "title" - case updated_at - case _user_id = "user_id" - case primary_homepage + case include_by_default + case _name = "name" + case _user_count = "user_count" + case roles } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _content_metadata_id: AnyInt? - /** - * Id of associated content_metadata record (read-only) - */ - public var content_metadata_id: Int64? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } - } - /** - * Date of homepage creation (read-only) + * Group can be used in content access controls */ - public var created_at: Date? + public var can_add_to_content_metadata: Bool? /** - * Date of homepage deletion + * Currently logged in user is group member (read-only) */ - public var deleted_at: Date? + public var contains_current_user: Bool? - private var _description: AnyString? + private var _external_group_id: AnyString? /** - * Description of the homepage + * External Id group if embed group (read-only) */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + public var external_group_id: String? { + get { _external_group_id?.value } + set { _external_group_id = newValue.map(AnyString.init) } } /** - * Sections of the homepage (read-only) + * Group membership controlled outside of Looker (read-only) */ - public var homepage_sections: [HomepageSection]? + public var externally_managed: Bool? - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } - private var _section_order: [AnyInt]? /** - * ids of the homepage sections in the order they should be displayed + * New users are added to this group by default (read-only) */ - public var section_order: [Int64]? { - get { if let v = _section_order { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _section_order = v.map { AnyInt.init($0) } } else { _section_order = nil } } - } + public var include_by_default: Bool? - private var _title: AnyString? + private var _name: AnyString? /** - * Title of the homepage + * Name of group */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } + private var _user_count: AnyInt? /** - * Date of last homepage update (read-only) - */ - public var updated_at: Date? - - private var _user_id: AnyInt? - /** - * User id of homepage creator (read-only) + * Number of users included in this group (read-only) */ - public var user_id: Int64? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } + public var user_count: Int64? { + get { _user_count?.value } + set { _user_count = newValue.map(AnyInt.init) } } /** - * Whether the homepage is the primary homepage or not (read-only) + * Roles assigned to group (read-only) */ - public var primary_homepage: Bool? + public var roles: [Role]? - public init(can: StringDictionary? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, deleted_at: Date? = nil, description: String? = nil, homepage_sections: [HomepageSection]? = nil, id: Int64? = nil, section_order: [Int64]? = nil, title: String? = nil, updated_at: Date? = nil, user_id: Int64? = nil, primary_homepage: Bool? = nil) { + public init(can: StringDictionary? = nil, can_add_to_content_metadata: Bool? = nil, contains_current_user: Bool? = nil, external_group_id: String? = nil, externally_managed: Bool? = nil, id: String? = nil, include_by_default: Bool? = nil, name: String? = nil, user_count: Int64? = nil, roles: [Role]? = nil) { self.can = can - self._content_metadata_id = content_metadata_id.map(AnyInt.init) - self.created_at = created_at - self.deleted_at = deleted_at - self._description = description.map(AnyString.init) - self.homepage_sections = homepage_sections - self._id = id.map(AnyInt.init) - if let v = section_order { _section_order = v.map { AnyInt.init($0) } } else { _section_order = nil } - self._title = title.map(AnyString.init) - self.updated_at = updated_at - self._user_id = user_id.map(AnyInt.init) - self.primary_homepage = primary_homepage + self.can_add_to_content_metadata = can_add_to_content_metadata + self.contains_current_user = contains_current_user + self._external_group_id = external_group_id.map(AnyString.init) + self.externally_managed = externally_managed + self._id = id.map(AnyString.init) + self.include_by_default = include_by_default + self._name = name.map(AnyString.init) + self._user_count = user_count.map(AnyInt.init) + self.roles = roles } } @@ -7021,22 +9886,22 @@ public struct HomepageItem: SDKModel { set { _content_created_by = newValue.map(AnyString.init) } } - private var _content_favorite_id: AnyInt? + private var _content_favorite_id: AnyString? /** * Content favorite id associated with the item this content is based on (read-only) */ - public var content_favorite_id: Int64? { + public var content_favorite_id: String? { get { _content_favorite_id?.value } - set { _content_favorite_id = newValue.map(AnyInt.init) } + set { _content_favorite_id = newValue.map(AnyString.init) } } - private var _content_metadata_id: AnyInt? + private var _content_metadata_id: AnyString? /** * Content metadata id associated with the item this content is based on (read-only) */ - public var content_metadata_id: Int64? { + public var content_metadata_id: String? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } + set { _content_metadata_id = newValue.map(AnyString.init) } } private var _content_updated_at: AnyString? @@ -7093,13 +9958,13 @@ public struct HomepageItem: SDKModel { set { _custom_url = newValue.map(AnyString.init) } } - private var _dashboard_id: AnyInt? + private var _dashboard_id: AnyString? /** * Dashboard to base this item on */ - public var dashboard_id: Int64? { + public var dashboard_id: String? { get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyInt.init) } + set { _dashboard_id = newValue.map(AnyString.init) } } private var _description: AnyString? @@ -7120,22 +9985,22 @@ public struct HomepageItem: SDKModel { set { _favorite_count = newValue.map(AnyInt.init) } } - private var _homepage_section_id: AnyInt? + private var _homepage_section_id: AnyString? /** * Associated Homepage Section */ - public var homepage_section_id: Int64? { + public var homepage_section_id: String? { get { _homepage_section_id?.value } - set { _homepage_section_id = newValue.map(AnyInt.init) } + set { _homepage_section_id = newValue.map(AnyString.init) } } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _image_url: AnyString? @@ -7156,13 +10021,13 @@ public struct HomepageItem: SDKModel { set { _location = newValue.map(AnyString.init) } } - private var _look_id: AnyInt? + private var _look_id: AnyString? /** * Look to base this item on */ - public var look_id: Int64? { + public var look_id: String? { get { _look_id?.value } - set { _look_id = newValue.map(AnyInt.init) } + set { _look_id = newValue.map(AnyString.init) } } private var _lookml_dashboard_id: AnyString? @@ -7235,25 +10100,25 @@ public struct HomepageItem: SDKModel { set { _view_count = newValue.map(AnyInt.init) } } - public init(can: StringDictionary? = nil, content_created_by: String? = nil, content_favorite_id: Int64? = nil, content_metadata_id: Int64? = nil, content_updated_at: String? = nil, custom_description: String? = nil, custom_image_data_base64: String? = nil, custom_image_url: String? = nil, custom_title: String? = nil, custom_url: String? = nil, dashboard_id: Int64? = nil, description: String? = nil, favorite_count: Int64? = nil, homepage_section_id: Int64? = nil, id: Int64? = nil, image_url: String? = nil, location: String? = nil, look_id: Int64? = nil, lookml_dashboard_id: String? = nil, order: Int64? = nil, section_fetch_time: Float? = nil, title: String? = nil, url: String? = nil, use_custom_description: Bool? = nil, use_custom_image: Bool? = nil, use_custom_title: Bool? = nil, use_custom_url: Bool? = nil, view_count: Int64? = nil) { + public init(can: StringDictionary? = nil, content_created_by: String? = nil, content_favorite_id: String? = nil, content_metadata_id: String? = nil, content_updated_at: String? = nil, custom_description: String? = nil, custom_image_data_base64: String? = nil, custom_image_url: String? = nil, custom_title: String? = nil, custom_url: String? = nil, dashboard_id: String? = nil, description: String? = nil, favorite_count: Int64? = nil, homepage_section_id: String? = nil, id: String? = nil, image_url: String? = nil, location: String? = nil, look_id: String? = nil, lookml_dashboard_id: String? = nil, order: Int64? = nil, section_fetch_time: Float? = nil, title: String? = nil, url: String? = nil, use_custom_description: Bool? = nil, use_custom_image: Bool? = nil, use_custom_title: Bool? = nil, use_custom_url: Bool? = nil, view_count: Int64? = nil) { self.can = can self._content_created_by = content_created_by.map(AnyString.init) - self._content_favorite_id = content_favorite_id.map(AnyInt.init) - self._content_metadata_id = content_metadata_id.map(AnyInt.init) + self._content_favorite_id = content_favorite_id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) self._content_updated_at = content_updated_at.map(AnyString.init) self._custom_description = custom_description.map(AnyString.init) self._custom_image_data_base64 = custom_image_data_base64.map(AnyString.init) self._custom_image_url = custom_image_url.map(AnyString.init) self._custom_title = custom_title.map(AnyString.init) self._custom_url = custom_url.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyInt.init) + self._dashboard_id = dashboard_id.map(AnyString.init) self._description = description.map(AnyString.init) self._favorite_count = favorite_count.map(AnyInt.init) - self._homepage_section_id = homepage_section_id.map(AnyInt.init) - self._id = id.map(AnyInt.init) + self._homepage_section_id = homepage_section_id.map(AnyString.init) + self._id = id.map(AnyString.init) self._image_url = image_url.map(AnyString.init) self._location = location.map(AnyString.init) - self._look_id = look_id.map(AnyInt.init) + self._look_id = look_id.map(AnyString.init) self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) self._order = order.map(AnyInt.init) self.section_fetch_time = section_fetch_time @@ -7309,13 +10174,13 @@ public struct HomepageSection: SDKModel { set { _detail_url = newValue.map(AnyString.init) } } - private var _homepage_id: AnyInt? + private var _homepage_id: AnyString? /** * Id reference to parent homepage */ - public var homepage_id: Int64? { + public var homepage_id: String? { get { _homepage_id?.value } - set { _homepage_id = newValue.map(AnyInt.init) } + set { _homepage_id = newValue.map(AnyString.init) } } /** @@ -7323,13 +10188,13 @@ public struct HomepageSection: SDKModel { */ public var homepage_items: [HomepageItem]? - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } /** @@ -7337,13 +10202,13 @@ public struct HomepageSection: SDKModel { */ public var is_header: Bool? - private var _item_order: [AnyInt]? + private var _item_order: [AnyString]? /** * ids of the homepage items in the order they should be displayed */ - public var item_order: [Int64]? { + public var item_order: [String]? { get { if let v = _item_order { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _item_order = v.map { AnyInt.init($0) } } else { _item_order = nil } } + set { if let v = newValue { _item_order = v.map { AnyString.init($0) } } else { _item_order = nil } } } private var _title: AnyString? @@ -7378,16 +10243,16 @@ public struct HomepageSection: SDKModel { set { if let v = newValue { _visible_item_order = v.map { AnyString.init($0) } } else { _visible_item_order = nil } } } - public init(can: StringDictionary? = nil, created_at: Date? = nil, deleted_at: Date? = nil, detail_url: String? = nil, homepage_id: Int64? = nil, homepage_items: [HomepageItem]? = nil, id: Int64? = nil, is_header: Bool? = nil, item_order: [Int64]? = nil, title: String? = nil, updated_at: Date? = nil, description: String? = nil, visible_item_order: [String]? = nil) { + public init(can: StringDictionary? = nil, created_at: Date? = nil, deleted_at: Date? = nil, detail_url: String? = nil, homepage_id: String? = nil, homepage_items: [HomepageItem]? = nil, id: String? = nil, is_header: Bool? = nil, item_order: [String]? = nil, title: String? = nil, updated_at: Date? = nil, description: String? = nil, visible_item_order: [String]? = nil) { self.can = can self.created_at = created_at self.deleted_at = deleted_at self._detail_url = detail_url.map(AnyString.init) - self._homepage_id = homepage_id.map(AnyInt.init) + self._homepage_id = homepage_id.map(AnyString.init) self.homepage_items = homepage_items - self._id = id.map(AnyInt.init) + self._id = id.map(AnyString.init) self.is_header = is_header - if let v = item_order { _item_order = v.map { AnyInt.init($0) } } else { _item_order = nil } + if let v = item_order { _item_order = v.map { AnyString.init($0) } } else { _item_order = nil } self._title = title.map(AnyString.init) self.updated_at = updated_at self._description = description.map(AnyString.init) @@ -7403,7 +10268,6 @@ public struct ImportedProject: SDKModel { case _url = "url" case _ref = "ref" case is_remote - case can } private var _name: AnyString? /** @@ -7437,17 +10301,11 @@ public struct ImportedProject: SDKModel { */ public var is_remote: Bool? - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - public init(name: String? = nil, url: String? = nil, ref: String? = nil, is_remote: Bool? = nil, can: StringDictionary? = nil) { + public init(name: String? = nil, url: String? = nil, ref: String? = nil, is_remote: Bool? = nil) { self._name = name.map(AnyString.init) self._url = url.map(AnyString.init) self._ref = ref.map(AnyString.init) self.is_remote = is_remote - self.can = can } } @@ -7488,13 +10346,13 @@ public struct Integration: SDKModel { set { _id = newValue.map(AnyString.init) } } - private var _integration_hub_id: AnyInt? + private var _integration_hub_id: AnyString? /** * ID of the integration hub. (read-only) */ - public var integration_hub_id: Int64? { + public var integration_hub_id: String? { get { _integration_hub_id?.value } - set { _integration_hub_id = newValue.map(AnyInt.init) } + set { _integration_hub_id = newValue.map(AnyString.init) } } private var _label: AnyString? @@ -7583,19 +10441,19 @@ public struct Integration: SDKModel { */ public var delegate_oauth: Bool? - private var _installed_delegate_oauth_targets: [AnyInt]? + private var _installed_delegate_oauth_targets: [AnyString]? /** * Whether the integration is available to users. */ - public var installed_delegate_oauth_targets: [Int64]? { + public var installed_delegate_oauth_targets: [String]? { get { if let v = _installed_delegate_oauth_targets { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _installed_delegate_oauth_targets = v.map { AnyInt.init($0) } } else { _installed_delegate_oauth_targets = nil } } + set { if let v = newValue { _installed_delegate_oauth_targets = v.map { AnyString.init($0) } } else { _installed_delegate_oauth_targets = nil } } } - public init(can: StringDictionary? = nil, id: String? = nil, integration_hub_id: Int64? = nil, label: String? = nil, description: String? = nil, enabled: Bool? = nil, params: [IntegrationParam]? = nil, supported_formats: [SupportedFormats]? = nil, supported_action_types: [SupportedActionTypes]? = nil, supported_formattings: [SupportedFormattings]? = nil, supported_visualization_formattings: [SupportedVisualizationFormattings]? = nil, supported_download_settings: [SupportedDownloadSettings]? = nil, icon_url: String? = nil, uses_oauth: Bool? = nil, required_fields: [IntegrationRequiredField]? = nil, privacy_link: String? = nil, delegate_oauth: Bool? = nil, installed_delegate_oauth_targets: [Int64]? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, integration_hub_id: String? = nil, label: String? = nil, description: String? = nil, enabled: Bool? = nil, params: [IntegrationParam]? = nil, supported_formats: [SupportedFormats]? = nil, supported_action_types: [SupportedActionTypes]? = nil, supported_formattings: [SupportedFormattings]? = nil, supported_visualization_formattings: [SupportedVisualizationFormattings]? = nil, supported_download_settings: [SupportedDownloadSettings]? = nil, icon_url: String? = nil, uses_oauth: Bool? = nil, required_fields: [IntegrationRequiredField]? = nil, privacy_link: String? = nil, delegate_oauth: Bool? = nil, installed_delegate_oauth_targets: [String]? = nil) { self.can = can self._id = id.map(AnyString.init) - self._integration_hub_id = integration_hub_id.map(AnyInt.init) + self._integration_hub_id = integration_hub_id.map(AnyString.init) self._label = label.map(AnyString.init) self._description = description.map(AnyString.init) self.enabled = enabled @@ -7610,7 +10468,7 @@ public struct Integration: SDKModel { self.required_fields = required_fields self._privacy_link = privacy_link.map(AnyString.init) self.delegate_oauth = delegate_oauth - if let v = installed_delegate_oauth_targets { _installed_delegate_oauth_targets = v.map { AnyInt.init($0) } } else { _installed_delegate_oauth_targets = nil } + if let v = installed_delegate_oauth_targets { _installed_delegate_oauth_targets = v.map { AnyString.init($0) } } else { _installed_delegate_oauth_targets = nil } } } @@ -7635,13 +10493,13 @@ public struct IntegrationHub: SDKModel { */ public var can: StringDictionary? - private var _id: AnyInt? + private var _id: AnyString? /** * ID of the hub. (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _url: AnyString? @@ -7709,9 +10567,9 @@ public struct IntegrationHub: SDKModel { set { _legal_agreement_text = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, id: Int64? = nil, url: String? = nil, label: String? = nil, official: Bool? = nil, fetch_error_message: String? = nil, authorization_token: String? = nil, has_authorization_token: Bool? = nil, legal_agreement_signed: Bool? = nil, legal_agreement_required: Bool? = nil, legal_agreement_text: String? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, url: String? = nil, label: String? = nil, official: Bool? = nil, fetch_error_message: String? = nil, authorization_token: String? = nil, has_authorization_token: Bool? = nil, legal_agreement_signed: Bool? = nil, legal_agreement_required: Bool? = nil, legal_agreement_text: String? = nil) { self.can = can - self._id = id.map(AnyInt.init) + self._id = id.map(AnyString.init) self._url = url.map(AnyString.init) self._label = label.map(AnyString.init) self.official = official @@ -7960,6 +10818,33 @@ public struct InternalHelpResourcesContent: SDKModel { } +/** + * The type of the investigative content Valid values are: "dashboard". (Enum defined in Alert) + */ +public enum InvestigativeContentType: String, Codable { + case dashboard = "dashboard" +} + +public struct JdbcInterface: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _results = "results" + } + private var _results: AnyString? + /** + * JDBC Metadata to inflate Avatica response classes. (read-only) + */ + public var results: String? { + get { _results?.value } + set { _results = newValue.map(AnyString.init) } + } + + public init(results: String? = nil) { + self._results = results.map(AnyString.init) + } + +} + public struct LDAPConfig: SDKModel { private enum CodingKeys : String, CodingKey { @@ -8005,7 +10890,7 @@ public struct LDAPConfig: SDKModel { case allow_normal_group_membership case allow_roles_from_normal_groups case allow_direct_roles - case url + case _url = "url" } /** * Operations the current user is able to perform on this object (read-only) @@ -8068,13 +10953,13 @@ public struct LDAPConfig: SDKModel { */ public var connection_tls_no_verify: Bool? - private var _default_new_user_group_ids: [AnyInt]? + private var _default_new_user_group_ids: [AnyString]? /** * (Write-Only) Array of ids of groups that will be applied to new users the first time they login via LDAP */ - public var default_new_user_group_ids: [Int64]? { + public var default_new_user_group_ids: [String]? { get { if let v = _default_new_user_group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } } + set { if let v = newValue { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } } } /** @@ -8082,13 +10967,13 @@ public struct LDAPConfig: SDKModel { */ public var default_new_user_groups: [LkGroup]? - private var _default_new_user_role_ids: [AnyInt]? + private var _default_new_user_role_ids: [AnyString]? /** * (Write-Only) Array of ids of roles that will be applied to new users the first time they login via LDAP */ - public var default_new_user_role_ids: [Int64]? { + public var default_new_user_role_ids: [String]? { get { if let v = _default_new_user_role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } } + set { if let v = newValue { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } } } /** @@ -8309,12 +11194,16 @@ public struct LDAPConfig: SDKModel { */ public var allow_direct_roles: Bool? + private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, alternate_email_login_allowed: Bool? = nil, auth_password: String? = nil, auth_requires_role: Bool? = nil, auth_username: String? = nil, connection_host: String? = nil, connection_port: String? = nil, connection_tls: Bool? = nil, connection_tls_no_verify: Bool? = nil, default_new_user_group_ids: [Int64]? = nil, default_new_user_groups: [LkGroup]? = nil, default_new_user_role_ids: [Int64]? = nil, default_new_user_roles: [Role]? = nil, enabled: Bool? = nil, force_no_page: Bool? = nil, groups: [LDAPGroupRead]? = nil, groups_base_dn: String? = nil, groups_finder_type: String? = nil, groups_member_attribute: String? = nil, groups_objectclasses: String? = nil, groups_user_attribute: String? = nil, groups_with_role_ids: [LDAPGroupWrite]? = nil, has_auth_password: Bool? = nil, merge_new_users_by_email: Bool? = nil, modified_at: String? = nil, modified_by: String? = nil, set_roles_from_groups: Bool? = nil, test_ldap_password: String? = nil, test_ldap_user: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attribute_map_ldap_id: String? = nil, user_attributes: [LDAPUserAttributeRead]? = nil, user_attributes_with_ids: [LDAPUserAttributeWrite]? = nil, user_bind_base_dn: String? = nil, user_custom_filter: String? = nil, user_id_attribute_names: String? = nil, user_objectclass: String? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil, url: URI? = nil) { + public init(can: StringDictionary? = nil, alternate_email_login_allowed: Bool? = nil, auth_password: String? = nil, auth_requires_role: Bool? = nil, auth_username: String? = nil, connection_host: String? = nil, connection_port: String? = nil, connection_tls: Bool? = nil, connection_tls_no_verify: Bool? = nil, default_new_user_group_ids: [String]? = nil, default_new_user_groups: [LkGroup]? = nil, default_new_user_role_ids: [String]? = nil, default_new_user_roles: [Role]? = nil, enabled: Bool? = nil, force_no_page: Bool? = nil, groups: [LDAPGroupRead]? = nil, groups_base_dn: String? = nil, groups_finder_type: String? = nil, groups_member_attribute: String? = nil, groups_objectclasses: String? = nil, groups_user_attribute: String? = nil, groups_with_role_ids: [LDAPGroupWrite]? = nil, has_auth_password: Bool? = nil, merge_new_users_by_email: Bool? = nil, modified_at: String? = nil, modified_by: String? = nil, set_roles_from_groups: Bool? = nil, test_ldap_password: String? = nil, test_ldap_user: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attribute_map_ldap_id: String? = nil, user_attributes: [LDAPUserAttributeRead]? = nil, user_attributes_with_ids: [LDAPUserAttributeWrite]? = nil, user_bind_base_dn: String? = nil, user_custom_filter: String? = nil, user_id_attribute_names: String? = nil, user_objectclass: String? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil, url: String? = nil) { self.can = can self.alternate_email_login_allowed = alternate_email_login_allowed self._auth_password = auth_password.map(AnyString.init) @@ -8324,9 +11213,9 @@ public struct LDAPConfig: SDKModel { self._connection_port = connection_port.map(AnyString.init) self.connection_tls = connection_tls self.connection_tls_no_verify = connection_tls_no_verify - if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } + if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } self.default_new_user_groups = default_new_user_groups - if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } + if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } self.default_new_user_roles = default_new_user_roles self.enabled = enabled self.force_no_page = force_no_page @@ -8357,7 +11246,7 @@ public struct LDAPConfig: SDKModel { self.allow_normal_group_membership = allow_normal_group_membership self.allow_roles_from_normal_groups = allow_roles_from_normal_groups self.allow_direct_roles = allow_direct_roles - self.url = url + self._url = url.map(AnyString.init) } } @@ -8367,7 +11256,6 @@ public struct LDAPConfigTestIssue: SDKModel { private enum CodingKeys : String, CodingKey { case _severity = "severity" case _message = "message" - case can } private var _severity: AnyString? /** @@ -8387,15 +11275,9 @@ public struct LDAPConfigTestIssue: SDKModel { set { _message = newValue.map(AnyString.init) } } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - public init(severity: String? = nil, message: String? = nil, can: StringDictionary? = nil) { + public init(severity: String? = nil, message: String? = nil) { self._severity = severity.map(AnyString.init) self._message = message.map(AnyString.init) - self.can = can } } @@ -8409,7 +11291,7 @@ public struct LDAPConfigTestResult: SDKModel { case _status = "status" case _trace = "trace" case user - case url + case _url = "url" } private var _details: AnyString? /** @@ -8454,19 +11336,23 @@ public struct LDAPConfigTestResult: SDKModel { public var user: LDAPUser? + private var _url: AnyString? /** * Link to ldap config (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(details: String? = nil, issues: [LDAPConfigTestIssue]? = nil, message: String? = nil, status: String? = nil, trace: String? = nil, user: LDAPUser? = nil, url: URI? = nil) { + public init(details: String? = nil, issues: [LDAPConfigTestIssue]? = nil, message: String? = nil, status: String? = nil, trace: String? = nil, user: LDAPUser? = nil, url: String? = nil) { self._details = details.map(AnyString.init) self.issues = issues self._message = message.map(AnyString.init) self._status = status.map(AnyString.init) self._trace = trace.map(AnyString.init) self.user = user - self.url = url + self._url = url.map(AnyString.init) } } @@ -8479,24 +11365,24 @@ public struct LDAPGroupRead: SDKModel { case _looker_group_name = "looker_group_name" case _name = "name" case roles - case url + case _url = "url" } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } - private var _looker_group_id: AnyInt? + private var _looker_group_id: AnyString? /** * Unique Id of group in Looker (read-only) */ - public var looker_group_id: Int64? { + public var looker_group_id: String? { get { _looker_group_id?.value } - set { _looker_group_id = newValue.map(AnyInt.init) } + set { _looker_group_id = newValue.map(AnyString.init) } } private var _looker_group_name: AnyString? @@ -8522,18 +11408,22 @@ public struct LDAPGroupRead: SDKModel { */ public var roles: [Role]? + private var _url: AnyString? /** * Link to ldap config (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(id: Int64? = nil, looker_group_id: Int64? = nil, looker_group_name: String? = nil, name: String? = nil, roles: [Role]? = nil, url: URI? = nil) { - self._id = id.map(AnyInt.init) - self._looker_group_id = looker_group_id.map(AnyInt.init) + public init(id: String? = nil, looker_group_id: String? = nil, looker_group_name: String? = nil, name: String? = nil, roles: [Role]? = nil, url: String? = nil) { + self._id = id.map(AnyString.init) + self._looker_group_id = looker_group_id.map(AnyString.init) self._looker_group_name = looker_group_name.map(AnyString.init) self._name = name.map(AnyString.init) self.roles = roles - self.url = url + self._url = url.map(AnyString.init) } } @@ -8546,24 +11436,24 @@ public struct LDAPGroupWrite: SDKModel { case _looker_group_name = "looker_group_name" case _name = "name" case _role_ids = "role_ids" - case url + case _url = "url" } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } - private var _looker_group_id: AnyInt? + private var _looker_group_id: AnyString? /** * Unique Id of group in Looker (read-only) */ - public var looker_group_id: Int64? { + public var looker_group_id: String? { get { _looker_group_id?.value } - set { _looker_group_id = newValue.map(AnyInt.init) } + set { _looker_group_id = newValue.map(AnyString.init) } } private var _looker_group_name: AnyString? @@ -8584,27 +11474,31 @@ public struct LDAPGroupWrite: SDKModel { set { _name = newValue.map(AnyString.init) } } - private var _role_ids: [AnyInt]? + private var _role_ids: [AnyString]? /** * Looker Role Ids */ - public var role_ids: [Int64]? { + public var role_ids: [String]? { get { if let v = _role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } } + set { if let v = newValue { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } } } + private var _url: AnyString? /** * Link to ldap config (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(id: Int64? = nil, looker_group_id: Int64? = nil, looker_group_name: String? = nil, name: String? = nil, role_ids: [Int64]? = nil, url: URI? = nil) { - self._id = id.map(AnyInt.init) - self._looker_group_id = looker_group_id.map(AnyInt.init) + public init(id: String? = nil, looker_group_id: String? = nil, looker_group_name: String? = nil, name: String? = nil, role_ids: [String]? = nil, url: String? = nil) { + self._id = id.map(AnyString.init) + self._looker_group_id = looker_group_id.map(AnyString.init) self._looker_group_name = looker_group_name.map(AnyString.init) self._name = name.map(AnyString.init) - if let v = role_ids { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } - self.url = url + if let v = role_ids { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } + self._url = url.map(AnyString.init) } } @@ -8621,8 +11515,7 @@ public struct LDAPUser: SDKModel { case _ldap_dn = "ldap_dn" case _ldap_id = "ldap_id" case _roles = "roles" - case can - case url + case _url = "url" } private var _all_emails: [AnyString]? /** @@ -8701,17 +11594,16 @@ public struct LDAPUser: SDKModel { set { if let v = newValue { _roles = v.map { AnyString.init($0) } } else { _roles = nil } } } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - + private var _url: AnyString? /** * Link to ldap config (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(all_emails: [String]? = nil, attributes: StringDictionary? = nil, email: String? = nil, first_name: String? = nil, groups: [String]? = nil, last_name: String? = nil, ldap_dn: String? = nil, ldap_id: String? = nil, roles: [String]? = nil, can: StringDictionary? = nil, url: URI? = nil) { + public init(all_emails: [String]? = nil, attributes: StringDictionary? = nil, email: String? = nil, first_name: String? = nil, groups: [String]? = nil, last_name: String? = nil, ldap_dn: String? = nil, ldap_id: String? = nil, roles: [String]? = nil, url: String? = nil) { if let v = all_emails { _all_emails = v.map { AnyString.init($0) } } else { _all_emails = nil } self.attributes = attributes self._email = email.map(AnyString.init) @@ -8721,8 +11613,7 @@ public struct LDAPUser: SDKModel { self._ldap_dn = ldap_dn.map(AnyString.init) self._ldap_id = ldap_id.map(AnyString.init) if let v = roles { _roles = v.map { AnyString.init($0) } } else { _roles = nil } - self.can = can - self.url = url + self._url = url.map(AnyString.init) } } @@ -8733,7 +11624,7 @@ public struct LDAPUserAttributeRead: SDKModel { case _name = "name" case required case user_attributes - case url + case _url = "url" } private var _name: AnyString? /** @@ -8754,16 +11645,20 @@ public struct LDAPUserAttributeRead: SDKModel { */ public var user_attributes: [UserAttribute]? + private var _url: AnyString? /** * Link to ldap config (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(name: String? = nil, required: Bool? = nil, user_attributes: [UserAttribute]? = nil, url: URI? = nil) { + public init(name: String? = nil, required: Bool? = nil, user_attributes: [UserAttribute]? = nil, url: String? = nil) { self._name = name.map(AnyString.init) self.required = required self.user_attributes = user_attributes - self.url = url + self._url = url.map(AnyString.init) } } @@ -8774,7 +11669,7 @@ public struct LDAPUserAttributeWrite: SDKModel { case _name = "name" case required case _user_attribute_ids = "user_attribute_ids" - case url + case _url = "url" } private var _name: AnyString? /** @@ -8790,25 +11685,29 @@ public struct LDAPUserAttributeWrite: SDKModel { */ public var required: Bool? - private var _user_attribute_ids: [AnyInt]? + private var _user_attribute_ids: [AnyString]? /** * Looker User Attribute Ids */ - public var user_attribute_ids: [Int64]? { + public var user_attribute_ids: [String]? { get { if let v = _user_attribute_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _user_attribute_ids = v.map { AnyInt.init($0) } } else { _user_attribute_ids = nil } } + set { if let v = newValue { _user_attribute_ids = v.map { AnyString.init($0) } } else { _user_attribute_ids = nil } } } + private var _url: AnyString? /** * Link to ldap config (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(name: String? = nil, required: Bool? = nil, user_attribute_ids: [Int64]? = nil, url: URI? = nil) { + public init(name: String? = nil, required: Bool? = nil, user_attribute_ids: [String]? = nil, url: String? = nil) { self._name = name.map(AnyString.init) self.required = required - if let v = user_attribute_ids { _user_attribute_ids = v.map { AnyInt.init($0) } } else { _user_attribute_ids = nil } - self.url = url + if let v = user_attribute_ids { _user_attribute_ids = v.map { AnyString.init($0) } } else { _user_attribute_ids = nil } + self._url = url.map(AnyString.init) } } @@ -8988,7 +11887,6 @@ public struct LocalizationSettings: SDKModel { private enum CodingKeys : String, CodingKey { case _default_locale = "default_locale" case _localization_level = "localization_level" - case can } private var _default_locale: AnyString? /** @@ -9008,15 +11906,9 @@ public struct LocalizationSettings: SDKModel { set { _localization_level = newValue.map(AnyString.init) } } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - public init(default_locale: String? = nil, localization_level: String? = nil, can: StringDictionary? = nil) { + public init(default_locale: String? = nil, localization_level: String? = nil) { self._default_locale = default_locale.map(AnyString.init) self._localization_level = localization_level.map(AnyString.init) - self.can = can } } @@ -9028,6 +11920,7 @@ public struct Look: SDKModel { case _content_metadata_id = "content_metadata_id" case _id = "id" case _title = "title" + case _user_id = "user_id" case _content_favorite_id = "content_favorite_id" case created_at case deleted @@ -9052,33 +11945,29 @@ public struct Look: SDKModel { case folder case _folder_id = "folder_id" case updated_at - case _user_id = "user_id" case _view_count = "view_count" - case user - case _space_id = "space_id" - case space } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _content_metadata_id: AnyInt? + private var _content_metadata_id: AnyString? /** * Id of content metadata (read-only) */ - public var content_metadata_id: Int64? { + public var content_metadata_id: String? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } + set { _content_metadata_id = newValue.map(AnyString.init) } } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _title: AnyString? @@ -9090,13 +11979,22 @@ public struct Look: SDKModel { set { _title = newValue.map(AnyString.init) } } - private var _content_favorite_id: AnyInt? + private var _user_id: AnyString? + /** + * User Id + */ + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } + } + + private var _content_favorite_id: AnyString? /** * Content Favorite Id (read-only) */ - public var content_favorite_id: Int64? { + public var content_favorite_id: String? { get { _content_favorite_id?.value } - set { _content_favorite_id = newValue.map(AnyInt.init) } + set { _content_favorite_id = newValue.map(AnyString.init) } } /** @@ -9114,13 +12012,13 @@ public struct Look: SDKModel { */ public var deleted_at: Date? - private var _deleter_id: AnyInt? + private var _deleter_id: AnyString? /** * Id of User that deleted the look. (read-only) */ - public var deleter_id: Int64? { + public var deleter_id: String? { get { _deleter_id?.value } - set { _deleter_id = newValue.map(AnyInt.init) } + set { _deleter_id = newValue.map(AnyString.init) } } private var _description: AnyString? @@ -9187,13 +12085,13 @@ public struct Look: SDKModel { */ public var last_accessed_at: Date? - private var _last_updater_id: AnyInt? + private var _last_updater_id: AnyString? /** * Id of User that last updated the look. (read-only) */ - public var last_updater_id: Int64? { + public var last_updater_id: String? { get { _last_updater_id?.value } - set { _last_updater_id = newValue.map(AnyInt.init) } + set { _last_updater_id = newValue.map(AnyString.init) } } /** @@ -9226,13 +12124,13 @@ public struct Look: SDKModel { set { _public_url = newValue.map(AnyString.init) } } - private var _query_id: AnyInt? + private var _query_id: AnyString? /** * Query Id */ - public var query_id: Int64? { + public var query_id: String? { get { _query_id?.value } - set { _query_id = newValue.map(AnyInt.init) } + set { _query_id = newValue.map(AnyString.init) } } private var _short_url: AnyString? @@ -9260,15 +12158,6 @@ public struct Look: SDKModel { */ public var updated_at: Date? - private var _user_id: AnyInt? - /** - * User Id - */ - public var user_id: Int64? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } - } - private var _view_count: AnyInt? /** * Number of times viewed in the Looker web UI (read-only) @@ -9278,29 +12167,17 @@ public struct Look: SDKModel { set { _view_count = newValue.map(AnyInt.init) } } - public var user: UserIdOnly? - - private var _space_id: AnyString? - /** - * Space Id - */ - public var space_id: String? { - get { _space_id?.value } - set { _space_id = newValue.map(AnyString.init) } - } - - public var space: SpaceBase? - - public init(can: StringDictionary? = nil, content_metadata_id: Int64? = nil, id: Int64? = nil, title: String? = nil, content_favorite_id: Int64? = nil, created_at: Date? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: Int64? = nil, description: String? = nil, embed_url: String? = nil, excel_file_url: String? = nil, favorite_count: Int64? = nil, google_spreadsheet_formula: String? = nil, image_embed_url: String? = nil, is_run_on_load: Bool? = nil, last_accessed_at: Date? = nil, last_updater_id: Int64? = nil, last_viewed_at: Date? = nil, model: LookModel? = nil, `public`: Bool? = nil, public_slug: String? = nil, public_url: String? = nil, query_id: Int64? = nil, short_url: String? = nil, folder: FolderBase? = nil, folder_id: String? = nil, updated_at: Date? = nil, user_id: Int64? = nil, view_count: Int64? = nil, user: UserIdOnly? = nil, space_id: String? = nil, space: SpaceBase? = nil) { + public init(can: StringDictionary? = nil, content_metadata_id: String? = nil, id: String? = nil, title: String? = nil, user_id: String? = nil, content_favorite_id: String? = nil, created_at: Date? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: String? = nil, description: String? = nil, embed_url: String? = nil, excel_file_url: String? = nil, favorite_count: Int64? = nil, google_spreadsheet_formula: String? = nil, image_embed_url: String? = nil, is_run_on_load: Bool? = nil, last_accessed_at: Date? = nil, last_updater_id: String? = nil, last_viewed_at: Date? = nil, model: LookModel? = nil, `public`: Bool? = nil, public_slug: String? = nil, public_url: String? = nil, query_id: String? = nil, short_url: String? = nil, folder: FolderBase? = nil, folder_id: String? = nil, updated_at: Date? = nil, view_count: Int64? = nil) { self.can = can - self._content_metadata_id = content_metadata_id.map(AnyInt.init) - self._id = id.map(AnyInt.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) + self._id = id.map(AnyString.init) self._title = title.map(AnyString.init) - self._content_favorite_id = content_favorite_id.map(AnyInt.init) + self._user_id = user_id.map(AnyString.init) + self._content_favorite_id = content_favorite_id.map(AnyString.init) self.created_at = created_at self.deleted = deleted self.deleted_at = deleted_at - self._deleter_id = deleter_id.map(AnyInt.init) + self._deleter_id = deleter_id.map(AnyString.init) self._description = description.map(AnyString.init) self._embed_url = embed_url.map(AnyString.init) self._excel_file_url = excel_file_url.map(AnyString.init) @@ -9309,22 +12186,18 @@ public struct Look: SDKModel { self._image_embed_url = image_embed_url.map(AnyString.init) self.is_run_on_load = is_run_on_load self.last_accessed_at = last_accessed_at - self._last_updater_id = last_updater_id.map(AnyInt.init) + self._last_updater_id = last_updater_id.map(AnyString.init) self.last_viewed_at = last_viewed_at self.model = model self.`public` = `public` self._public_slug = public_slug.map(AnyString.init) self._public_url = public_url.map(AnyString.init) - self._query_id = query_id.map(AnyInt.init) + self._query_id = query_id.map(AnyString.init) self._short_url = short_url.map(AnyString.init) self.folder = folder self._folder_id = folder_id.map(AnyString.init) self.updated_at = updated_at - self._user_id = user_id.map(AnyInt.init) self._view_count = view_count.map(AnyInt.init) - self.user = user - self._space_id = space_id.map(AnyString.init) - self.space = space } } @@ -9336,28 +12209,29 @@ public struct LookBasic: SDKModel { case _content_metadata_id = "content_metadata_id" case _id = "id" case _title = "title" + case _user_id = "user_id" } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _content_metadata_id: AnyInt? + private var _content_metadata_id: AnyString? /** * Id of content metadata (read-only) */ - public var content_metadata_id: Int64? { + public var content_metadata_id: String? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } + set { _content_metadata_id = newValue.map(AnyString.init) } } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _title: AnyString? @@ -9369,11 +12243,21 @@ public struct LookBasic: SDKModel { set { _title = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, content_metadata_id: Int64? = nil, id: Int64? = nil, title: String? = nil) { + private var _user_id: AnyString? + /** + * User Id + */ + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, content_metadata_id: String? = nil, id: String? = nil, title: String? = nil, user_id: String? = nil) { self.can = can - self._content_metadata_id = content_metadata_id.map(AnyInt.init) - self._id = id.map(AnyInt.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) + self._id = id.map(AnyString.init) self._title = title.map(AnyString.init) + self._user_id = user_id.map(AnyString.init) } } @@ -9466,8 +12350,12 @@ public struct LookmlModelExplore: SDKModel { case _name = "name" case _description = "description" case _label = "label" + case _title = "title" case _scopes = "scopes" case can_total + case can_develop + case can_see_lookml + case _lookml_link = "lookml_link" case can_save case can_explain case can_pivot_in_db @@ -9496,6 +12384,7 @@ public struct LookmlModelExplore: SDKModel { case joins case _group_label = "group_label" case supported_measure_types + case _always_join = "always_join" } private var _id: AnyString? /** @@ -9533,6 +12422,15 @@ public struct LookmlModelExplore: SDKModel { set { _label = newValue.map(AnyString.init) } } + private var _title: AnyString? + /** + * Explore title (read-only) + */ + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } + } + private var _scopes: [AnyString]? /** * Scopes (read-only) @@ -9547,6 +12445,25 @@ public struct LookmlModelExplore: SDKModel { */ public var can_total: Bool? + /** + * Can Develop LookML (read-only) + */ + public var can_develop: Bool? + + /** + * Can See LookML (read-only) + */ + public var can_see_lookml: Bool? + + private var _lookml_link: AnyString? + /** + * A URL linking to the definition of this explore in the LookML IDE. (read-only) + */ + public var lookml_link: String? { + get { _lookml_link?.value } + set { _lookml_link = newValue.map(AnyString.init) } + } + /** * Can Save (read-only) */ @@ -9732,13 +12649,26 @@ public struct LookmlModelExplore: SDKModel { */ public var supported_measure_types: [LookmlModelExploreSupportedMeasureType]? - public init(id: String? = nil, name: String? = nil, description: String? = nil, label: String? = nil, scopes: [String]? = nil, can_total: Bool? = nil, can_save: Bool? = nil, can_explain: Bool? = nil, can_pivot_in_db: Bool? = nil, can_subtotal: Bool? = nil, has_timezone_support: Bool? = nil, supports_cost_estimate: Bool? = nil, connection_name: String? = nil, null_sort_treatment: String? = nil, files: [String]? = nil, source_file: String? = nil, project_name: String? = nil, model_name: String? = nil, view_name: String? = nil, hidden: Bool? = nil, sql_table_name: String? = nil, access_filter_fields: [String]? = nil, access_filters: [LookmlModelExploreAccessFilter]? = nil, aliases: [LookmlModelExploreAlias]? = nil, always_filter: [LookmlModelExploreAlwaysFilter]? = nil, conditionally_filter: [LookmlModelExploreConditionallyFilter]? = nil, index_fields: [String]? = nil, sets: [LookmlModelExploreSet]? = nil, tags: [String]? = nil, errors: [LookmlModelExploreError]? = nil, fields: LookmlModelExploreFieldset? = nil, joins: [LookmlModelExploreJoins]? = nil, group_label: String? = nil, supported_measure_types: [LookmlModelExploreSupportedMeasureType]? = nil) { + private var _always_join: [AnyString]? + /** + * 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. (read-only) + */ + public var always_join: [String]? { + get { if let v = _always_join { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _always_join = v.map { AnyString.init($0) } } else { _always_join = nil } } + } + + public init(id: String? = nil, name: String? = nil, description: String? = nil, label: String? = nil, title: String? = nil, scopes: [String]? = nil, can_total: Bool? = nil, can_develop: Bool? = nil, can_see_lookml: Bool? = nil, lookml_link: String? = nil, can_save: Bool? = nil, can_explain: Bool? = nil, can_pivot_in_db: Bool? = nil, can_subtotal: Bool? = nil, has_timezone_support: Bool? = nil, supports_cost_estimate: Bool? = nil, connection_name: String? = nil, null_sort_treatment: String? = nil, files: [String]? = nil, source_file: String? = nil, project_name: String? = nil, model_name: String? = nil, view_name: String? = nil, hidden: Bool? = nil, sql_table_name: String? = nil, access_filter_fields: [String]? = nil, access_filters: [LookmlModelExploreAccessFilter]? = nil, aliases: [LookmlModelExploreAlias]? = nil, always_filter: [LookmlModelExploreAlwaysFilter]? = nil, conditionally_filter: [LookmlModelExploreConditionallyFilter]? = nil, index_fields: [String]? = nil, sets: [LookmlModelExploreSet]? = nil, tags: [String]? = nil, errors: [LookmlModelExploreError]? = nil, fields: LookmlModelExploreFieldset? = nil, joins: [LookmlModelExploreJoins]? = nil, group_label: String? = nil, supported_measure_types: [LookmlModelExploreSupportedMeasureType]? = nil, always_join: [String]? = nil) { self._id = id.map(AnyString.init) self._name = name.map(AnyString.init) self._description = description.map(AnyString.init) self._label = label.map(AnyString.init) + self._title = title.map(AnyString.init) if let v = scopes { _scopes = v.map { AnyString.init($0) } } else { _scopes = nil } self.can_total = can_total + self.can_develop = can_develop + self.can_see_lookml = can_see_lookml + self._lookml_link = lookml_link.map(AnyString.init) self.can_save = can_save self.can_explain = can_explain self.can_pivot_in_db = can_pivot_in_db @@ -9767,6 +12697,7 @@ public struct LookmlModelExplore: SDKModel { self.joins = joins self._group_label = group_label.map(AnyString.init) self.supported_measure_types = supported_measure_types + if let v = always_join { _always_join = v.map { AnyString.init($0) } } else { _always_join = nil } } } @@ -9995,6 +12926,8 @@ public struct LookmlModelExploreField: SDKModel { case _view_label = "view_label" case `dynamic` case week_start_day + case _times_used = "times_used" + case _original_view = "original_view" } /** * The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: "left", "right". (read-only) @@ -10350,7 +13283,25 @@ public struct LookmlModelExploreField: SDKModel { */ public var week_start_day: WeekStartDay? - public init(align: Align? = nil, can_filter: Bool? = nil, category: Category? = nil, default_filter_value: String? = nil, description: String? = nil, dimension_group: 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, 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, map_layer: LookmlModelExploreFieldMapLayer? = nil, measure: Bool? = nil, name: String? = nil, strict_value_format: Bool? = nil, parameter: Bool? = 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, tags: [String]? = nil, type: String? = nil, user_attribute_filter_types: [UserAttributeFilterTypes]? = nil, value_format: String? = nil, view: String? = nil, view_label: String? = nil, `dynamic`: Bool? = nil, week_start_day: WeekStartDay? = nil) { + private var _times_used: AnyInt? + /** + * The number of times this field has been used in queries (read-only) + */ + public var times_used: Int64? { + get { _times_used?.value } + set { _times_used = newValue.map(AnyInt.init) } + } + + private var _original_view: AnyString? + /** + * The name of the view this field is defined in. This will be different than "view" when the view has been joined via a different name using the "from" parameter. (read-only) + */ + public var original_view: String? { + get { _original_view?.value } + set { _original_view = newValue.map(AnyString.init) } + } + + public init(align: Align? = nil, can_filter: Bool? = nil, category: Category? = nil, default_filter_value: String? = nil, description: String? = nil, dimension_group: 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, 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, map_layer: LookmlModelExploreFieldMapLayer? = nil, measure: Bool? = nil, name: String? = nil, strict_value_format: Bool? = nil, parameter: Bool? = 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, tags: [String]? = nil, type: String? = nil, user_attribute_filter_types: [UserAttributeFilterTypes]? = nil, value_format: 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) { self.align = align self.can_filter = can_filter self.category = category @@ -10403,6 +13354,8 @@ public struct LookmlModelExploreField: SDKModel { self._view_label = view_label.map(AnyString.init) self.`dynamic` = `dynamic` self.week_start_day = week_start_day + self._times_used = times_used.map(AnyInt.init) + self._original_view = original_view.map(AnyString.init) } } @@ -10886,7 +13839,6 @@ public struct LookmlModelNavExplore: SDKModel { case _label = "label" case hidden case _group_label = "group_label" - case can } private var _name: AnyString? /** @@ -10929,18 +13881,12 @@ public struct LookmlModelNavExplore: SDKModel { set { _group_label = newValue.map(AnyString.init) } } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - public init(name: String? = nil, description: String? = nil, label: String? = nil, hidden: Bool? = nil, group_label: String? = nil, can: StringDictionary? = nil) { + public init(name: String? = nil, description: String? = nil, label: String? = nil, hidden: Bool? = nil, group_label: String? = nil) { self._name = name.map(AnyString.init) self._description = description.map(AnyString.init) self._label = label.map(AnyString.init) self.hidden = hidden self._group_label = group_label.map(AnyString.init) - self.can = can } } @@ -11146,6 +14092,7 @@ public struct LookWithDashboards: SDKModel { case _content_metadata_id = "content_metadata_id" case _id = "id" case _title = "title" + case _user_id = "user_id" case _content_favorite_id = "content_favorite_id" case created_at case deleted @@ -11170,11 +14117,7 @@ public struct LookWithDashboards: SDKModel { case folder case _folder_id = "folder_id" case updated_at - case _user_id = "user_id" case _view_count = "view_count" - case user - case _space_id = "space_id" - case space case dashboards } /** @@ -11182,22 +14125,22 @@ public struct LookWithDashboards: SDKModel { */ public var can: StringDictionary? - private var _content_metadata_id: AnyInt? + private var _content_metadata_id: AnyString? /** * Id of content metadata (read-only) */ - public var content_metadata_id: Int64? { + public var content_metadata_id: String? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } + set { _content_metadata_id = newValue.map(AnyString.init) } } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _title: AnyString? @@ -11209,13 +14152,22 @@ public struct LookWithDashboards: SDKModel { set { _title = newValue.map(AnyString.init) } } - private var _content_favorite_id: AnyInt? + private var _user_id: AnyString? + /** + * User Id + */ + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } + } + + private var _content_favorite_id: AnyString? /** * Content Favorite Id (read-only) */ - public var content_favorite_id: Int64? { + public var content_favorite_id: String? { get { _content_favorite_id?.value } - set { _content_favorite_id = newValue.map(AnyInt.init) } + set { _content_favorite_id = newValue.map(AnyString.init) } } /** @@ -11233,13 +14185,13 @@ public struct LookWithDashboards: SDKModel { */ public var deleted_at: Date? - private var _deleter_id: AnyInt? + private var _deleter_id: AnyString? /** * Id of User that deleted the look. (read-only) */ - public var deleter_id: Int64? { + public var deleter_id: String? { get { _deleter_id?.value } - set { _deleter_id = newValue.map(AnyInt.init) } + set { _deleter_id = newValue.map(AnyString.init) } } private var _description: AnyString? @@ -11306,13 +14258,13 @@ public struct LookWithDashboards: SDKModel { */ public var last_accessed_at: Date? - private var _last_updater_id: AnyInt? + private var _last_updater_id: AnyString? /** * Id of User that last updated the look. (read-only) */ - public var last_updater_id: Int64? { + public var last_updater_id: String? { get { _last_updater_id?.value } - set { _last_updater_id = newValue.map(AnyInt.init) } + set { _last_updater_id = newValue.map(AnyString.init) } } /** @@ -11345,13 +14297,13 @@ public struct LookWithDashboards: SDKModel { set { _public_url = newValue.map(AnyString.init) } } - private var _query_id: AnyInt? + private var _query_id: AnyString? /** * Query Id */ - public var query_id: Int64? { + public var query_id: String? { get { _query_id?.value } - set { _query_id = newValue.map(AnyInt.init) } + set { _query_id = newValue.map(AnyString.init) } } private var _short_url: AnyString? @@ -11379,15 +14331,6 @@ public struct LookWithDashboards: SDKModel { */ public var updated_at: Date? - private var _user_id: AnyInt? - /** - * User Id - */ - public var user_id: Int64? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } - } - private var _view_count: AnyInt? /** * Number of times viewed in the Looker web UI (read-only) @@ -11397,34 +14340,22 @@ public struct LookWithDashboards: SDKModel { set { _view_count = newValue.map(AnyInt.init) } } - public var user: UserIdOnly? - - private var _space_id: AnyString? - /** - * Space Id - */ - public var space_id: String? { - get { _space_id?.value } - set { _space_id = newValue.map(AnyString.init) } - } - - public var space: SpaceBase? - /** * Dashboards (read-only) */ public var dashboards: [DashboardBase]? - public init(can: StringDictionary? = nil, content_metadata_id: Int64? = nil, id: Int64? = nil, title: String? = nil, content_favorite_id: Int64? = nil, created_at: Date? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: Int64? = nil, description: String? = nil, embed_url: String? = nil, excel_file_url: String? = nil, favorite_count: Int64? = nil, google_spreadsheet_formula: String? = nil, image_embed_url: String? = nil, is_run_on_load: Bool? = nil, last_accessed_at: Date? = nil, last_updater_id: Int64? = nil, last_viewed_at: Date? = nil, model: LookModel? = nil, `public`: Bool? = nil, public_slug: String? = nil, public_url: String? = nil, query_id: Int64? = nil, short_url: String? = nil, folder: FolderBase? = nil, folder_id: String? = nil, updated_at: Date? = nil, user_id: Int64? = nil, view_count: Int64? = nil, user: UserIdOnly? = nil, space_id: String? = nil, space: SpaceBase? = nil, dashboards: [DashboardBase]? = nil) { + public init(can: StringDictionary? = nil, content_metadata_id: String? = nil, id: String? = nil, title: String? = nil, user_id: String? = nil, content_favorite_id: String? = nil, created_at: Date? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: String? = nil, description: String? = nil, embed_url: String? = nil, excel_file_url: String? = nil, favorite_count: Int64? = nil, google_spreadsheet_formula: String? = nil, image_embed_url: String? = nil, is_run_on_load: Bool? = nil, last_accessed_at: Date? = nil, last_updater_id: String? = nil, last_viewed_at: Date? = nil, model: LookModel? = nil, `public`: Bool? = nil, public_slug: String? = nil, public_url: String? = nil, query_id: String? = nil, short_url: String? = nil, folder: FolderBase? = nil, folder_id: String? = nil, updated_at: Date? = nil, view_count: Int64? = nil, dashboards: [DashboardBase]? = nil) { self.can = can - self._content_metadata_id = content_metadata_id.map(AnyInt.init) - self._id = id.map(AnyInt.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) + self._id = id.map(AnyString.init) self._title = title.map(AnyString.init) - self._content_favorite_id = content_favorite_id.map(AnyInt.init) + self._user_id = user_id.map(AnyString.init) + self._content_favorite_id = content_favorite_id.map(AnyString.init) self.created_at = created_at self.deleted = deleted self.deleted_at = deleted_at - self._deleter_id = deleter_id.map(AnyInt.init) + self._deleter_id = deleter_id.map(AnyString.init) self._description = description.map(AnyString.init) self._embed_url = embed_url.map(AnyString.init) self._excel_file_url = excel_file_url.map(AnyString.init) @@ -11433,22 +14364,18 @@ public struct LookWithDashboards: SDKModel { self._image_embed_url = image_embed_url.map(AnyString.init) self.is_run_on_load = is_run_on_load self.last_accessed_at = last_accessed_at - self._last_updater_id = last_updater_id.map(AnyInt.init) + self._last_updater_id = last_updater_id.map(AnyString.init) self.last_viewed_at = last_viewed_at self.model = model self.`public` = `public` self._public_slug = public_slug.map(AnyString.init) self._public_url = public_url.map(AnyString.init) - self._query_id = query_id.map(AnyInt.init) + self._query_id = query_id.map(AnyString.init) self._short_url = short_url.map(AnyString.init) self.folder = folder self._folder_id = folder_id.map(AnyString.init) self.updated_at = updated_at - self._user_id = user_id.map(AnyInt.init) self._view_count = view_count.map(AnyInt.init) - self.user = user - self._space_id = space_id.map(AnyString.init) - self.space = space self.dashboards = dashboards } @@ -11461,6 +14388,7 @@ public struct LookWithQuery: SDKModel { case _content_metadata_id = "content_metadata_id" case _id = "id" case _title = "title" + case _user_id = "user_id" case _content_favorite_id = "content_favorite_id" case created_at case deleted @@ -11485,11 +14413,7 @@ public struct LookWithQuery: SDKModel { case folder case _folder_id = "folder_id" case updated_at - case _user_id = "user_id" case _view_count = "view_count" - case user - case _space_id = "space_id" - case space case query case _url = "url" } @@ -11498,22 +14422,22 @@ public struct LookWithQuery: SDKModel { */ public var can: StringDictionary? - private var _content_metadata_id: AnyInt? + private var _content_metadata_id: AnyString? /** * Id of content metadata (read-only) */ - public var content_metadata_id: Int64? { + public var content_metadata_id: String? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } + set { _content_metadata_id = newValue.map(AnyString.init) } } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _title: AnyString? @@ -11525,13 +14449,22 @@ public struct LookWithQuery: SDKModel { set { _title = newValue.map(AnyString.init) } } - private var _content_favorite_id: AnyInt? + private var _user_id: AnyString? + /** + * User Id + */ + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } + } + + private var _content_favorite_id: AnyString? /** * Content Favorite Id (read-only) */ - public var content_favorite_id: Int64? { + public var content_favorite_id: String? { get { _content_favorite_id?.value } - set { _content_favorite_id = newValue.map(AnyInt.init) } + set { _content_favorite_id = newValue.map(AnyString.init) } } /** @@ -11549,13 +14482,13 @@ public struct LookWithQuery: SDKModel { */ public var deleted_at: Date? - private var _deleter_id: AnyInt? + private var _deleter_id: AnyString? /** * Id of User that deleted the look. (read-only) */ - public var deleter_id: Int64? { + public var deleter_id: String? { get { _deleter_id?.value } - set { _deleter_id = newValue.map(AnyInt.init) } + set { _deleter_id = newValue.map(AnyString.init) } } private var _description: AnyString? @@ -11622,13 +14555,13 @@ public struct LookWithQuery: SDKModel { */ public var last_accessed_at: Date? - private var _last_updater_id: AnyInt? + private var _last_updater_id: AnyString? /** * Id of User that last updated the look. (read-only) */ - public var last_updater_id: Int64? { + public var last_updater_id: String? { get { _last_updater_id?.value } - set { _last_updater_id = newValue.map(AnyInt.init) } + set { _last_updater_id = newValue.map(AnyString.init) } } /** @@ -11661,13 +14594,13 @@ public struct LookWithQuery: SDKModel { set { _public_url = newValue.map(AnyString.init) } } - private var _query_id: AnyInt? + private var _query_id: AnyString? /** * Query Id */ - public var query_id: Int64? { + public var query_id: String? { get { _query_id?.value } - set { _query_id = newValue.map(AnyInt.init) } + set { _query_id = newValue.map(AnyString.init) } } private var _short_url: AnyString? @@ -11695,15 +14628,6 @@ public struct LookWithQuery: SDKModel { */ public var updated_at: Date? - private var _user_id: AnyInt? - /** - * User Id - */ - public var user_id: Int64? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } - } - private var _view_count: AnyInt? /** * Number of times viewed in the Looker web UI (read-only) @@ -11713,19 +14637,6 @@ public struct LookWithQuery: SDKModel { set { _view_count = newValue.map(AnyInt.init) } } - public var user: UserIdOnly? - - private var _space_id: AnyString? - /** - * Space Id - */ - public var space_id: String? { - get { _space_id?.value } - set { _space_id = newValue.map(AnyString.init) } - } - - public var space: SpaceBase? - public var query: Query? private var _url: AnyString? @@ -11737,16 +14648,17 @@ public struct LookWithQuery: SDKModel { set { _url = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, content_metadata_id: Int64? = nil, id: Int64? = nil, title: String? = nil, content_favorite_id: Int64? = nil, created_at: Date? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: Int64? = nil, description: String? = nil, embed_url: String? = nil, excel_file_url: String? = nil, favorite_count: Int64? = nil, google_spreadsheet_formula: String? = nil, image_embed_url: String? = nil, is_run_on_load: Bool? = nil, last_accessed_at: Date? = nil, last_updater_id: Int64? = nil, last_viewed_at: Date? = nil, model: LookModel? = nil, `public`: Bool? = nil, public_slug: String? = nil, public_url: String? = nil, query_id: Int64? = nil, short_url: String? = nil, folder: FolderBase? = nil, folder_id: String? = nil, updated_at: Date? = nil, user_id: Int64? = nil, view_count: Int64? = nil, user: UserIdOnly? = nil, space_id: String? = nil, space: SpaceBase? = nil, query: Query? = nil, url: String? = nil) { + public init(can: StringDictionary? = nil, content_metadata_id: String? = nil, id: String? = nil, title: String? = nil, user_id: String? = nil, content_favorite_id: String? = nil, created_at: Date? = nil, deleted: Bool? = nil, deleted_at: Date? = nil, deleter_id: String? = nil, description: String? = nil, embed_url: String? = nil, excel_file_url: String? = nil, favorite_count: Int64? = nil, google_spreadsheet_formula: String? = nil, image_embed_url: String? = nil, is_run_on_load: Bool? = nil, last_accessed_at: Date? = nil, last_updater_id: String? = nil, last_viewed_at: Date? = nil, model: LookModel? = nil, `public`: Bool? = nil, public_slug: String? = nil, public_url: String? = nil, query_id: String? = nil, short_url: String? = nil, folder: FolderBase? = nil, folder_id: String? = nil, updated_at: Date? = nil, view_count: Int64? = nil, query: Query? = nil, url: String? = nil) { self.can = can - self._content_metadata_id = content_metadata_id.map(AnyInt.init) - self._id = id.map(AnyInt.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) + self._id = id.map(AnyString.init) self._title = title.map(AnyString.init) - self._content_favorite_id = content_favorite_id.map(AnyInt.init) + self._user_id = user_id.map(AnyString.init) + self._content_favorite_id = content_favorite_id.map(AnyString.init) self.created_at = created_at self.deleted = deleted self.deleted_at = deleted_at - self._deleter_id = deleter_id.map(AnyInt.init) + self._deleter_id = deleter_id.map(AnyString.init) self._description = description.map(AnyString.init) self._embed_url = embed_url.map(AnyString.init) self._excel_file_url = excel_file_url.map(AnyString.init) @@ -11755,22 +14667,18 @@ public struct LookWithQuery: SDKModel { self._image_embed_url = image_embed_url.map(AnyString.init) self.is_run_on_load = is_run_on_load self.last_accessed_at = last_accessed_at - self._last_updater_id = last_updater_id.map(AnyInt.init) + self._last_updater_id = last_updater_id.map(AnyString.init) self.last_viewed_at = last_viewed_at self.model = model self.`public` = `public` self._public_slug = public_slug.map(AnyString.init) self._public_url = public_url.map(AnyString.init) - self._query_id = query_id.map(AnyInt.init) + self._query_id = query_id.map(AnyString.init) self._short_url = short_url.map(AnyString.init) self.folder = folder self._folder_id = folder_id.map(AnyString.init) self.updated_at = updated_at - self._user_id = user_id.map(AnyInt.init) self._view_count = view_count.map(AnyInt.init) - self.user = user - self._space_id = space_id.map(AnyString.init) - self.space = space self.query = query self._url = url.map(AnyString.init) } @@ -11815,6 +14723,30 @@ public struct Manifest: SDKModel { } +public struct MarketplaceAutomation: SDKModel { + /** + * Whether marketplace auto installation is enabled + */ + public var install_enabled: Bool? + + /** + * Whether marketplace auto update is enabled for looker extensions + */ + public var update_looker_enabled: Bool? + + /** + * Whether marketplace auto update is enabled for third party extensions + */ + public var update_third_party_enabled: Bool? + + public init(install_enabled: Bool? = nil, update_looker_enabled: Bool? = nil, update_third_party_enabled: Bool? = nil) { + self.install_enabled = install_enabled + self.update_looker_enabled = update_looker_enabled + self.update_third_party_enabled = update_third_party_enabled + } + +} + public struct MaterializePDT: SDKModel { private enum CodingKeys : String, CodingKey { @@ -11932,13 +14864,13 @@ public struct MergeQuery: SDKModel { set { if let v = newValue { _pivots = v.map { AnyString.init($0) } } else { _pivots = nil } } } - private var _result_maker_id: AnyInt? + private var _result_maker_id: AnyString? /** * Unique to get results (read-only) */ - public var result_maker_id: Int64? { + public var result_maker_id: String? { get { _result_maker_id?.value } - set { _result_maker_id = newValue.map(AnyInt.init) } + set { _result_maker_id = newValue.map(AnyString.init) } } private var _sorts: [AnyString]? @@ -11965,13 +14897,13 @@ public struct MergeQuery: SDKModel { */ public var vis_config: StringDictionary? - public init(can: StringDictionary? = nil, column_limit: String? = nil, dynamic_fields: String? = nil, id: String? = nil, pivots: [String]? = nil, result_maker_id: Int64? = nil, sorts: [String]? = nil, source_queries: [MergeQuerySourceQuery]? = nil, total: Bool? = nil, vis_config: StringDictionary? = nil) { + public init(can: StringDictionary? = nil, column_limit: String? = nil, dynamic_fields: String? = nil, id: String? = nil, pivots: [String]? = nil, result_maker_id: String? = nil, sorts: [String]? = nil, source_queries: [MergeQuerySourceQuery]? = nil, total: Bool? = nil, vis_config: StringDictionary? = nil) { self.can = can self._column_limit = column_limit.map(AnyString.init) self._dynamic_fields = dynamic_fields.map(AnyString.init) self._id = id.map(AnyString.init) if let v = pivots { _pivots = v.map { AnyString.init($0) } } else { _pivots = nil } - self._result_maker_id = result_maker_id.map(AnyInt.init) + self._result_maker_id = result_maker_id.map(AnyString.init) if let v = sorts { _sorts = v.map { AnyString.init($0) } } else { _sorts = nil } self.source_queries = source_queries self.total = total @@ -12001,19 +14933,330 @@ public struct MergeQuerySourceQuery: SDKModel { set { _name = newValue.map(AnyString.init) } } - private var _query_id: AnyInt? + private var _query_id: AnyString? /** * Id of the query to merge */ - public var query_id: Int64? { + public var query_id: String? { get { _query_id?.value } - set { _query_id = newValue.map(AnyInt.init) } + set { _query_id = newValue.map(AnyString.init) } + } + + public init(merge_fields: [MergeFields]? = nil, name: String? = nil, query_id: String? = nil) { + self.merge_fields = merge_fields + self._name = name.map(AnyString.init) + self._query_id = query_id.map(AnyString.init) + } + +} + +public struct MobileFeatureFlags: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _feature_flag_name = "feature_flag_name" + case feature_flag_state + } + private var _feature_flag_name: AnyString? + /** + * Specifies the name of feature flag. (read-only) + */ + public var feature_flag_name: String? { + get { _feature_flag_name?.value } + set { _feature_flag_name = newValue.map(AnyString.init) } + } + + /** + * Specifies the state of feature flag (read-only) + */ + public var feature_flag_state: Bool? + + public init(feature_flag_name: String? = nil, feature_flag_state: Bool? = nil) { + self._feature_flag_name = feature_flag_name.map(AnyString.init) + self.feature_flag_state = feature_flag_state + } + +} + +public struct MobilePayload: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _title = "title" + case _alert_id = "alert_id" + case _investigative_content_id = "investigative_content_id" + case _dashboard_name = "dashboard_name" + case _dashboard_id = "dashboard_id" + case _query_slug = "query_slug" + } + private var _title: AnyString? + /** + * Title of the alert (read-only) + */ + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } + } + + private var _alert_id: AnyString + /** + * ID of the alert (read-only) + */ + public var alert_id: String { + get { _alert_id.value } + set { _alert_id = AnyString.init(newValue) } + } + + private var _investigative_content_id: AnyString? + /** + * ID of the investigative content (read-only) + */ + public var investigative_content_id: String? { + get { _investigative_content_id?.value } + set { _investigative_content_id = newValue.map(AnyString.init) } + } + + private var _dashboard_name: AnyString? + /** + * Name of the dashboard on which the alert has been set (read-only) + */ + public var dashboard_name: String? { + get { _dashboard_name?.value } + set { _dashboard_name = newValue.map(AnyString.init) } + } + + private var _dashboard_id: AnyString? + /** + * ID of the dashboard on which the alert has been set (read-only) + */ + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } + } + + private var _query_slug: AnyString? + /** + * Slug of the query which runs the alert queries. (read-only) + */ + public var query_slug: String? { + get { _query_slug?.value } + set { _query_slug = newValue.map(AnyString.init) } + } + + public init(title: String? = nil, alert_id: String, investigative_content_id: String? = nil, dashboard_name: String? = nil, dashboard_id: String? = nil, query_slug: String? = nil) { + self._title = title.map(AnyString.init) + self._alert_id = AnyString.init(alert_id) + self._investigative_content_id = investigative_content_id.map(AnyString.init) + self._dashboard_name = dashboard_name.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self._query_slug = query_slug.map(AnyString.init) + } + + public init(title: String? = nil, _ alert_id: String, investigative_content_id: String? = nil, dashboard_name: String? = nil, dashboard_id: String? = nil, query_slug: String? = nil) { + self.init(title: title, alert_id: alert_id, investigative_content_id: investigative_content_id, dashboard_name: dashboard_name, dashboard_id: dashboard_id, query_slug: query_slug) + } + +} + +public struct MobileSettings: SDKModel { + /** + * Specifies whether the force authentication option is enabled for mobile (read-only) + */ + public var mobile_force_authentication: Bool? + + /** + * Specifies whether mobile access for this instance is enabled. (read-only) + */ + public var mobile_app_integration: Bool? + + /** + * Specifies feature flag and state relevant to mobile. (read-only) + */ + public var mobile_feature_flags: [MobileFeatureFlags]? + + public init(mobile_force_authentication: Bool? = nil, mobile_app_integration: Bool? = nil, mobile_feature_flags: [MobileFeatureFlags]? = nil) { + self.mobile_force_authentication = mobile_force_authentication + self.mobile_app_integration = mobile_app_integration + self.mobile_feature_flags = mobile_feature_flags + } + +} + +public struct MobileToken: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _id = "id" + case _device_token = "device_token" + case device_type + } + private var _id: AnyString? + /** + * Unique ID. (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + private var _device_token: AnyString + /** + * Specifies the device token + */ + public var device_token: String { + get { _device_token.value } + set { _device_token = AnyString.init(newValue) } + } + + /** + * Specifies type of device. Valid values are: "android", "ios". + */ + public var device_type: DeviceType + + public init(id: String? = nil, device_token: String, device_type: DeviceType) { + self._id = id.map(AnyString.init) + self._device_token = AnyString.init(device_token) + self.device_type = device_type + } + + public init(id: String? = nil, _ device_token: String, _ device_type: DeviceType) { + self.init(id: id, device_token: device_token, device_type: device_type) + } + +} + +public struct Model: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _connection = "connection" + case _name = "name" + case value_formats + } + private var _connection: AnyString? + /** + * (read-only) + */ + public var connection: String? { + get { _connection?.value } + set { _connection = newValue.map(AnyString.init) } + } + + private var _name: AnyString? + /** + * (read-only) + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + + /** + * Array of named value formats (read-only) + */ + public var value_formats: [ModelNamedValueFormats]? + + public init(connection: String? = nil, name: String? = nil, value_formats: [ModelNamedValueFormats]? = nil) { + self._connection = connection.map(AnyString.init) + self._name = name.map(AnyString.init) + self.value_formats = value_formats + } + +} + +public struct ModelFieldSuggestions: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _suggestions = "suggestions" + case _error = "error" + case from_cache + case hit_limit + case used_calcite_materialization } + private var _suggestions: [AnyString]? + /** + * List of suggestions (read-only) + */ + public var suggestions: [String]? { + get { if let v = _suggestions { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _suggestions = v.map { AnyString.init($0) } } else { _suggestions = nil } } + } + + private var _error: AnyString? + /** + * Error message (read-only) + */ + public var error: String? { + get { _error?.value } + set { _error = newValue.map(AnyString.init) } + } + + /** + * True if result came from the cache (read-only) + */ + public var from_cache: Bool? + + /** + * True if this was a hit limit (read-only) + */ + public var hit_limit: Bool? + + /** + * True if calcite was used (read-only) + */ + public var used_calcite_materialization: Bool? + + public init(suggestions: [String]? = nil, error: String? = nil, from_cache: Bool? = nil, hit_limit: Bool? = nil, used_calcite_materialization: Bool? = nil) { + if let v = suggestions { _suggestions = v.map { AnyString.init($0) } } else { _suggestions = nil } + self._error = error.map(AnyString.init) + self.from_cache = from_cache + self.hit_limit = hit_limit + self.used_calcite_materialization = used_calcite_materialization + } + +} + +public struct ModelNamedValueFormats: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _format_string = "format_string" + case _label = "label" + case _name = "name" + case strict_value_format + } + private var _format_string: AnyString? + /** + * (read-only) + */ + public var format_string: String? { + get { _format_string?.value } + set { _format_string = newValue.map(AnyString.init) } + } + + private var _label: AnyString? + /** + * (read-only) + */ + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } + } + + private var _name: AnyString? + /** + * (read-only) + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + + /** + * (read-only) + */ + public var strict_value_format: Bool? - public init(merge_fields: [MergeFields]? = nil, name: String? = nil, query_id: Int64? = nil) { - self.merge_fields = merge_fields + public init(format_string: String? = nil, label: String? = nil, name: String? = nil, strict_value_format: Bool? = nil) { + self._format_string = format_string.map(AnyString.init) + self._label = label.map(AnyString.init) self._name = name.map(AnyString.init) - self._query_id = query_id.map(AnyInt.init) + self.strict_value_format = strict_value_format } } @@ -12027,7 +15270,7 @@ public struct ModelSet: SDKModel { case _id = "id" case _models = "models" case _name = "name" - case url + case _url = "url" } /** * Operations the current user is able to perform on this object (read-only) @@ -12044,13 +15287,13 @@ public struct ModelSet: SDKModel { */ public var built_in: Bool? - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _models: [AnyString]? @@ -12068,19 +15311,23 @@ public struct ModelSet: SDKModel { set { _name = newValue.map(AnyString.init) } } + private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, all_access: Bool? = nil, built_in: Bool? = nil, id: Int64? = nil, models: [String]? = nil, name: String? = nil, url: URI? = nil) { + public init(can: StringDictionary? = nil, all_access: Bool? = nil, built_in: Bool? = nil, id: String? = nil, models: [String]? = nil, name: String? = nil, url: String? = nil) { self.can = can self.all_access = all_access self.built_in = built_in - self._id = id.map(AnyInt.init) + self._id = id.map(AnyString.init) if let v = models { _models = v.map { AnyString.init($0) } } else { _models = nil } self._name = name.map(AnyString.init) - self.url = url + self._url = url.map(AnyString.init) } } @@ -12132,6 +15379,98 @@ public enum Name: String, Codable { case year = "year" } +public struct OauthClientApp: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _client_guid = "client_guid" + case _redirect_uri = "redirect_uri" + case _display_name = "display_name" + case _description = "description" + case enabled + case _group_id = "group_id" + case tokens_invalid_before + case activated_users + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _client_guid: AnyString? + /** + * The globally unique id of this application (read-only) + */ + public var client_guid: String? { + get { _client_guid?.value } + set { _client_guid = newValue.map(AnyString.init) } + } + + private var _redirect_uri: AnyString? + /** + * The uri with which this application will receive an auth code by browser redirect. + */ + public var redirect_uri: String? { + get { _redirect_uri?.value } + set { _redirect_uri = newValue.map(AnyString.init) } + } + + private var _display_name: AnyString? + /** + * The application's display name + */ + public var display_name: String? { + get { _display_name?.value } + set { _display_name = newValue.map(AnyString.init) } + } + + private var _description: AnyString? + /** + * A description of the application that will be displayed to users + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } + + /** + * 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. + */ + public var enabled: Bool? + + private var _group_id: AnyString? + /** + * 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 + */ + public var group_id: String? { + get { _group_id?.value } + set { _group_id = newValue.map(AnyString.init) } + } + + /** + * All auth codes, access tokens, and refresh tokens issued for this application prior to this date-time for ALL USERS will be invalid. (read-only) + */ + public var tokens_invalid_before: Date? + + /** + * All users who have been activated to use this app (read-only) + */ + public var activated_users: [UserPublic]? + + public init(can: StringDictionary? = nil, client_guid: String? = nil, redirect_uri: String? = nil, display_name: String? = nil, description: String? = nil, enabled: Bool? = nil, group_id: String? = nil, tokens_invalid_before: Date? = nil, activated_users: [UserPublic]? = nil) { + self.can = can + self._client_guid = client_guid.map(AnyString.init) + self._redirect_uri = redirect_uri.map(AnyString.init) + self._display_name = display_name.map(AnyString.init) + self._description = description.map(AnyString.init) + self.enabled = enabled + self._group_id = group_id.map(AnyString.init) + self.tokens_invalid_before = tokens_invalid_before + self.activated_users = activated_users + } + +} + public struct OIDCConfig: SDKModel { private enum CodingKeys : String, CodingKey { @@ -12139,7 +15478,7 @@ public struct OIDCConfig: SDKModel { case alternate_email_login_allowed case _audience = "audience" case auth_requires_role - case authorization_endpoint + case _authorization_endpoint = "authorization_endpoint" case _default_new_user_group_ids = "default_new_user_group_ids" case default_new_user_groups case _default_new_user_role_ids = "default_new_user_role_ids" @@ -12163,11 +15502,11 @@ public struct OIDCConfig: SDKModel { case _user_attribute_map_last_name = "user_attribute_map_last_name" case user_attributes case user_attributes_with_ids - case userinfo_endpoint + case _userinfo_endpoint = "userinfo_endpoint" case allow_normal_group_membership case allow_roles_from_normal_groups case allow_direct_roles - case url + case _url = "url" } /** * Operations the current user is able to perform on this object (read-only) @@ -12193,18 +15532,22 @@ public struct OIDCConfig: SDKModel { */ public var auth_requires_role: Bool? + private var _authorization_endpoint: AnyString? /** * OpenID Provider Authorization Url */ - public var authorization_endpoint: URI? + public var authorization_endpoint: String? { + get { _authorization_endpoint?.value } + set { _authorization_endpoint = newValue.map(AnyString.init) } + } - private var _default_new_user_group_ids: [AnyInt]? + private var _default_new_user_group_ids: [AnyString]? /** * (Write-Only) Array of ids of groups that will be applied to new users the first time they login via OIDC */ - public var default_new_user_group_ids: [Int64]? { + public var default_new_user_group_ids: [String]? { get { if let v = _default_new_user_group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } } + set { if let v = newValue { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } } } /** @@ -12212,13 +15555,13 @@ public struct OIDCConfig: SDKModel { */ public var default_new_user_groups: [LkGroup]? - private var _default_new_user_role_ids: [AnyInt]? + private var _default_new_user_role_ids: [AnyString]? /** * (Write-Only) Array of ids of roles that will be applied to new users the first time they login via OIDC */ - public var default_new_user_role_ids: [Int64]? { + public var default_new_user_role_ids: [String]? { get { if let v = _default_new_user_role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } } + set { if let v = newValue { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } } } /** @@ -12273,13 +15616,13 @@ public struct OIDCConfig: SDKModel { */ public var modified_at: Date? - private var _modified_by: AnyInt? + private var _modified_by: AnyString? /** * User id of user who last modified this config (read-only) */ - public var modified_by: Int64? { + public var modified_by: String? { get { _modified_by?.value } - set { _modified_by = newValue.map(AnyInt.init) } + set { _modified_by = newValue.map(AnyString.init) } } private var _new_user_migration_types: AnyString? @@ -12369,10 +15712,14 @@ public struct OIDCConfig: SDKModel { */ public var user_attributes_with_ids: [OIDCUserAttributeWrite]? + private var _userinfo_endpoint: AnyString? /** * OpenID Provider User Information Url */ - public var userinfo_endpoint: URI? + public var userinfo_endpoint: String? { + get { _userinfo_endpoint?.value } + set { _userinfo_endpoint = newValue.map(AnyString.init) } + } /** * 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. @@ -12389,20 +15736,24 @@ public struct OIDCConfig: SDKModel { */ public var allow_direct_roles: Bool? + private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, alternate_email_login_allowed: Bool? = nil, audience: String? = nil, auth_requires_role: Bool? = nil, authorization_endpoint: URI? = nil, default_new_user_group_ids: [Int64]? = nil, default_new_user_groups: [LkGroup]? = nil, default_new_user_role_ids: [Int64]? = nil, default_new_user_roles: [Role]? = nil, enabled: Bool? = nil, groups: [OIDCGroupRead]? = nil, groups_attribute: String? = nil, groups_with_role_ids: [OIDCGroupWrite]? = nil, identifier: String? = nil, issuer: String? = nil, modified_at: Date? = nil, modified_by: Int64? = nil, new_user_migration_types: String? = nil, scopes: [String]? = nil, secret: String? = nil, set_roles_from_groups: Bool? = nil, test_slug: String? = nil, token_endpoint: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attributes: [OIDCUserAttributeRead]? = nil, user_attributes_with_ids: [OIDCUserAttributeWrite]? = nil, userinfo_endpoint: URI? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil, url: URI? = nil) { + public init(can: StringDictionary? = nil, alternate_email_login_allowed: Bool? = nil, audience: String? = nil, auth_requires_role: Bool? = nil, authorization_endpoint: String? = nil, default_new_user_group_ids: [String]? = nil, default_new_user_groups: [LkGroup]? = nil, default_new_user_role_ids: [String]? = nil, default_new_user_roles: [Role]? = nil, enabled: Bool? = nil, groups: [OIDCGroupRead]? = nil, groups_attribute: String? = nil, groups_with_role_ids: [OIDCGroupWrite]? = nil, identifier: String? = nil, issuer: String? = nil, modified_at: Date? = nil, modified_by: String? = nil, new_user_migration_types: String? = nil, scopes: [String]? = nil, secret: String? = nil, set_roles_from_groups: Bool? = nil, test_slug: String? = nil, token_endpoint: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attributes: [OIDCUserAttributeRead]? = nil, user_attributes_with_ids: [OIDCUserAttributeWrite]? = nil, userinfo_endpoint: String? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil, url: String? = nil) { self.can = can self.alternate_email_login_allowed = alternate_email_login_allowed self._audience = audience.map(AnyString.init) self.auth_requires_role = auth_requires_role - self.authorization_endpoint = authorization_endpoint - if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } + self._authorization_endpoint = authorization_endpoint.map(AnyString.init) + if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } self.default_new_user_groups = default_new_user_groups - if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } + if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } self.default_new_user_roles = default_new_user_roles self.enabled = enabled self.groups = groups @@ -12411,7 +15762,7 @@ public struct OIDCConfig: SDKModel { self._identifier = identifier.map(AnyString.init) self._issuer = issuer.map(AnyString.init) self.modified_at = modified_at - self._modified_by = modified_by.map(AnyInt.init) + self._modified_by = modified_by.map(AnyString.init) self._new_user_migration_types = new_user_migration_types.map(AnyString.init) if let v = scopes { _scopes = v.map { AnyString.init($0) } } else { _scopes = nil } self._secret = secret.map(AnyString.init) @@ -12423,11 +15774,11 @@ public struct OIDCConfig: SDKModel { self._user_attribute_map_last_name = user_attribute_map_last_name.map(AnyString.init) self.user_attributes = user_attributes self.user_attributes_with_ids = user_attributes_with_ids - self.userinfo_endpoint = userinfo_endpoint + self._userinfo_endpoint = userinfo_endpoint.map(AnyString.init) self.allow_normal_group_membership = allow_normal_group_membership self.allow_roles_from_normal_groups = allow_roles_from_normal_groups self.allow_direct_roles = allow_direct_roles - self.url = url + self._url = url.map(AnyString.init) } } @@ -12441,22 +15792,22 @@ public struct OIDCGroupRead: SDKModel { case _name = "name" case roles } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } - private var _looker_group_id: AnyInt? + private var _looker_group_id: AnyString? /** * Unique Id of group in Looker (read-only) */ - public var looker_group_id: Int64? { + public var looker_group_id: String? { get { _looker_group_id?.value } - set { _looker_group_id = newValue.map(AnyInt.init) } + set { _looker_group_id = newValue.map(AnyString.init) } } private var _looker_group_name: AnyString? @@ -12482,9 +15833,9 @@ public struct OIDCGroupRead: SDKModel { */ public var roles: [Role]? - public init(id: Int64? = nil, looker_group_id: Int64? = nil, looker_group_name: String? = nil, name: String? = nil, roles: [Role]? = nil) { - self._id = id.map(AnyInt.init) - self._looker_group_id = looker_group_id.map(AnyInt.init) + public init(id: String? = nil, looker_group_id: String? = nil, looker_group_name: String? = nil, name: String? = nil, roles: [Role]? = nil) { + self._id = id.map(AnyString.init) + self._looker_group_id = looker_group_id.map(AnyString.init) self._looker_group_name = looker_group_name.map(AnyString.init) self._name = name.map(AnyString.init) self.roles = roles @@ -12500,24 +15851,23 @@ public struct OIDCGroupWrite: SDKModel { case _looker_group_name = "looker_group_name" case _name = "name" case _role_ids = "role_ids" - case can } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } - private var _looker_group_id: AnyInt? + private var _looker_group_id: AnyString? /** * Unique Id of group in Looker (read-only) */ - public var looker_group_id: Int64? { + public var looker_group_id: String? { get { _looker_group_id?.value } - set { _looker_group_id = newValue.map(AnyInt.init) } + set { _looker_group_id = newValue.map(AnyString.init) } } private var _looker_group_name: AnyString? @@ -12538,27 +15888,21 @@ public struct OIDCGroupWrite: SDKModel { set { _name = newValue.map(AnyString.init) } } - private var _role_ids: [AnyInt]? + private var _role_ids: [AnyString]? /** * Looker Role Ids */ - public var role_ids: [Int64]? { + public var role_ids: [String]? { get { if let v = _role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } } + set { if let v = newValue { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } } } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - public init(id: Int64? = nil, looker_group_id: Int64? = nil, looker_group_name: String? = nil, name: String? = nil, role_ids: [Int64]? = nil, can: StringDictionary? = nil) { - self._id = id.map(AnyInt.init) - self._looker_group_id = looker_group_id.map(AnyInt.init) + public init(id: String? = nil, looker_group_id: String? = nil, looker_group_name: String? = nil, name: String? = nil, role_ids: [String]? = nil) { + self._id = id.map(AnyString.init) + self._looker_group_id = looker_group_id.map(AnyString.init) self._looker_group_name = looker_group_name.map(AnyString.init) self._name = name.map(AnyString.init) - if let v = role_ids { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } - self.can = can + if let v = role_ids { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } } } @@ -12603,7 +15947,6 @@ public struct OIDCUserAttributeWrite: SDKModel { case _name = "name" case required case _user_attribute_ids = "user_attribute_ids" - case can } private var _name: AnyString? /** @@ -12619,25 +15962,19 @@ public struct OIDCUserAttributeWrite: SDKModel { */ public var required: Bool? - private var _user_attribute_ids: [AnyInt]? + private var _user_attribute_ids: [AnyString]? /** * Looker User Attribute Ids */ - public var user_attribute_ids: [Int64]? { + public var user_attribute_ids: [String]? { get { if let v = _user_attribute_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _user_attribute_ids = v.map { AnyInt.init($0) } } else { _user_attribute_ids = nil } } + set { if let v = newValue { _user_attribute_ids = v.map { AnyString.init($0) } } else { _user_attribute_ids = nil } } } - /** - * Operations the current user is able to perform on this object (read-only) - */ - public var can: StringDictionary? - - public init(name: String? = nil, required: Bool? = nil, user_attribute_ids: [Int64]? = nil, can: StringDictionary? = nil) { + public init(name: String? = nil, required: Bool? = nil, user_attribute_ids: [String]? = nil) { self._name = name.map(AnyString.init) self.required = required - if let v = user_attribute_ids { _user_attribute_ids = v.map { AnyInt.init($0) } } else { _user_attribute_ids = nil } - self.can = can + if let v = user_attribute_ids { _user_attribute_ids = v.map { AnyString.init($0) } } else { _user_attribute_ids = nil } } } @@ -12712,108 +16049,246 @@ public struct Permission: SDKModel { set { _permission = newValue.map(AnyString.init) } } - private var _parent: AnyString? + private var _parent: AnyString? + /** + * Dependency parent symbol (read-only) + */ + public var parent: String? { + get { _parent?.value } + set { _parent = newValue.map(AnyString.init) } + } + + private var _description: AnyString? + /** + * Description (read-only) + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, permission: String? = nil, parent: String? = nil, description: String? = nil) { + self.can = can + self._permission = permission.map(AnyString.init) + self._parent = parent.map(AnyString.init) + self._description = description.map(AnyString.init) + } + +} + +public struct PermissionSet: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case all_access + case built_in + case _id = "id" + case _name = "name" + case _permissions = "permissions" + case _url = "url" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + /** + * (read-only) + */ + public var all_access: Bool? + + /** + * (read-only) + */ + public var built_in: Bool? + + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + private var _name: AnyString? + /** + * Name of PermissionSet + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + + private var _permissions: [AnyString]? + public var permissions: [String]? { + get { if let v = _permissions { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } } + } + + private var _url: AnyString? + /** + * Link to get this item (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, all_access: Bool? = nil, built_in: Bool? = nil, id: String? = nil, name: String? = nil, permissions: [String]? = nil, url: String? = nil) { + self.can = can + self.all_access = all_access + self.built_in = built_in + self._id = id.map(AnyString.init) + self._name = name.map(AnyString.init) + if let v = permissions { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } + self._url = url.map(AnyString.init) + } + +} + +/** + * Type of permission: "view" or "edit" Valid values are: "view", "edit". (Enum defined in ContentMetaGroupUser) + */ +public enum PermissionType: String, Codable { + case view = "view" + case edit = "edit" +} + +public struct PrivatelabelConfiguration: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _logo_file = "logo_file" + case _logo_url = "logo_url" + case _favicon_file = "favicon_file" + case _favicon_url = "favicon_url" + case _default_title = "default_title" + case show_help_menu + case show_docs + case show_email_sub_options + case allow_looker_mentions + case allow_looker_links + case custom_welcome_email_advanced + case setup_mentions + case alerts_logo + case alerts_links + case folders_mentions + } + private var _logo_file: AnyString? + /** + * Customer logo image. Expected base64 encoded data (write-only) + */ + public var logo_file: String? { + get { _logo_file?.value } + set { _logo_file = newValue.map(AnyString.init) } + } + + private var _logo_url: AnyString? + /** + * Logo image url (read-only) (read-only) + */ + public var logo_url: String? { + get { _logo_url?.value } + set { _logo_url = newValue.map(AnyString.init) } + } + + private var _favicon_file: AnyString? + /** + * Custom favicon image. Expected base64 encoded data (write-only) + */ + public var favicon_file: String? { + get { _favicon_file?.value } + set { _favicon_file = newValue.map(AnyString.init) } + } + + private var _favicon_url: AnyString? /** - * Dependency parent symbol (read-only) + * Favicon image url (read-only) (read-only) */ - public var parent: String? { - get { _parent?.value } - set { _parent = newValue.map(AnyString.init) } + public var favicon_url: String? { + get { _favicon_url?.value } + set { _favicon_url = newValue.map(AnyString.init) } } - private var _description: AnyString? + private var _default_title: AnyString? /** - * Description (read-only) + * Default page title */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + public var default_title: String? { + get { _default_title?.value } + set { _default_title = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, permission: String? = nil, parent: String? = nil, description: String? = nil) { - self.can = can - self._permission = permission.map(AnyString.init) - self._parent = parent.map(AnyString.init) - self._description = description.map(AnyString.init) - } + /** + * Boolean to toggle showing help menus + */ + public var show_help_menu: Bool? -} + /** + * Boolean to toggle showing docs + */ + public var show_docs: Bool? -public struct PermissionSet: SDKModel { + /** + * Boolean to toggle showing email subscription options. + */ + public var show_email_sub_options: Bool? - private enum CodingKeys : String, CodingKey { - case can - case all_access - case built_in - case _id = "id" - case _name = "name" - case _permissions = "permissions" - case url - } /** - * Operations the current user is able to perform on this object (read-only) + * Boolean to toggle mentions of Looker in emails */ - public var can: StringDictionary? + public var allow_looker_mentions: Bool? /** - * (read-only) + * Boolean to toggle links to Looker in emails */ - public var all_access: Bool? + public var allow_looker_links: Bool? /** - * (read-only) + * Allow subject line and email heading customization in customized emails” */ - public var built_in: Bool? + public var custom_welcome_email_advanced: Bool? - private var _id: AnyInt? /** - * Unique Id (read-only) + * Remove the word Looker from appearing in the account setup page */ - public var id: Int64? { - get { _id?.value } - set { _id = newValue.map(AnyInt.init) } - } + public var setup_mentions: Bool? - private var _name: AnyString? /** - * Name of PermissionSet + * Remove Looker logo from Alerts */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } + public var alerts_logo: Bool? - private var _permissions: [AnyString]? - public var permissions: [String]? { - get { if let v = _permissions { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } } - } + /** + * Remove Looker links from Alerts + */ + public var alerts_links: Bool? /** - * Link to get this item (read-only) + * Remove Looker mentions in home folder page when you don’t have any items saved */ - public var url: URI? + public var folders_mentions: Bool? - public init(can: StringDictionary? = nil, all_access: Bool? = nil, built_in: Bool? = nil, id: Int64? = nil, name: String? = nil, permissions: [String]? = nil, url: URI? = nil) { - self.can = can - self.all_access = all_access - self.built_in = built_in - self._id = id.map(AnyInt.init) - self._name = name.map(AnyString.init) - if let v = permissions { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } - self.url = url + public init(logo_file: String? = nil, logo_url: String? = nil, favicon_file: String? = nil, favicon_url: String? = nil, default_title: String? = nil, show_help_menu: Bool? = nil, show_docs: Bool? = nil, show_email_sub_options: Bool? = nil, allow_looker_mentions: Bool? = nil, allow_looker_links: Bool? = nil, custom_welcome_email_advanced: Bool? = nil, setup_mentions: Bool? = nil, alerts_logo: Bool? = nil, alerts_links: Bool? = nil, folders_mentions: Bool? = nil) { + self._logo_file = logo_file.map(AnyString.init) + self._logo_url = logo_url.map(AnyString.init) + self._favicon_file = favicon_file.map(AnyString.init) + self._favicon_url = favicon_url.map(AnyString.init) + self._default_title = default_title.map(AnyString.init) + self.show_help_menu = show_help_menu + self.show_docs = show_docs + self.show_email_sub_options = show_email_sub_options + self.allow_looker_mentions = allow_looker_mentions + self.allow_looker_links = allow_looker_links + self.custom_welcome_email_advanced = custom_welcome_email_advanced + self.setup_mentions = setup_mentions + self.alerts_logo = alerts_logo + self.alerts_links = alerts_links + self.folders_mentions = folders_mentions } } -/** - * Type of permission: "view" or "edit" Valid values are: "view", "edit". (Enum defined in ContentMetaGroupUser) - */ -public enum PermissionType: String, Codable { - case view = "view" - case edit = "edit" -} - public struct Project: SDKModel { private enum CodingKeys : String, CodingKey { @@ -12838,6 +16313,7 @@ public struct Project: SDKModel { case git_release_mgmt_enabled case allow_warnings case is_example + case _dependency_status = "dependency_status" } /** * Operations the current user is able to perform on this object (read-only) @@ -12992,7 +16468,16 @@ public struct Project: SDKModel { */ public var is_example: Bool? - public init(can: StringDictionary? = nil, id: String? = nil, name: String? = nil, uses_git: Bool? = nil, git_remote_url: String? = nil, git_username: String? = nil, git_password: String? = nil, git_production_branch_name: String? = nil, use_git_cookie_auth: Bool? = nil, git_username_user_attribute: String? = nil, git_password_user_attribute: String? = nil, git_service_name: String? = nil, git_application_server_http_port: Int64? = nil, git_application_server_http_scheme: String? = nil, deploy_secret: String? = nil, unset_deploy_secret: Bool? = nil, pull_request_mode: PullRequestMode? = nil, validation_required: Bool? = nil, git_release_mgmt_enabled: Bool? = nil, allow_warnings: Bool? = nil, is_example: Bool? = nil) { + private var _dependency_status: AnyString? + /** + * Status of dependencies in your manifest & lockfile + */ + public var dependency_status: String? { + get { _dependency_status?.value } + set { _dependency_status = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, id: String? = nil, name: String? = nil, uses_git: Bool? = nil, git_remote_url: String? = nil, git_username: String? = nil, git_password: String? = nil, git_production_branch_name: String? = nil, use_git_cookie_auth: Bool? = nil, git_username_user_attribute: String? = nil, git_password_user_attribute: String? = nil, git_service_name: String? = nil, git_application_server_http_port: Int64? = nil, git_application_server_http_scheme: String? = nil, deploy_secret: String? = nil, unset_deploy_secret: Bool? = nil, pull_request_mode: PullRequestMode? = nil, validation_required: Bool? = nil, git_release_mgmt_enabled: Bool? = nil, allow_warnings: Bool? = nil, is_example: Bool? = nil, dependency_status: String? = nil) { self.can = can self._id = id.map(AnyString.init) self._name = name.map(AnyString.init) @@ -13014,6 +16499,7 @@ public struct Project: SDKModel { self.git_release_mgmt_enabled = git_release_mgmt_enabled self.allow_warnings = allow_warnings self.is_example = is_example + self._dependency_status = dependency_status.map(AnyString.init) } } @@ -13458,20 +16944,19 @@ public struct Query: SDKModel { case _url = "url" case _query_timezone = "query_timezone" case has_table_calculations - case runtime } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _model: AnyString @@ -13670,14 +17155,9 @@ public struct Query: SDKModel { */ public var has_table_calculations: Bool? - /** - * (DEPRECATED) Runtime (Deprecated) - */ - public var runtime: Double? - - public init(can: StringDictionary? = nil, id: Int64? = nil, model: String, view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, slug: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, share_url: String? = nil, expanded_share_url: String? = nil, url: String? = nil, query_timezone: String? = nil, has_table_calculations: Bool? = nil, runtime: Double? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, model: String, view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, slug: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, share_url: String? = nil, expanded_share_url: String? = nil, url: String? = nil, query_timezone: String? = nil, has_table_calculations: Bool? = nil) { self.can = can - self._id = id.map(AnyInt.init) + self._id = id.map(AnyString.init) self._model = AnyString.init(model) self._view = AnyString.init(view) if let v = fields { _fields = v.map { AnyString.init($0) } } else { _fields = nil } @@ -13702,11 +17182,10 @@ public struct Query: SDKModel { self._url = url.map(AnyString.init) self._query_timezone = query_timezone.map(AnyString.init) self.has_table_calculations = has_table_calculations - self.runtime = runtime } - public init(can: StringDictionary? = nil, id: Int64? = nil, _ model: String, _ view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, slug: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, share_url: String? = nil, expanded_share_url: String? = nil, url: String? = nil, query_timezone: String? = nil, has_table_calculations: Bool? = nil, runtime: Double? = nil) { - self.init(can: can, id: id, model: model, view: view, fields: fields, pivots: pivots, fill_fields: fill_fields, filters: filters, filter_expression: filter_expression, sorts: sorts, limit: limit, column_limit: column_limit, total: total, row_total: row_total, subtotals: subtotals, vis_config: vis_config, filter_config: filter_config, visible_ui_sections: visible_ui_sections, slug: slug, dynamic_fields: dynamic_fields, client_id: client_id, share_url: share_url, expanded_share_url: expanded_share_url, url: url, query_timezone: query_timezone, has_table_calculations: has_table_calculations, runtime: runtime) + public init(can: StringDictionary? = nil, id: String? = nil, _ model: String, _ view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, slug: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, share_url: String? = nil, expanded_share_url: String? = nil, url: String? = nil, query_timezone: String? = nil, has_table_calculations: Bool? = nil) { + self.init(can: can, id: id, model: model, view: view, fields: fields, pivots: pivots, fill_fields: fill_fields, filters: filters, filter_expression: filter_expression, sorts: sorts, limit: limit, column_limit: column_limit, total: total, row_total: row_total, subtotals: subtotals, vis_config: vis_config, filter_config: filter_config, visible_ui_sections: visible_ui_sections, slug: slug, dynamic_fields: dynamic_fields, client_id: client_id, share_url: share_url, expanded_share_url: expanded_share_url, url: url, query_timezone: query_timezone, has_table_calculations: has_table_calculations) } } @@ -13748,13 +17227,13 @@ public struct QueryTask: SDKModel { set { _id = newValue.map(AnyString.init) } } - private var _query_id: AnyInt? + private var _query_id: AnyString? /** * Id of query */ - public var query_id: Int64? { + public var query_id: String? { get { _query_id?.value } - set { _query_id = newValue.map(AnyInt.init) } + set { _query_id = newValue.map(AnyString.init) } } public var query: Query? @@ -13839,13 +17318,13 @@ public struct QueryTask: SDKModel { set { _result_source = newValue.map(AnyString.init) } } - private var _look_id: AnyInt? + private var _look_id: AnyString? /** * Id of look associated with query. */ - public var look_id: Int64? { + public var look_id: String? { get { _look_id?.value } - set { _look_id = newValue.map(AnyInt.init) } + set { _look_id = newValue.map(AnyString.init) } } private var _dashboard_id: AnyString? @@ -13866,10 +17345,10 @@ public struct QueryTask: SDKModel { set { _result_format = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, id: String? = nil, query_id: Int64? = nil, query: Query? = nil, generate_links: Bool? = nil, force_production: Bool? = nil, path_prefix: String? = nil, cache: Bool? = nil, server_table_calcs: Bool? = nil, cache_only: Bool? = nil, cache_key: String? = nil, status: String? = nil, source: String? = nil, runtime: Float? = nil, rebuild_pdts: Bool? = nil, result_source: String? = nil, look_id: Int64? = nil, dashboard_id: String? = nil, result_format: String? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, query_id: String? = nil, query: Query? = nil, generate_links: Bool? = nil, force_production: Bool? = nil, path_prefix: String? = nil, cache: Bool? = nil, server_table_calcs: Bool? = nil, cache_only: Bool? = nil, cache_key: String? = nil, status: String? = nil, source: String? = nil, runtime: Float? = nil, rebuild_pdts: Bool? = nil, result_source: String? = nil, look_id: String? = nil, dashboard_id: String? = nil, result_format: String? = nil) { self.can = can self._id = id.map(AnyString.init) - self._query_id = query_id.map(AnyInt.init) + self._query_id = query_id.map(AnyString.init) self.query = query self.generate_links = generate_links self.force_production = force_production @@ -13883,7 +17362,7 @@ public struct QueryTask: SDKModel { self.runtime = runtime self.rebuild_pdts = rebuild_pdts self._result_source = result_source.map(AnyString.init) - self._look_id = look_id.map(AnyInt.init) + self._look_id = look_id.map(AnyString.init) self._dashboard_id = dashboard_id.map(AnyString.init) self._result_format = result_format.map(AnyString.init) } @@ -13937,13 +17416,13 @@ public struct RenderTask: SDKModel { set { _dashboard_filters = newValue.map(AnyString.init) } } - private var _dashboard_id: AnyInt? + private var _dashboard_id: AnyString? /** * Id of dashboard to render (read-only) */ - public var dashboard_id: Int64? { + public var dashboard_id: String? { get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyInt.init) } + set { _dashboard_id = newValue.map(AnyString.init) } } private var _dashboard_style: AnyString? @@ -13982,13 +17461,13 @@ public struct RenderTask: SDKModel { set { _id = newValue.map(AnyString.init) } } - private var _look_id: AnyInt? + private var _look_id: AnyString? /** * Id of look to render (read-only) */ - public var look_id: Int64? { + public var look_id: String? { get { _look_id?.value } - set { _look_id = newValue.map(AnyInt.init) } + set { _look_id = newValue.map(AnyString.init) } } private var _lookml_dashboard_id: AnyString? @@ -14000,13 +17479,13 @@ public struct RenderTask: SDKModel { set { _lookml_dashboard_id = newValue.map(AnyString.init) } } - private var _query_id: AnyInt? + private var _query_id: AnyString? /** * Id of query to render (read-only) */ - public var query_id: Int64? { + public var query_id: String? { get { _query_id?.value } - set { _query_id = newValue.map(AnyInt.init) } + set { _query_id = newValue.map(AnyString.init) } } private var _dashboard_element_id: AnyString? @@ -14060,13 +17539,13 @@ public struct RenderTask: SDKModel { set { _status_detail = newValue.map(AnyString.init) } } - private var _user_id: AnyInt? + private var _user_id: AnyString? /** * The user account permissions in which the render task will execute (read-only) */ - public var user_id: Int64? { + public var user_id: String? { get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } + set { _user_id = newValue.map(AnyString.init) } } private var _width: AnyInt? @@ -14078,18 +17557,18 @@ public struct RenderTask: SDKModel { set { _width = newValue.map(AnyInt.init) } } - public init(can: StringDictionary? = nil, created_at: String? = nil, dashboard_filters: String? = nil, dashboard_id: Int64? = nil, dashboard_style: String? = nil, finalized_at: String? = nil, height: Int64? = nil, id: String? = nil, look_id: Int64? = nil, lookml_dashboard_id: String? = nil, query_id: Int64? = nil, dashboard_element_id: String? = nil, query_runtime: Double? = nil, render_runtime: Double? = nil, result_format: String? = nil, runtime: Double? = nil, status: String? = nil, status_detail: String? = nil, user_id: Int64? = nil, width: Int64? = nil) { + public init(can: StringDictionary? = nil, created_at: String? = nil, dashboard_filters: String? = nil, dashboard_id: String? = nil, dashboard_style: String? = nil, finalized_at: String? = nil, height: Int64? = nil, id: String? = nil, look_id: String? = nil, lookml_dashboard_id: String? = nil, query_id: String? = nil, dashboard_element_id: String? = nil, query_runtime: Double? = nil, render_runtime: Double? = nil, result_format: String? = nil, runtime: Double? = nil, status: String? = nil, status_detail: String? = nil, user_id: String? = nil, width: Int64? = nil) { self.can = can self._created_at = created_at.map(AnyString.init) self._dashboard_filters = dashboard_filters.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyInt.init) + self._dashboard_id = dashboard_id.map(AnyString.init) self._dashboard_style = dashboard_style.map(AnyString.init) self._finalized_at = finalized_at.map(AnyString.init) self._height = height.map(AnyInt.init) self._id = id.map(AnyString.init) - self._look_id = look_id.map(AnyInt.init) + self._look_id = look_id.map(AnyString.init) self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) - self._query_id = query_id.map(AnyInt.init) + self._query_id = query_id.map(AnyString.init) self._dashboard_element_id = dashboard_element_id.map(AnyString.init) self.query_runtime = query_runtime self.render_runtime = render_runtime @@ -14097,7 +17576,7 @@ public struct RenderTask: SDKModel { self.runtime = runtime self._status = status.map(AnyString.init) self._status_detail = status_detail.map(AnyString.init) - self._user_id = user_id.map(AnyInt.init) + self._user_id = user_id.map(AnyString.init) self._width = width.map(AnyInt.init) } @@ -14304,13 +17783,13 @@ public struct ResultMakerWithIdVisConfigAndDynamicFields: SDKModel { case query case vis_config } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id. (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _dynamic_fields: AnyString? @@ -14350,13 +17829,13 @@ public struct ResultMakerWithIdVisConfigAndDynamicFields: SDKModel { */ public var total: Bool? - private var _query_id: AnyInt? + private var _query_id: AnyString? /** * ID of query if this is a query. (read-only) */ - public var query_id: Int64? { + public var query_id: String? { get { _query_id?.value } - set { _query_id = newValue.map(AnyInt.init) } + set { _query_id = newValue.map(AnyString.init) } } private var _sql_query_id: AnyString? @@ -14375,14 +17854,14 @@ public struct ResultMakerWithIdVisConfigAndDynamicFields: SDKModel { */ public var vis_config: StringDictionary? - public init(id: Int64? = nil, dynamic_fields: String? = nil, filterables: [ResultMakerFilterables]? = nil, sorts: [String]? = nil, merge_result_id: String? = nil, total: Bool? = nil, query_id: Int64? = nil, sql_query_id: String? = nil, query: Query? = nil, vis_config: StringDictionary? = nil) { - self._id = id.map(AnyInt.init) + public init(id: String? = nil, dynamic_fields: String? = nil, filterables: [ResultMakerFilterables]? = nil, sorts: [String]? = nil, merge_result_id: String? = nil, total: Bool? = nil, query_id: String? = nil, sql_query_id: String? = nil, query: Query? = nil, vis_config: StringDictionary? = nil) { + self._id = id.map(AnyString.init) self._dynamic_fields = dynamic_fields.map(AnyString.init) self.filterables = filterables if let v = sorts { _sorts = v.map { AnyString.init($0) } } else { _sorts = nil } self._merge_result_id = merge_result_id.map(AnyString.init) self.total = total - self._query_id = query_id.map(AnyInt.init) + self._query_id = query_id.map(AnyString.init) self._sql_query_id = sql_query_id.map(AnyString.init) self.query = query self.vis_config = vis_config @@ -14400,21 +17879,112 @@ public struct Role: SDKModel { case _permission_set_id = "permission_set_id" case model_set case _model_set_id = "model_set_id" - case url - case users_url + case _url = "url" + case _users_url = "users_url" + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + private var _name: AnyString? + /** + * Name of Role + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + + public var permission_set: PermissionSet? + + private var _permission_set_id: AnyString? + /** + * (Write-Only) Id of permission set + */ + public var permission_set_id: String? { + get { _permission_set_id?.value } + set { _permission_set_id = newValue.map(AnyString.init) } + } + + public var model_set: ModelSet? + + private var _model_set_id: AnyString? + /** + * (Write-Only) Id of model set + */ + public var model_set_id: String? { + get { _model_set_id?.value } + set { _model_set_id = newValue.map(AnyString.init) } + } + + private var _url: AnyString? + /** + * Link to get this item (read-only) + */ + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + + private var _users_url: AnyString? + /** + * Link to get list of users with this role (read-only) + */ + public var users_url: String? { + get { _users_url?.value } + set { _users_url = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, id: String? = nil, name: String? = nil, permission_set: PermissionSet? = nil, permission_set_id: String? = nil, model_set: ModelSet? = nil, model_set_id: String? = nil, url: String? = nil, users_url: String? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self._name = name.map(AnyString.init) + self.permission_set = permission_set + self._permission_set_id = permission_set_id.map(AnyString.init) + self.model_set = model_set + self._model_set_id = model_set_id.map(AnyString.init) + self._url = url.map(AnyString.init) + self._users_url = users_url.map(AnyString.init) + } + +} + +public struct RoleSearch: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _id = "id" + case _name = "name" + case permission_set + case _permission_set_id = "permission_set_id" + case model_set + case _model_set_id = "model_set_id" + case _user_count = "user_count" + case _url = "url" + case _users_url = "users_url" } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _name: AnyString? @@ -14428,46 +17998,64 @@ public struct Role: SDKModel { public var permission_set: PermissionSet? - private var _permission_set_id: AnyInt? + private var _permission_set_id: AnyString? /** * (Write-Only) Id of permission set */ - public var permission_set_id: Int64? { + public var permission_set_id: String? { get { _permission_set_id?.value } - set { _permission_set_id = newValue.map(AnyInt.init) } + set { _permission_set_id = newValue.map(AnyString.init) } } public var model_set: ModelSet? - private var _model_set_id: AnyInt? + private var _model_set_id: AnyString? /** * (Write-Only) Id of model set */ - public var model_set_id: Int64? { + public var model_set_id: String? { get { _model_set_id?.value } - set { _model_set_id = newValue.map(AnyInt.init) } + set { _model_set_id = newValue.map(AnyString.init) } + } + + private var _user_count: AnyInt? + /** + * Count of users with this role (read-only) + */ + public var user_count: Int64? { + get { _user_count?.value } + set { _user_count = newValue.map(AnyInt.init) } } + private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } + private var _users_url: AnyString? /** * Link to get list of users with this role (read-only) */ - public var users_url: URI? + public var users_url: String? { + get { _users_url?.value } + set { _users_url = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, id: Int64? = nil, name: String? = nil, permission_set: PermissionSet? = nil, permission_set_id: Int64? = nil, model_set: ModelSet? = nil, model_set_id: Int64? = nil, url: URI? = nil, users_url: URI? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, name: String? = nil, permission_set: PermissionSet? = nil, permission_set_id: String? = nil, model_set: ModelSet? = nil, model_set_id: String? = nil, user_count: Int64? = nil, url: String? = nil, users_url: String? = nil) { self.can = can - self._id = id.map(AnyInt.init) + self._id = id.map(AnyString.init) self._name = name.map(AnyString.init) self.permission_set = permission_set - self._permission_set_id = permission_set_id.map(AnyInt.init) + self._permission_set_id = permission_set_id.map(AnyString.init) self.model_set = model_set - self._model_set_id = model_set_id.map(AnyInt.init) - self.url = url - self.users_url = users_url + self._model_set_id = model_set_id.map(AnyString.init) + self._user_count = user_count.map(AnyInt.init) + self._url = url.map(AnyString.init) + self._users_url = users_url.map(AnyString.init) } } @@ -14502,13 +18090,13 @@ public struct RunningQueries: SDKModel { */ public var can: StringDictionary? - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } public var user: UserPublic? @@ -14650,9 +18238,9 @@ public struct RunningQueries: SDKModel { set { _sql = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, id: Int64? = nil, user: UserPublic? = nil, query: Query? = nil, sql_query: SqlQuery? = nil, look: LookBasic? = nil, created_at: String? = nil, completed_at: String? = nil, query_id: String? = nil, source: String? = nil, node_id: String? = nil, slug: String? = nil, query_task_id: String? = nil, cache_key: String? = nil, connection_name: String? = nil, dialect: String? = nil, connection_id: String? = nil, message: String? = nil, status: String? = nil, runtime: Double? = nil, sql: String? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, user: UserPublic? = nil, query: Query? = nil, sql_query: SqlQuery? = nil, look: LookBasic? = nil, created_at: String? = nil, completed_at: String? = nil, query_id: String? = nil, source: String? = nil, node_id: String? = nil, slug: String? = nil, query_task_id: String? = nil, cache_key: String? = nil, connection_name: String? = nil, dialect: String? = nil, connection_id: String? = nil, message: String? = nil, status: String? = nil, runtime: Double? = nil, sql: String? = nil) { self.can = can - self._id = id.map(AnyInt.init) + self._id = id.map(AnyString.init) self.user = user self.query = query self.sql_query = sql_query @@ -14711,7 +18299,7 @@ public struct SamlConfig: SDKModel { case allow_normal_group_membership case allow_roles_from_normal_groups case allow_direct_roles - case url + case _url = "url" } /** * Operations the current user is able to perform on this object (read-only) @@ -14846,22 +18434,22 @@ public struct SamlConfig: SDKModel { */ public var default_new_user_groups: [LkGroup]? - private var _default_new_user_role_ids: [AnyInt]? + private var _default_new_user_role_ids: [AnyString]? /** * (Write-Only) Array of ids of roles that will be applied to new users the first time they login via Saml */ - public var default_new_user_role_ids: [Int64]? { + public var default_new_user_role_ids: [String]? { get { if let v = _default_new_user_role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } } + set { if let v = newValue { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } } } - private var _default_new_user_group_ids: [AnyInt]? + private var _default_new_user_group_ids: [AnyString]? /** * (Write-Only) Array of ids of groups that will be applied to new users the first time they login via Saml */ - public var default_new_user_group_ids: [Int64]? { + public var default_new_user_group_ids: [String]? { get { if let v = _default_new_user_group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } } + set { if let v = newValue { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } } } /** @@ -14941,12 +18529,16 @@ public struct SamlConfig: SDKModel { */ public var allow_direct_roles: Bool? + private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, enabled: Bool? = nil, idp_cert: String? = nil, idp_url: String? = nil, idp_issuer: String? = nil, idp_audience: String? = nil, allowed_clock_drift: Int64? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, new_user_migration_types: String? = nil, alternate_email_login_allowed: Bool? = nil, test_slug: String? = nil, modified_at: String? = nil, modified_by: String? = nil, default_new_user_roles: [Role]? = nil, default_new_user_groups: [LkGroup]? = nil, default_new_user_role_ids: [Int64]? = nil, default_new_user_group_ids: [Int64]? = nil, set_roles_from_groups: Bool? = nil, groups_attribute: String? = nil, groups: [SamlGroupRead]? = nil, groups_with_role_ids: [SamlGroupWrite]? = nil, auth_requires_role: Bool? = nil, user_attributes: [SamlUserAttributeRead]? = nil, user_attributes_with_ids: [SamlUserAttributeWrite]? = nil, groups_finder_type: String? = nil, groups_member_value: String? = nil, bypass_login_page: Bool? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil, url: URI? = nil) { + public init(can: StringDictionary? = nil, enabled: Bool? = nil, idp_cert: String? = nil, idp_url: String? = nil, idp_issuer: String? = nil, idp_audience: String? = nil, allowed_clock_drift: Int64? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, new_user_migration_types: String? = nil, alternate_email_login_allowed: Bool? = nil, test_slug: String? = nil, modified_at: String? = nil, modified_by: String? = nil, default_new_user_roles: [Role]? = nil, default_new_user_groups: [LkGroup]? = nil, default_new_user_role_ids: [String]? = nil, default_new_user_group_ids: [String]? = nil, set_roles_from_groups: Bool? = nil, groups_attribute: String? = nil, groups: [SamlGroupRead]? = nil, groups_with_role_ids: [SamlGroupWrite]? = nil, auth_requires_role: Bool? = nil, user_attributes: [SamlUserAttributeRead]? = nil, user_attributes_with_ids: [SamlUserAttributeWrite]? = nil, groups_finder_type: String? = nil, groups_member_value: String? = nil, bypass_login_page: Bool? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil, url: String? = nil) { self.can = can self.enabled = enabled self._idp_cert = idp_cert.map(AnyString.init) @@ -14964,8 +18556,8 @@ public struct SamlConfig: SDKModel { self._modified_by = modified_by.map(AnyString.init) self.default_new_user_roles = default_new_user_roles self.default_new_user_groups = default_new_user_groups - if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } - if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } + if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } + if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } self.set_roles_from_groups = set_roles_from_groups self._groups_attribute = groups_attribute.map(AnyString.init) self.groups = groups @@ -14979,7 +18571,7 @@ public struct SamlConfig: SDKModel { self.allow_normal_group_membership = allow_normal_group_membership self.allow_roles_from_normal_groups = allow_roles_from_normal_groups self.allow_direct_roles = allow_direct_roles - self.url = url + self._url = url.map(AnyString.init) } } @@ -14992,24 +18584,24 @@ public struct SamlGroupRead: SDKModel { case _looker_group_name = "looker_group_name" case _name = "name" case roles - case url + case _url = "url" } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } - private var _looker_group_id: AnyInt? + private var _looker_group_id: AnyString? /** * Unique Id of group in Looker (read-only) */ - public var looker_group_id: Int64? { + public var looker_group_id: String? { get { _looker_group_id?.value } - set { _looker_group_id = newValue.map(AnyInt.init) } + set { _looker_group_id = newValue.map(AnyString.init) } } private var _looker_group_name: AnyString? @@ -15035,18 +18627,22 @@ public struct SamlGroupRead: SDKModel { */ public var roles: [Role]? + private var _url: AnyString? /** * Link to saml config (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(id: Int64? = nil, looker_group_id: Int64? = nil, looker_group_name: String? = nil, name: String? = nil, roles: [Role]? = nil, url: URI? = nil) { - self._id = id.map(AnyInt.init) - self._looker_group_id = looker_group_id.map(AnyInt.init) + public init(id: String? = nil, looker_group_id: String? = nil, looker_group_name: String? = nil, name: String? = nil, roles: [Role]? = nil, url: String? = nil) { + self._id = id.map(AnyString.init) + self._looker_group_id = looker_group_id.map(AnyString.init) self._looker_group_name = looker_group_name.map(AnyString.init) self._name = name.map(AnyString.init) self.roles = roles - self.url = url + self._url = url.map(AnyString.init) } } @@ -15059,24 +18655,24 @@ public struct SamlGroupWrite: SDKModel { case _looker_group_name = "looker_group_name" case _name = "name" case _role_ids = "role_ids" - case url + case _url = "url" } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } - private var _looker_group_id: AnyInt? + private var _looker_group_id: AnyString? /** * Unique Id of group in Looker (read-only) */ - public var looker_group_id: Int64? { + public var looker_group_id: String? { get { _looker_group_id?.value } - set { _looker_group_id = newValue.map(AnyInt.init) } + set { _looker_group_id = newValue.map(AnyString.init) } } private var _looker_group_name: AnyString? @@ -15097,27 +18693,31 @@ public struct SamlGroupWrite: SDKModel { set { _name = newValue.map(AnyString.init) } } - private var _role_ids: [AnyInt]? + private var _role_ids: [AnyString]? /** * Looker Role Ids */ - public var role_ids: [Int64]? { + public var role_ids: [String]? { get { if let v = _role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } } + set { if let v = newValue { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } } } + private var _url: AnyString? /** * Link to saml config (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(id: Int64? = nil, looker_group_id: Int64? = nil, looker_group_name: String? = nil, name: String? = nil, role_ids: [Int64]? = nil, url: URI? = nil) { - self._id = id.map(AnyInt.init) - self._looker_group_id = looker_group_id.map(AnyInt.init) + public init(id: String? = nil, looker_group_id: String? = nil, looker_group_name: String? = nil, name: String? = nil, role_ids: [String]? = nil, url: String? = nil) { + self._id = id.map(AnyString.init) + self._looker_group_id = looker_group_id.map(AnyString.init) self._looker_group_name = looker_group_name.map(AnyString.init) self._name = name.map(AnyString.init) - if let v = role_ids { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } - self.url = url + if let v = role_ids { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } + self._url = url.map(AnyString.init) } } @@ -15177,7 +18777,7 @@ public struct SamlUserAttributeRead: SDKModel { case _name = "name" case required case user_attributes - case url + case _url = "url" } private var _name: AnyString? /** @@ -15198,16 +18798,20 @@ public struct SamlUserAttributeRead: SDKModel { */ public var user_attributes: [UserAttribute]? + private var _url: AnyString? /** * Link to saml config (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(name: String? = nil, required: Bool? = nil, user_attributes: [UserAttribute]? = nil, url: URI? = nil) { + public init(name: String? = nil, required: Bool? = nil, user_attributes: [UserAttribute]? = nil, url: String? = nil) { self._name = name.map(AnyString.init) self.required = required self.user_attributes = user_attributes - self.url = url + self._url = url.map(AnyString.init) } } @@ -15218,7 +18822,7 @@ public struct SamlUserAttributeWrite: SDKModel { case _name = "name" case required case _user_attribute_ids = "user_attribute_ids" - case url + case _url = "url" } private var _name: AnyString? /** @@ -15234,25 +18838,29 @@ public struct SamlUserAttributeWrite: SDKModel { */ public var required: Bool? - private var _user_attribute_ids: [AnyInt]? + private var _user_attribute_ids: [AnyString]? /** * Looker User Attribute Ids */ - public var user_attribute_ids: [Int64]? { + public var user_attribute_ids: [String]? { get { if let v = _user_attribute_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _user_attribute_ids = v.map { AnyInt.init($0) } } else { _user_attribute_ids = nil } } + set { if let v = newValue { _user_attribute_ids = v.map { AnyString.init($0) } } else { _user_attribute_ids = nil } } } + private var _url: AnyString? /** * Link to saml config (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(name: String? = nil, required: Bool? = nil, user_attribute_ids: [Int64]? = nil, url: URI? = nil) { + public init(name: String? = nil, required: Bool? = nil, user_attribute_ids: [String]? = nil, url: String? = nil) { self._name = name.map(AnyString.init) self.required = required - if let v = user_attribute_ids { _user_attribute_ids = v.map { AnyInt.init($0) } } else { _user_attribute_ids = nil } - self.url = url + if let v = user_attribute_ids { _user_attribute_ids = v.map { AnyString.init($0) } } else { _user_attribute_ids = nil } + self._url = url.map(AnyString.init) } } @@ -15308,13 +18916,13 @@ public struct ScheduledPlan: SDKModel { set { _name = newValue.map(AnyString.init) } } - private var _user_id: AnyInt? + private var _user_id: AnyString? /** * User Id which owns this scheduled plan */ - public var user_id: Int64? { + public var user_id: String? { get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } + set { _user_id = newValue.map(AnyString.init) } } /** @@ -15327,22 +18935,22 @@ public struct ScheduledPlan: SDKModel { */ public var enabled: Bool? - private var _look_id: AnyInt? + private var _look_id: AnyString? /** * Id of a look */ - public var look_id: Int64? { + public var look_id: String? { get { _look_id?.value } - set { _look_id = newValue.map(AnyInt.init) } + set { _look_id = newValue.map(AnyString.init) } } - private var _dashboard_id: AnyInt? + private var _dashboard_id: AnyString? /** * Id of a dashboard */ - public var dashboard_id: Int64? { + public var dashboard_id: String? { get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyInt.init) } + set { _dashboard_id = newValue.map(AnyString.init) } } private var _lookml_dashboard_id: AnyString? @@ -15517,13 +19125,13 @@ public struct ScheduledPlan: SDKModel { set { _inline_table_width = newValue.map(AnyInt.init) } } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } /** @@ -15562,13 +19170,13 @@ public struct ScheduledPlan: SDKModel { */ public var can: StringDictionary? - public init(name: String? = nil, user_id: Int64? = nil, run_as_recipient: Bool? = nil, enabled: Bool? = nil, look_id: Int64? = nil, dashboard_id: Int64? = 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, query_id: 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, inline_table_width: Int64? = nil, id: Int64? = 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, query_id: 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, inline_table_width: Int64? = 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(AnyInt.init) + self._user_id = user_id.map(AnyString.init) self.run_as_recipient = run_as_recipient self.enabled = enabled - self._look_id = look_id.map(AnyInt.init) - self._dashboard_id = dashboard_id.map(AnyInt.init) + self._look_id = look_id.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) self._filters_string = filters_string.map(AnyString.init) self._dashboard_filters = dashboard_filters.map(AnyString.init) @@ -15593,7 +19201,7 @@ public struct ScheduledPlan: SDKModel { self._color_theme = color_theme.map(AnyString.init) self.long_tables = long_tables self._inline_table_width = inline_table_width.map(AnyInt.init) - self._id = id.map(AnyInt.init) + self._id = id.map(AnyString.init) self.created_at = created_at self.updated_at = updated_at self._title = title.map(AnyString.init) @@ -15605,124 +19213,424 @@ public struct ScheduledPlan: SDKModel { } -public struct ScheduledPlanDestination: SDKModel { +public struct ScheduledPlanDestination: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _id = "id" + case _scheduled_plan_id = "scheduled_plan_id" + case _format = "format" + case apply_formatting + case apply_vis + case _address = "address" + case looker_recipient + case _type = "type" + case _parameters = "parameters" + case _secret_parameters = "secret_parameters" + case _message = "message" + } + private var _id: AnyString? + /** + * Unique Id (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + private var _scheduled_plan_id: AnyString? + /** + * Id of a scheduled plan you own + */ + public var scheduled_plan_id: String? { + get { _scheduled_plan_id?.value } + set { _scheduled_plan_id = newValue.map(AnyString.init) } + } + + private var _format: AnyString? + /** + * 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" + */ + public var format: String? { + get { _format?.value } + set { _format = newValue.map(AnyString.init) } + } + + /** + * Are values formatted? (containing currency symbols, digit separators, etc. + */ + public var apply_formatting: Bool? + + /** + * Whether visualization options are applied to the results. + */ + public var apply_vis: Bool? + + private var _address: AnyString? + /** + * 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/'. + */ + public var address: String? { + get { _address?.value } + set { _address = newValue.map(AnyString.init) } + } + + /** + * Whether the recipient is a Looker user on the current instance (only applicable for email recipients) (read-only) + */ + public var looker_recipient: Bool? + + private var _type: AnyString? + /** + * Type of the address ('email', 'webhook', 's3', or 'sftp') + */ + public var type: String? { + get { _type?.value } + set { _type = newValue.map(AnyString.init) } + } + + private var _parameters: AnyString? + /** + * 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. + */ + public var parameters: String? { + get { _parameters?.value } + set { _parameters = newValue.map(AnyString.init) } + } + + private var _secret_parameters: AnyString? + /** + * (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. + */ + public var secret_parameters: String? { + get { _secret_parameters?.value } + set { _secret_parameters = newValue.map(AnyString.init) } + } + + private var _message: AnyString? + /** + * Optional message to be included in scheduled emails + */ + public var message: String? { + get { _message?.value } + set { _message = newValue.map(AnyString.init) } + } + + public init(id: String? = nil, scheduled_plan_id: String? = nil, format: String? = nil, apply_formatting: Bool? = nil, apply_vis: Bool? = nil, address: String? = nil, looker_recipient: Bool? = nil, type: String? = nil, parameters: String? = nil, secret_parameters: String? = nil, message: String? = nil) { + self._id = id.map(AnyString.init) + self._scheduled_plan_id = scheduled_plan_id.map(AnyString.init) + self._format = format.map(AnyString.init) + self.apply_formatting = apply_formatting + self.apply_vis = apply_vis + self._address = address.map(AnyString.init) + self.looker_recipient = looker_recipient + self._type = type.map(AnyString.init) + self._parameters = parameters.map(AnyString.init) + self._secret_parameters = secret_parameters.map(AnyString.init) + self._message = message.map(AnyString.init) + } + +} + +public struct Schema: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case is_default + } + private var _name: AnyString? + /** + * Schema name (read-only) + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + + /** + * True if this is the default schema (read-only) + */ + public var is_default: Bool? + + public init(name: String? = nil, is_default: Bool? = nil) { + self._name = name.map(AnyString.init) + self.is_default = is_default + } + +} + +public struct SchemaColumn: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _sql_escaped_name = "sql_escaped_name" + case _schema_name = "schema_name" + case _data_type_database = "data_type_database" + case _data_type = "data_type" + case _data_type_looker = "data_type_looker" + case _description = "description" + case _column_size = "column_size" + case snippets + } + private var _name: AnyString? + /** + * Schema item name (read-only) + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + + private var _sql_escaped_name: AnyString? + /** + * Full name of item (read-only) + */ + public var sql_escaped_name: String? { + get { _sql_escaped_name?.value } + set { _sql_escaped_name = newValue.map(AnyString.init) } + } + + private var _schema_name: AnyString? + /** + * Name of schema (read-only) + */ + public var schema_name: String? { + get { _schema_name?.value } + set { _schema_name = newValue.map(AnyString.init) } + } + + private var _data_type_database: AnyString? + /** + * SQL dialect data type (read-only) + */ + public var data_type_database: String? { + get { _data_type_database?.value } + set { _data_type_database = newValue.map(AnyString.init) } + } + + private var _data_type: AnyString? + /** + * Data type (read-only) + */ + public var data_type: String? { + get { _data_type?.value } + set { _data_type = newValue.map(AnyString.init) } + } + + private var _data_type_looker: AnyString? + /** + * Looker data type (read-only) + */ + public var data_type_looker: String? { + get { _data_type_looker?.value } + set { _data_type_looker = newValue.map(AnyString.init) } + } + + private var _description: AnyString? + /** + * SQL data type (read-only) + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } + + private var _column_size: AnyInt? + /** + * Column data size (read-only) + */ + public var column_size: Int64? { + get { _column_size?.value } + set { _column_size = newValue.map(AnyInt.init) } + } + + /** + * SQL Runner snippets for this connection (read-only) + */ + public var snippets: [Snippet]? + + public init(name: String? = nil, sql_escaped_name: String? = nil, schema_name: String? = nil, data_type_database: String? = nil, data_type: String? = nil, data_type_looker: String? = nil, description: String? = nil, column_size: Int64? = nil, snippets: [Snippet]? = nil) { + self._name = name.map(AnyString.init) + self._sql_escaped_name = sql_escaped_name.map(AnyString.init) + self._schema_name = schema_name.map(AnyString.init) + self._data_type_database = data_type_database.map(AnyString.init) + self._data_type = data_type.map(AnyString.init) + self._data_type_looker = data_type_looker.map(AnyString.init) + self._description = description.map(AnyString.init) + self._column_size = column_size.map(AnyInt.init) + self.snippets = snippets + } + +} + +public struct SchemaColumns: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" - case _scheduled_plan_id = "scheduled_plan_id" - case _format = "format" - case apply_formatting - case apply_vis - case _address = "address" - case looker_recipient - case _type = "type" - case _parameters = "parameters" - case _secret_parameters = "secret_parameters" - case _message = "message" + case _name = "name" + case _sql_escaped_name = "sql_escaped_name" + case _schema_name = "schema_name" + case columns } - private var _id: AnyInt? + private var _name: AnyString? /** - * Unique Id (read-only) + * Schema item name (read-only) */ - public var id: Int64? { - get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - private var _scheduled_plan_id: AnyInt? + private var _sql_escaped_name: AnyString? /** - * Id of a scheduled plan you own + * Full name of item (read-only) */ - public var scheduled_plan_id: Int64? { - get { _scheduled_plan_id?.value } - set { _scheduled_plan_id = newValue.map(AnyInt.init) } + public var sql_escaped_name: String? { + get { _sql_escaped_name?.value } + set { _sql_escaped_name = newValue.map(AnyString.init) } } - private var _format: AnyString? + private var _schema_name: AnyString? /** - * 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" + * Name of schema (read-only) */ - public var format: String? { - get { _format?.value } - set { _format = newValue.map(AnyString.init) } + public var schema_name: String? { + get { _schema_name?.value } + set { _schema_name = newValue.map(AnyString.init) } } /** - * Are values formatted? (containing currency symbols, digit separators, etc. + * Columns for this schema (read-only) */ - public var apply_formatting: Bool? + public var columns: [SchemaColumn]? + + public init(name: String? = nil, sql_escaped_name: String? = nil, schema_name: String? = nil, columns: [SchemaColumn]? = nil) { + self._name = name.map(AnyString.init) + self._sql_escaped_name = sql_escaped_name.map(AnyString.init) + self._schema_name = schema_name.map(AnyString.init) + self.columns = columns + } +} + +public struct SchemaTable: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _sql_escaped_name = "sql_escaped_name" + case _schema_name = "schema_name" + case _rows = "rows" + case _external = "external" + case snippets + } + private var _name: AnyString? /** - * Whether visualization options are applied to the results. + * Schema item name (read-only) */ - public var apply_vis: Bool? + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } - private var _address: AnyString? + private var _sql_escaped_name: AnyString? /** - * 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/'. + * Full name of item (read-only) */ - public var address: String? { - get { _address?.value } - set { _address = newValue.map(AnyString.init) } + public var sql_escaped_name: String? { + get { _sql_escaped_name?.value } + set { _sql_escaped_name = newValue.map(AnyString.init) } } + private var _schema_name: AnyString? /** - * Whether the recipient is a Looker user on the current instance (only applicable for email recipients) (read-only) + * Name of schema (read-only) */ - public var looker_recipient: Bool? + public var schema_name: String? { + get { _schema_name?.value } + set { _schema_name = newValue.map(AnyString.init) } + } - private var _type: AnyString? + private var _rows: AnyInt? /** - * Type of the address ('email', 'webhook', 's3', or 'sftp') + * Number of data rows (read-only) */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var rows: Int64? { + get { _rows?.value } + set { _rows = newValue.map(AnyInt.init) } } - private var _parameters: AnyString? + private var _external: AnyString? /** - * 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. + * External reference??? (read-only) */ - public var parameters: String? { - get { _parameters?.value } - set { _parameters = newValue.map(AnyString.init) } + public var external: String? { + get { _external?.value } + set { _external = newValue.map(AnyString.init) } } - private var _secret_parameters: AnyString? /** - * (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. + * SQL Runner snippets for connection (read-only) */ - public var secret_parameters: String? { - get { _secret_parameters?.value } - set { _secret_parameters = newValue.map(AnyString.init) } + public var snippets: [Snippet]? + + public init(name: String? = nil, sql_escaped_name: String? = nil, schema_name: String? = nil, rows: Int64? = nil, external: String? = nil, snippets: [Snippet]? = nil) { + self._name = name.map(AnyString.init) + self._sql_escaped_name = sql_escaped_name.map(AnyString.init) + self._schema_name = schema_name.map(AnyString.init) + self._rows = rows.map(AnyInt.init) + self._external = external.map(AnyString.init) + self.snippets = snippets } - private var _message: AnyString? +} + +public struct SchemaTables: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case is_default + case tables + case table_limit_hit + } + private var _name: AnyString? /** - * Optional message to be included in scheduled emails + * Schema name (read-only) */ - public var message: String? { - get { _message?.value } - set { _message = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - public init(id: Int64? = nil, scheduled_plan_id: Int64? = nil, format: String? = nil, apply_formatting: Bool? = nil, apply_vis: Bool? = nil, address: String? = nil, looker_recipient: Bool? = nil, type: String? = nil, parameters: String? = nil, secret_parameters: String? = nil, message: String? = nil) { - self._id = id.map(AnyInt.init) - self._scheduled_plan_id = scheduled_plan_id.map(AnyInt.init) - self._format = format.map(AnyString.init) - self.apply_formatting = apply_formatting - self.apply_vis = apply_vis - self._address = address.map(AnyString.init) - self.looker_recipient = looker_recipient - self._type = type.map(AnyString.init) - self._parameters = parameters.map(AnyString.init) - self._secret_parameters = secret_parameters.map(AnyString.init) - self._message = message.map(AnyString.init) + /** + * True if this is the default schema (read-only) + */ + public var is_default: Bool? + + /** + * Tables for this schema (read-only) + */ + public var tables: [SchemaTable]? + + /** + * True if the table limit was hit while retrieving tables in this schema (read-only) + */ + public var table_limit_hit: Bool? + + public init(name: String? = nil, is_default: Bool? = nil, tables: [SchemaTable]? = nil, table_limit_hit: Bool? = nil) { + self._name = name.map(AnyString.init) + self.is_default = is_default + self.tables = tables + self.table_limit_hit = table_limit_hit } } +/** + * Field to distinguish between SSO secrets and JWT secrets Valid values are: "SSO", "JWT". (Enum defined in EmbedSecret) + */ +public enum SecretType: String, Codable { + case SSO = "SSO" + case JWT = "JWT" +} + public struct Session: SDKModel { private enum CodingKeys : String, CodingKey { @@ -15740,20 +19648,20 @@ public struct Session: SDKModel { case _sudo_user_id = "sudo_user_id" case _created_at = "created_at" case _expires_at = "expires_at" - case url + case _url = "url" } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _ip_address: AnyString? @@ -15837,13 +19745,13 @@ public struct Session: SDKModel { set { _extended_count = newValue.map(AnyInt.init) } } - private var _sudo_user_id: AnyInt? + private var _sudo_user_id: AnyString? /** * Actual user in the case when this session represents one user sudo'ing as another (read-only) */ - public var sudo_user_id: Int64? { + public var sudo_user_id: String? { get { _sudo_user_id?.value } - set { _sudo_user_id = newValue.map(AnyInt.init) } + set { _sudo_user_id = newValue.map(AnyString.init) } } private var _created_at: AnyString? @@ -15864,14 +19772,18 @@ public struct Session: SDKModel { set { _expires_at = newValue.map(AnyString.init) } } + private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, id: Int64? = nil, ip_address: String? = nil, browser: String? = nil, operating_system: String? = nil, city: String? = nil, state: String? = nil, country: String? = nil, credentials_type: String? = nil, extended_at: String? = nil, extended_count: Int64? = nil, sudo_user_id: Int64? = nil, created_at: String? = nil, expires_at: String? = nil, url: URI? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, ip_address: String? = nil, browser: String? = nil, operating_system: String? = nil, city: String? = nil, state: String? = nil, country: String? = nil, credentials_type: String? = nil, extended_at: String? = nil, extended_count: Int64? = nil, sudo_user_id: String? = nil, created_at: String? = nil, expires_at: String? = nil, url: String? = nil) { self.can = can - self._id = id.map(AnyInt.init) + self._id = id.map(AnyString.init) self._ip_address = ip_address.map(AnyString.init) self._browser = browser.map(AnyString.init) self._operating_system = operating_system.map(AnyString.init) @@ -15881,10 +19793,10 @@ public struct Session: SDKModel { self._credentials_type = credentials_type.map(AnyString.init) self._extended_at = extended_at.map(AnyString.init) self._extended_count = extended_count.map(AnyInt.init) - self._sudo_user_id = sudo_user_id.map(AnyInt.init) + self._sudo_user_id = sudo_user_id.map(AnyString.init) self._created_at = created_at.map(AnyString.init) self._expires_at = expires_at.map(AnyString.init) - self.url = url + self._url = url.map(AnyString.init) } } @@ -15924,476 +19836,367 @@ public struct SessionConfig: SDKModel { public var unlimited_sessions_per_user: Bool? /** - * Enforce session logout for sessions that are inactive for 15 minutes. - */ - public var use_inactivity_based_logout: Bool? - - /** - * Track location of session when user logs in. - */ - public var track_session_location: Bool? - - public init(can: StringDictionary? = nil, allow_persistent_sessions: Bool? = nil, session_minutes: Int64? = nil, unlimited_sessions_per_user: Bool? = nil, use_inactivity_based_logout: Bool? = nil, track_session_location: Bool? = nil) { - self.can = can - self.allow_persistent_sessions = allow_persistent_sessions - self._session_minutes = session_minutes.map(AnyInt.init) - self.unlimited_sessions_per_user = unlimited_sessions_per_user - self.use_inactivity_based_logout = use_inactivity_based_logout - self.track_session_location = track_session_location - } - -} - -public struct SmtpSettings: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _address = "address" - case _from = "from" - case _user_name = "user_name" - case _password = "password" - case _port = "port" - case enable_starttls_auto - case ssl_version - case default_smtp - } - private var _address: AnyString? - /** - * SMTP Server url - */ - public var address: String? { - get { _address?.value } - set { _address = newValue.map(AnyString.init) } - } - - private var _from: AnyString? - /** - * From e-mail address - */ - public var from: String? { - get { _from?.value } - set { _from = newValue.map(AnyString.init) } - } - - private var _user_name: AnyString? - /** - * User name - */ - public var user_name: String? { - get { _user_name?.value } - set { _user_name = newValue.map(AnyString.init) } - } - - private var _password: AnyString? - /** - * Password - */ - public var password: String? { - get { _password?.value } - set { _password = newValue.map(AnyString.init) } - } - - private var _port: AnyInt? - /** - * SMTP Server's port - */ - public var port: Int64? { - get { _port?.value } - set { _port = newValue.map(AnyInt.init) } - } - - /** - * Is TLS encryption enabled? - */ - public var enable_starttls_auto: Bool? - - /** - * TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2". - */ - public var ssl_version: SslVersion? - - /** - * Whether to enable built-in Looker SMTP - */ - public var default_smtp: Bool? - - public init(address: String? = nil, from: String? = nil, user_name: String? = nil, password: String? = nil, port: Int64? = nil, enable_starttls_auto: Bool? = nil, ssl_version: SslVersion? = nil, default_smtp: Bool? = nil) { - self._address = address.map(AnyString.init) - self._from = from.map(AnyString.init) - self._user_name = user_name.map(AnyString.init) - self._password = password.map(AnyString.init) - self._port = port.map(AnyInt.init) - self.enable_starttls_auto = enable_starttls_auto - self.ssl_version = ssl_version - self.default_smtp = default_smtp - } - -} - -public struct Snippet: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _label = "label" - case _sql = "sql" - case can - } - private var _name: AnyString? - /** - * Name of the snippet (read-only) - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - private var _label: AnyString? - /** - * Label of the snippet (read-only) - */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } - } - - private var _sql: AnyString? - /** - * SQL text of the snippet (read-only) + * Enforce session logout for sessions that are inactive for 15 minutes. */ - public var sql: String? { - get { _sql?.value } - set { _sql = newValue.map(AnyString.init) } - } + public var use_inactivity_based_logout: Bool? /** - * Operations the current user is able to perform on this object (read-only) + * Track location of session when user logs in. */ - public var can: StringDictionary? + public var track_session_location: Bool? - public init(name: String? = nil, label: String? = nil, sql: String? = nil, can: StringDictionary? = nil) { - self._name = name.map(AnyString.init) - self._label = label.map(AnyString.init) - self._sql = sql.map(AnyString.init) + public init(can: StringDictionary? = nil, allow_persistent_sessions: Bool? = nil, session_minutes: Int64? = nil, unlimited_sessions_per_user: Bool? = nil, use_inactivity_based_logout: Bool? = nil, track_session_location: Bool? = nil) { self.can = can + self.allow_persistent_sessions = allow_persistent_sessions + self._session_minutes = session_minutes.map(AnyInt.init) + self.unlimited_sessions_per_user = unlimited_sessions_per_user + self.use_inactivity_based_logout = use_inactivity_based_logout + self.track_session_location = track_session_location } } -public struct Space: SDKModel { +public struct Setting: SDKModel { private enum CodingKeys : String, CodingKey { - case _name = "name" - case _parent_id = "parent_id" - case _id = "id" - case _content_metadata_id = "content_metadata_id" - case created_at - case _creator_id = "creator_id" - case _child_count = "child_count" - case _external_id = "external_id" - case is_embed - case is_embed_shared_root - case is_embed_users_root - case is_personal - case is_personal_descendant - case is_shared_root - case is_users_root - case can - case dashboards - case looks + case extension_framework_enabled + case extension_load_url_enabled + case marketplace_auto_install_enabled + case marketplace_automation + case marketplace_enabled + case _marketplace_site = "marketplace_site" + case marketplace_terms_accepted + case privatelabel_configuration + case custom_welcome_email + case onboarding_enabled + case _timezone = "timezone" + case allow_user_timezones + case data_connector_default_enabled + case _host_url = "host_url" + case override_warnings + case _email_domain_allowlist = "email_domain_allowlist" + case embed_cookieless_v2 + case embed_enabled + case embed_config } - private var _name: AnyString /** - * Unique Name + * Toggle extension framework on or off */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } - } + public var extension_framework_enabled: Bool? - private var _parent_id: AnyString? /** - * Id of Parent. If the parent id is null, this is a root-level entry + * (DEPRECATED) Toggle extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. */ - public var parent_id: String? { - get { _parent_id?.value } - set { _parent_id = newValue.map(AnyString.init) } - } + public var extension_load_url_enabled: Bool? - private var _id: AnyString? /** - * Unique Id (read-only) + * (DEPRECATED) Toggle marketplace auto install on or off. Deprecated - do not use. Auto install can now be enabled via marketplace automation settings */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } - } + public var marketplace_auto_install_enabled: Bool? + + public var marketplace_automation: MarketplaceAutomation? - private var _content_metadata_id: AnyInt? /** - * Id of content metadata (read-only) + * Toggle marketplace on or off */ - public var content_metadata_id: Int64? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } - } + public var marketplace_enabled: Bool? + private var _marketplace_site: AnyString? /** - * Time the space was created (read-only) + * Location of Looker marketplace CDN (read-only) */ - public var created_at: Date? + public var marketplace_site: String? { + get { _marketplace_site?.value } + set { _marketplace_site = newValue.map(AnyString.init) } + } - private var _creator_id: AnyInt? /** - * User Id of Creator (read-only) + * 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. */ - public var creator_id: Int64? { - get { _creator_id?.value } - set { _creator_id = newValue.map(AnyInt.init) } - } + public var marketplace_terms_accepted: Bool? + + public var privatelabel_configuration: PrivatelabelConfiguration? + + public var custom_welcome_email: CustomWelcomeEmail? - private var _child_count: AnyInt? /** - * Children Count (read-only) + * Toggle onboarding on or off */ - public var child_count: Int64? { - get { _child_count?.value } - set { _child_count = newValue.map(AnyInt.init) } - } + public var onboarding_enabled: Bool? - private var _external_id: AnyString? + private var _timezone: AnyString? /** - * Embedder's Id if this space was autogenerated as an embedding shared space via 'external_group_id' in an SSO embed login (read-only) + * Change instance-wide default timezone */ - public var external_id: String? { - get { _external_id?.value } - set { _external_id = newValue.map(AnyString.init) } + public var timezone: String? { + get { _timezone?.value } + set { _timezone = newValue.map(AnyString.init) } } /** - * Space is an embed space (read-only) + * Toggle user-specific timezones on or off */ - public var is_embed: Bool? + public var allow_user_timezones: Bool? /** - * Space is the root embed shared space (read-only) + * Toggle default future connectors on or off */ - public var is_embed_shared_root: Bool? + public var data_connector_default_enabled: Bool? + private var _host_url: AnyString? /** - * Space is the root embed users space (read-only) + * Change the base portion of your Looker instance URL setting */ - public var is_embed_users_root: Bool? + public var host_url: String? { + get { _host_url?.value } + set { _host_url = newValue.map(AnyString.init) } + } /** - * Space is a user's personal space (read-only) + * (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. */ - public var is_personal: Bool? + public var override_warnings: Bool? + private var _email_domain_allowlist: [AnyString]? /** - * Space is descendant of a user's personal space (read-only) + * An array of Email Domain Allowlist of type string for Scheduled Content */ - public var is_personal_descendant: Bool? + public var email_domain_allowlist: [String]? { + get { if let v = _email_domain_allowlist { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _email_domain_allowlist = v.map { AnyString.init($0) } } else { _email_domain_allowlist = nil } } + } /** - * Space is the root shared space (read-only) + * (DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value. */ - public var is_shared_root: Bool? + public var embed_cookieless_v2: Bool? /** - * Space is the root user space (read-only) + * True if embedding is enabled https://cloud.google.com/looker/docs/r/looker-core-feature-embed, false otherwise (read-only) */ - public var is_users_root: Bool? + public var embed_enabled: Bool? + + public var embed_config: EmbedConfig? + + 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_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) { + 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 + self.marketplace_automation = marketplace_automation + self.marketplace_enabled = marketplace_enabled + self._marketplace_site = marketplace_site.map(AnyString.init) + self.marketplace_terms_accepted = marketplace_terms_accepted + self.privatelabel_configuration = privatelabel_configuration + self.custom_welcome_email = custom_welcome_email + self.onboarding_enabled = onboarding_enabled + self._timezone = timezone.map(AnyString.init) + self.allow_user_timezones = allow_user_timezones + self.data_connector_default_enabled = data_connector_default_enabled + self._host_url = host_url.map(AnyString.init) + self.override_warnings = override_warnings + if let v = email_domain_allowlist { _email_domain_allowlist = v.map { AnyString.init($0) } } else { _email_domain_allowlist = nil } + self.embed_cookieless_v2 = embed_cookieless_v2 + self.embed_enabled = embed_enabled + self.embed_config = embed_config + } + +} + +public struct SmtpNodeStatus: SDKModel { + private enum CodingKeys : String, CodingKey { + case is_valid + case _message = "message" + case _hostname = "hostname" + } /** - * Operations the current user is able to perform on this object (read-only) + * SMTP status of node (read-only) */ - public var can: StringDictionary? + public var is_valid: Bool? + private var _message: AnyString? /** - * Dashboards (read-only) + * Error message for node (read-only) */ - public var dashboards: [DashboardBase]? + public var message: String? { + get { _message?.value } + set { _message = newValue.map(AnyString.init) } + } + private var _hostname: AnyString? /** - * Looks (read-only) + * Host name of node (read-only) */ - public var looks: [LookWithDashboards]? - - public init(name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil, dashboards: [DashboardBase]? = nil, looks: [LookWithDashboards]? = nil) { - self._name = AnyString.init(name) - self._parent_id = parent_id.map(AnyString.init) - self._id = id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyInt.init) - self.created_at = created_at - self._creator_id = creator_id.map(AnyInt.init) - self._child_count = child_count.map(AnyInt.init) - self._external_id = external_id.map(AnyString.init) - self.is_embed = is_embed - self.is_embed_shared_root = is_embed_shared_root - self.is_embed_users_root = is_embed_users_root - self.is_personal = is_personal - self.is_personal_descendant = is_personal_descendant - self.is_shared_root = is_shared_root - self.is_users_root = is_users_root - self.can = can - self.dashboards = dashboards - self.looks = looks + public var hostname: String? { + get { _hostname?.value } + set { _hostname = newValue.map(AnyString.init) } } - public init(_ name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil, dashboards: [DashboardBase]? = nil, looks: [LookWithDashboards]? = nil) { - self.init(name: name, parent_id: parent_id, id: id, content_metadata_id: content_metadata_id, created_at: created_at, creator_id: creator_id, child_count: child_count, external_id: external_id, is_embed: is_embed, is_embed_shared_root: is_embed_shared_root, is_embed_users_root: is_embed_users_root, is_personal: is_personal, is_personal_descendant: is_personal_descendant, is_shared_root: is_shared_root, is_users_root: is_users_root, can: can, dashboards: dashboards, looks: looks) + public init(is_valid: Bool? = nil, message: String? = nil, hostname: String? = nil) { + self.is_valid = is_valid + self._message = message.map(AnyString.init) + self._hostname = hostname.map(AnyString.init) } } -public struct SpaceBase: SDKModel { +public struct SmtpSettings: SDKModel { private enum CodingKeys : String, CodingKey { - case _name = "name" - case _parent_id = "parent_id" - case _id = "id" - case _content_metadata_id = "content_metadata_id" - case created_at - case _creator_id = "creator_id" - case _child_count = "child_count" - case _external_id = "external_id" - case is_embed - case is_embed_shared_root - case is_embed_users_root - case is_personal - case is_personal_descendant - case is_shared_root - case is_users_root - case can + case _address = "address" + case _from = "from" + case _user_name = "user_name" + case _password = "password" + case _port = "port" + case enable_starttls_auto + case ssl_version + case default_smtp } - private var _name: AnyString + private var _address: AnyString? /** - * Unique Name + * SMTP Server url */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } + public var address: String? { + get { _address?.value } + set { _address = newValue.map(AnyString.init) } } - private var _parent_id: AnyString? + private var _from: AnyString? /** - * Id of Parent. If the parent id is null, this is a root-level entry + * From e-mail address */ - public var parent_id: String? { - get { _parent_id?.value } - set { _parent_id = newValue.map(AnyString.init) } + public var from: String? { + get { _from?.value } + set { _from = newValue.map(AnyString.init) } } - private var _id: AnyString? + private var _user_name: AnyString? /** - * Unique Id (read-only) + * User name */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var user_name: String? { + get { _user_name?.value } + set { _user_name = newValue.map(AnyString.init) } } - private var _content_metadata_id: AnyInt? + private var _password: AnyString? /** - * Id of content metadata (read-only) + * Password */ - public var content_metadata_id: Int64? { - get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } + public var password: String? { + get { _password?.value } + set { _password = newValue.map(AnyString.init) } } + private var _port: AnyInt? /** - * Time the space was created (read-only) + * SMTP Server's port */ - public var created_at: Date? + public var port: Int64? { + get { _port?.value } + set { _port = newValue.map(AnyInt.init) } + } - private var _creator_id: AnyInt? /** - * User Id of Creator (read-only) + * Is TLS encryption enabled? */ - public var creator_id: Int64? { - get { _creator_id?.value } - set { _creator_id = newValue.map(AnyInt.init) } - } + public var enable_starttls_auto: Bool? - private var _child_count: AnyInt? /** - * Children Count (read-only) + * TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2". */ - public var child_count: Int64? { - get { _child_count?.value } - set { _child_count = newValue.map(AnyInt.init) } - } + public var ssl_version: SslVersion? - private var _external_id: AnyString? /** - * Embedder's Id if this space was autogenerated as an embedding shared space via 'external_group_id' in an SSO embed login (read-only) + * Whether to enable built-in Looker SMTP */ - public var external_id: String? { - get { _external_id?.value } - set { _external_id = newValue.map(AnyString.init) } + public var default_smtp: Bool? + + public init(address: String? = nil, from: String? = nil, user_name: String? = nil, password: String? = nil, port: Int64? = nil, enable_starttls_auto: Bool? = nil, ssl_version: SslVersion? = nil, default_smtp: Bool? = nil) { + self._address = address.map(AnyString.init) + self._from = from.map(AnyString.init) + self._user_name = user_name.map(AnyString.init) + self._password = password.map(AnyString.init) + self._port = port.map(AnyInt.init) + self.enable_starttls_auto = enable_starttls_auto + self.ssl_version = ssl_version + self.default_smtp = default_smtp } - /** - * Space is an embed space (read-only) - */ - public var is_embed: Bool? +} - /** - * Space is the root embed shared space (read-only) - */ - public var is_embed_shared_root: Bool? +public struct SmtpStatus: SDKModel { + private enum CodingKeys : String, CodingKey { + case is_valid + case _node_count = "node_count" + case node_status + } /** - * Space is the root embed users space (read-only) + * Overall SMTP status of cluster (read-only) */ - public var is_embed_users_root: Bool? + public var is_valid: Bool? + private var _node_count: AnyInt? /** - * Space is a user's personal space (read-only) + * Total number of nodes in cluster (read-only) */ - public var is_personal: Bool? + public var node_count: Int64? { + get { _node_count?.value } + set { _node_count = newValue.map(AnyInt.init) } + } /** - * Space is descendant of a user's personal space (read-only) + * array of each node's status containing is_valid, message, hostname (read-only) */ - public var is_personal_descendant: Bool? + public var node_status: [SmtpNodeStatus]? + + public init(is_valid: Bool? = nil, node_count: Int64? = nil, node_status: [SmtpNodeStatus]? = nil) { + self.is_valid = is_valid + self._node_count = node_count.map(AnyInt.init) + self.node_status = node_status + } + +} + +public struct Snippet: SDKModel { + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _label = "label" + case _sql = "sql" + } + private var _name: AnyString? /** - * Space is the root shared space (read-only) + * Name of the snippet (read-only) */ - public var is_shared_root: Bool? + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + private var _label: AnyString? /** - * Space is the root user space (read-only) + * Label of the snippet (read-only) */ - public var is_users_root: Bool? + public var label: String? { + get { _label?.value } + set { _label = newValue.map(AnyString.init) } + } + private var _sql: AnyString? /** - * Operations the current user is able to perform on this object (read-only) + * SQL text of the snippet (read-only) */ - public var can: StringDictionary? - - public init(name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil) { - self._name = AnyString.init(name) - self._parent_id = parent_id.map(AnyString.init) - self._id = id.map(AnyString.init) - self._content_metadata_id = content_metadata_id.map(AnyInt.init) - self.created_at = created_at - self._creator_id = creator_id.map(AnyInt.init) - self._child_count = child_count.map(AnyInt.init) - self._external_id = external_id.map(AnyString.init) - self.is_embed = is_embed - self.is_embed_shared_root = is_embed_shared_root - self.is_embed_users_root = is_embed_users_root - self.is_personal = is_personal - self.is_personal_descendant = is_personal_descendant - self.is_shared_root = is_shared_root - self.is_users_root = is_users_root - self.can = can + public var sql: String? { + get { _sql?.value } + set { _sql = newValue.map(AnyString.init) } } - public init(_ name: String, parent_id: String? = nil, id: String? = nil, content_metadata_id: Int64? = nil, created_at: Date? = nil, creator_id: Int64? = nil, child_count: Int64? = nil, external_id: String? = nil, is_embed: Bool? = nil, is_embed_shared_root: Bool? = nil, is_embed_users_root: Bool? = nil, is_personal: Bool? = nil, is_personal_descendant: Bool? = nil, is_shared_root: Bool? = nil, is_users_root: Bool? = nil, can: StringDictionary? = nil) { - self.init(name: name, parent_id: parent_id, id: id, content_metadata_id: content_metadata_id, created_at: created_at, creator_id: creator_id, child_count: child_count, external_id: external_id, is_embed: is_embed, is_embed_shared_root: is_embed_shared_root, is_embed_users_root: is_embed_users_root, is_personal: is_personal, is_personal_descendant: is_personal_descendant, is_shared_root: is_shared_root, is_users_root: is_users_root, can: can) + public init(name: String? = nil, label: String? = nil, sql: String? = nil) { + self._name = name.map(AnyString.init) + self._label = label.map(AnyString.init) + self._sql = sql.map(AnyString.init) } } @@ -16503,16 +20306,16 @@ public struct SqlQuery: SDKModel { */ public var vis_config: StringDictionary? - private var _result_maker_id: AnyInt? + private var _result_maker_id: AnyString? /** * ID of the ResultMakerLookup entry. */ - public var result_maker_id: Int64? { + public var result_maker_id: String? { get { _result_maker_id?.value } - set { _result_maker_id = newValue.map(AnyInt.init) } + set { _result_maker_id = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, slug: String? = nil, last_runtime: Float? = nil, run_count: Int64? = nil, browser_limit: Int64? = nil, sql: String? = nil, last_run_at: String? = nil, connection: DBConnectionBase? = nil, model_name: String? = nil, creator: UserPublic? = nil, explore_url: String? = nil, plaintext: Bool? = nil, vis_config: StringDictionary? = nil, result_maker_id: Int64? = nil) { + public init(can: StringDictionary? = nil, slug: String? = nil, last_runtime: Float? = nil, run_count: Int64? = nil, browser_limit: Int64? = nil, sql: String? = nil, last_run_at: String? = nil, connection: DBConnectionBase? = nil, model_name: String? = nil, creator: UserPublic? = nil, explore_url: String? = nil, plaintext: Bool? = nil, vis_config: StringDictionary? = nil, result_maker_id: String? = nil) { self.can = can self._slug = slug.map(AnyString.init) self.last_runtime = last_runtime @@ -16526,7 +20329,7 @@ public struct SqlQuery: SDKModel { self._explore_url = explore_url.map(AnyString.init) self.plaintext = plaintext self.vis_config = vis_config - self._result_maker_id = result_maker_id.map(AnyInt.init) + self._result_maker_id = result_maker_id.map(AnyString.init) } } @@ -16591,6 +20394,264 @@ public struct SqlQueryCreate: SDKModel { } +public struct SshPublicKey: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _public_key = "public_key" + } + private var _public_key: AnyString? + /** + * The SSH public key created for this instance (read-only) + */ + public var public_key: String? { + get { _public_key?.value } + set { _public_key = newValue.map(AnyString.init) } + } + + public init(public_key: String? = nil) { + self._public_key = public_key.map(AnyString.init) + } + +} + +public struct SshServer: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _ssh_server_id = "ssh_server_id" + case _ssh_server_name = "ssh_server_name" + case _ssh_server_host = "ssh_server_host" + case _ssh_server_port = "ssh_server_port" + case _ssh_server_user = "ssh_server_user" + case _finger_print = "finger_print" + case _sha_finger_print = "sha_finger_print" + case _public_key = "public_key" + case _status = "status" + } + private var _ssh_server_id: AnyString? + /** + * A unique id used to identify this SSH Server (read-only) + */ + public var ssh_server_id: String? { + get { _ssh_server_id?.value } + set { _ssh_server_id = newValue.map(AnyString.init) } + } + + private var _ssh_server_name: AnyString? + /** + * The name to identify this SSH Server + */ + public var ssh_server_name: String? { + get { _ssh_server_name?.value } + set { _ssh_server_name = newValue.map(AnyString.init) } + } + + private var _ssh_server_host: AnyString? + /** + * The hostname or ip address of the SSH Server + */ + public var ssh_server_host: String? { + get { _ssh_server_host?.value } + set { _ssh_server_host = newValue.map(AnyString.init) } + } + + private var _ssh_server_port: AnyInt? + /** + * The port to connect to on the SSH Server + */ + public var ssh_server_port: Int64? { + get { _ssh_server_port?.value } + set { _ssh_server_port = newValue.map(AnyInt.init) } + } + + private var _ssh_server_user: AnyString? + /** + * The username used to connect to the SSH Server + */ + public var ssh_server_user: String? { + get { _ssh_server_user?.value } + set { _ssh_server_user = newValue.map(AnyString.init) } + } + + private var _finger_print: AnyString? + /** + * The md5 fingerprint used to identify the SSH Server (read-only) + */ + public var finger_print: String? { + get { _finger_print?.value } + set { _finger_print = newValue.map(AnyString.init) } + } + + private var _sha_finger_print: AnyString? + /** + * The SHA fingerprint used to identify the SSH Server (read-only) + */ + public var sha_finger_print: String? { + get { _sha_finger_print?.value } + set { _sha_finger_print = newValue.map(AnyString.init) } + } + + private var _public_key: AnyString? + /** + * The SSH public key created for this instance (read-only) + */ + public var public_key: String? { + get { _public_key?.value } + set { _public_key = newValue.map(AnyString.init) } + } + + private var _status: AnyString? + /** + * The current connection status to this SSH Server (read-only) + */ + public var status: String? { + get { _status?.value } + set { _status = newValue.map(AnyString.init) } + } + + public init(ssh_server_id: String? = nil, ssh_server_name: String? = nil, ssh_server_host: String? = nil, ssh_server_port: Int64? = nil, ssh_server_user: String? = nil, finger_print: String? = nil, sha_finger_print: String? = nil, public_key: String? = nil, status: String? = nil) { + self._ssh_server_id = ssh_server_id.map(AnyString.init) + self._ssh_server_name = ssh_server_name.map(AnyString.init) + self._ssh_server_host = ssh_server_host.map(AnyString.init) + self._ssh_server_port = ssh_server_port.map(AnyInt.init) + self._ssh_server_user = ssh_server_user.map(AnyString.init) + self._finger_print = finger_print.map(AnyString.init) + self._sha_finger_print = sha_finger_print.map(AnyString.init) + self._public_key = public_key.map(AnyString.init) + self._status = status.map(AnyString.init) + } + +} + +public struct SshTunnel: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _tunnel_id = "tunnel_id" + case _ssh_server_id = "ssh_server_id" + case _ssh_server_name = "ssh_server_name" + case _ssh_server_host = "ssh_server_host" + case _ssh_server_port = "ssh_server_port" + case _ssh_server_user = "ssh_server_user" + case _last_attempt = "last_attempt" + case _local_host_port = "local_host_port" + case _database_host = "database_host" + case _database_port = "database_port" + case _status = "status" + } + private var _tunnel_id: AnyString? + /** + * Unique ID for the tunnel (read-only) + */ + public var tunnel_id: String? { + get { _tunnel_id?.value } + set { _tunnel_id = newValue.map(AnyString.init) } + } + + private var _ssh_server_id: AnyString? + /** + * SSH Server ID + */ + public var ssh_server_id: String? { + get { _ssh_server_id?.value } + set { _ssh_server_id = newValue.map(AnyString.init) } + } + + private var _ssh_server_name: AnyString? + /** + * SSH Server name (read-only) + */ + public var ssh_server_name: String? { + get { _ssh_server_name?.value } + set { _ssh_server_name = newValue.map(AnyString.init) } + } + + private var _ssh_server_host: AnyString? + /** + * SSH Server Hostname or IP Address (read-only) + */ + public var ssh_server_host: String? { + get { _ssh_server_host?.value } + set { _ssh_server_host = newValue.map(AnyString.init) } + } + + private var _ssh_server_port: AnyInt? + /** + * SSH Server port (read-only) + */ + public var ssh_server_port: Int64? { + get { _ssh_server_port?.value } + set { _ssh_server_port = newValue.map(AnyInt.init) } + } + + private var _ssh_server_user: AnyString? + /** + * Username used to connect to the SSH Server (read-only) + */ + public var ssh_server_user: String? { + get { _ssh_server_user?.value } + set { _ssh_server_user = newValue.map(AnyString.init) } + } + + private var _last_attempt: AnyString? + /** + * Time of last connect attempt (read-only) + */ + public var last_attempt: String? { + get { _last_attempt?.value } + set { _last_attempt = newValue.map(AnyString.init) } + } + + private var _local_host_port: AnyInt? + /** + * Localhost Port used by the Looker instance to connect to the remote DB + */ + public var local_host_port: Int64? { + get { _local_host_port?.value } + set { _local_host_port = newValue.map(AnyInt.init) } + } + + private var _database_host: AnyString? + /** + * Hostname or IP Address of the Database Server + */ + public var database_host: String? { + get { _database_host?.value } + set { _database_host = newValue.map(AnyString.init) } + } + + private var _database_port: AnyInt? + /** + * Port that the Database Server is listening on + */ + public var database_port: Int64? { + get { _database_port?.value } + set { _database_port = newValue.map(AnyInt.init) } + } + + private var _status: AnyString? + /** + * Current connection status for this Tunnel (read-only) + */ + public var status: String? { + get { _status?.value } + set { _status = newValue.map(AnyString.init) } + } + + public init(tunnel_id: String? = nil, ssh_server_id: String? = nil, ssh_server_name: String? = nil, ssh_server_host: String? = nil, ssh_server_port: Int64? = nil, ssh_server_user: String? = nil, last_attempt: String? = nil, local_host_port: Int64? = nil, database_host: String? = nil, database_port: Int64? = nil, status: String? = nil) { + self._tunnel_id = tunnel_id.map(AnyString.init) + self._ssh_server_id = ssh_server_id.map(AnyString.init) + self._ssh_server_name = ssh_server_name.map(AnyString.init) + self._ssh_server_host = ssh_server_host.map(AnyString.init) + self._ssh_server_port = ssh_server_port.map(AnyInt.init) + self._ssh_server_user = ssh_server_user.map(AnyString.init) + self._last_attempt = last_attempt.map(AnyString.init) + self._local_host_port = local_host_port.map(AnyInt.init) + self._database_host = database_host.map(AnyString.init) + self._database_port = database_port.map(AnyInt.init) + self._status = status.map(AnyString.init) + } + +} + /** * TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2". (Enum defined in SmtpSettings) */ @@ -16600,6 +20661,139 @@ public enum SslVersion: String, Codable { case TLSv1_2 = "TLSv1_2" } +public struct SupportAccessAddEntries: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _emails = "emails" + case _reason = "reason" + } + private var _emails: [AnyString]? + /** + * An array of emails to add to the Allowlist + */ + public var emails: [String]? { + get { if let v = _emails { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _emails = v.map { AnyString.init($0) } } else { _emails = nil } } + } + + private var _reason: AnyString? + /** + * Reason for adding emails to the Allowlist + */ + public var reason: String? { + get { _reason?.value } + set { _reason = newValue.map(AnyString.init) } + } + + public init(emails: [String]? = nil, reason: String? = nil) { + if let v = emails { _emails = v.map { AnyString.init($0) } } else { _emails = nil } + self._reason = reason.map(AnyString.init) + } + +} + +public struct SupportAccessAllowlistEntry: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _id = "id" + case _email = "email" + case _full_name = "full_name" + case _reason = "reason" + case created_date + } + private var _id: AnyString? + /** + * Unique ID (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + private var _email: AnyString? + /** + * Email address + */ + public var email: String? { + get { _email?.value } + set { _email = newValue.map(AnyString.init) } + } + + private var _full_name: AnyString? + /** + * Full name of allowlisted user (read-only) + */ + public var full_name: String? { + get { _full_name?.value } + set { _full_name = newValue.map(AnyString.init) } + } + + private var _reason: AnyString? + /** + * Reason the Email is included in the Allowlist + */ + public var reason: String? { + get { _reason?.value } + set { _reason = newValue.map(AnyString.init) } + } + + /** + * Date the Email was added to the Allowlist (read-only) + */ + public var created_date: Date? + + public init(id: String? = nil, email: String? = nil, full_name: String? = nil, reason: String? = nil, created_date: Date? = nil) { + self._id = id.map(AnyString.init) + self._email = email.map(AnyString.init) + self._full_name = full_name.map(AnyString.init) + self._reason = reason.map(AnyString.init) + self.created_date = created_date + } + +} + +public struct SupportAccessEnable: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _duration_in_seconds = "duration_in_seconds" + } + private var _duration_in_seconds: AnyInt + /** + * Duration Support Access will remain enabled + */ + public var duration_in_seconds: Int64 { + get { _duration_in_seconds.value } + set { _duration_in_seconds = AnyInt.init(newValue) } + } + + public init(duration_in_seconds: Int64) { + self._duration_in_seconds = AnyInt.init(duration_in_seconds) + } + + public init(_ duration_in_seconds: Int64) { + self.init(duration_in_seconds: duration_in_seconds) + } + +} + +public struct SupportAccessStatus: SDKModel { + /** + * Whether or not Support Access is open (read-only) + */ + public var `open`: Bool? + + /** + * Time that Support Access will expire (read-only) + */ + public var open_until: Date? + + public init(`open`: Bool? = nil, open_until: Date? = nil) { + self.`open` = `open` + self.open_until = open_until + } + +} + /** * A list of action types the integration supports. Valid values are: "cell", "query", "dashboard", "none". (Enum defined in Integration) */ @@ -16678,13 +20872,13 @@ public struct Theme: SDKModel { */ public var end_at: Date? - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _name: AnyString? @@ -16698,11 +20892,11 @@ public struct Theme: SDKModel { public var settings: ThemeSettings? - public init(can: StringDictionary? = nil, begin_at: Date? = nil, end_at: Date? = nil, id: Int64? = nil, name: String? = nil, settings: ThemeSettings? = nil) { + public init(can: StringDictionary? = nil, begin_at: Date? = nil, end_at: Date? = nil, id: String? = nil, name: String? = nil, settings: ThemeSettings? = nil) { self.can = can self.begin_at = begin_at self.end_at = end_at - self._id = id.map(AnyInt.init) + self._id = id.map(AnyString.init) self._name = name.map(AnyString.init) self.settings = settings } @@ -17171,38 +21365,64 @@ public struct Timezone: SDKModel { } -public struct UpdateFolder: SDKModel { +public struct UpdateArtifact: SDKModel { private enum CodingKeys : String, CodingKey { - case _name = "name" - case _parent_id = "parent_id" + case _key = "key" + case _value = "value" + case _content_type = "content_type" + case _version = "version" } - private var _name: AnyString? + private var _key: AnyString + /** + * Key of value to store. Namespace + Key must be unique. + */ + public var key: String { + get { _key.value } + set { _key = AnyString.init(newValue) } + } + + private var _value: AnyString + /** + * Value to store. + */ + public var value: String { + get { _value.value } + set { _value = AnyString.init(newValue) } + } + + private var _content_type: AnyString? /** - * Unique Name + * 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. */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var content_type: String? { + get { _content_type?.value } + set { _content_type = newValue.map(AnyString.init) } } - private var _parent_id: AnyString? + private var _version: AnyInt? /** - * Id of Parent. If the parent id is null, this is a root-level entry + * Version number of the stored value. The version must be provided for any updates to an existing artifact. (read-only) */ - public var parent_id: String? { - get { _parent_id?.value } - set { _parent_id = newValue.map(AnyString.init) } + public var version: Int64? { + get { _version?.value } + set { _version = newValue.map(AnyInt.init) } } - public init(name: String? = nil, parent_id: String? = nil) { - self._name = name.map(AnyString.init) - self._parent_id = parent_id.map(AnyString.init) + public init(key: String, value: String, content_type: String? = nil, version: Int64? = nil) { + self._key = AnyString.init(key) + self._value = AnyString.init(value) + self._content_type = content_type.map(AnyString.init) + self._version = version.map(AnyInt.init) + } + + public init(_ key: String, _ value: String, content_type: String? = nil, version: Int64? = nil) { + self.init(key: key, value: value, content_type: content_type, version: version) } } -public struct UpdateSpace: SDKModel { +public struct UpdateFolder: SDKModel { private enum CodingKeys : String, CodingKey { case _name = "name" @@ -17237,8 +21457,8 @@ public struct User: SDKModel { private enum CodingKeys : String, CodingKey { case can - case avatar_url - case avatar_url_without_sizing + case _avatar_url = "avatar_url" + case _avatar_url_without_sizing = "avatar_url_without_sizing" case credentials_api3 case credentials_email case credentials_embed @@ -17253,7 +21473,6 @@ public struct User: SDKModel { case _embed_group_space_id = "embed_group_space_id" case _first_name = "first_name" case _group_ids = "group_ids" - case _home_space_id = "home_space_id" case _home_folder_id = "home_folder_id" case _id = "id" case is_disabled @@ -17261,7 +21480,6 @@ public struct User: SDKModel { case _locale = "locale" case _looker_versions = "looker_versions" case models_dir_validated - case _personal_space_id = "personal_space_id" case _personal_folder_id = "personal_folder_id" case presumed_looker_employee case _role_ids = "role_ids" @@ -17272,22 +21490,32 @@ public struct User: SDKModel { case allow_direct_roles case allow_normal_group_membership case allow_roles_from_normal_groups - case url + case _embed_group_folder_id = "embed_group_folder_id" + case is_iam_admin + case _url = "url" } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? + private var _avatar_url: AnyString? /** * URL for the avatar image (may be generic) (read-only) */ - public var avatar_url: URI? + public var avatar_url: String? { + get { _avatar_url?.value } + set { _avatar_url = newValue.map(AnyString.init) } + } + private var _avatar_url_without_sizing: AnyString? /** * URL for the avatar image (may be generic), does not specify size (read-only) */ - public var avatar_url_without_sizing: URI? + public var avatar_url_without_sizing: String? { + get { _avatar_url_without_sizing?.value } + set { _avatar_url_without_sizing = newValue.map(AnyString.init) } + } /** * API credentials (read-only) @@ -17331,13 +21559,13 @@ public struct User: SDKModel { set { _email = newValue.map(AnyString.init) } } - private var _embed_group_space_id: AnyInt? + private var _embed_group_space_id: AnyString? /** - * (Embed only) ID of user's group space based on the external_group_id optionally specified during embed user login (read-only) + * (DEPRECATED) (Embed only) ID of user's group space based on the external_group_id optionally specified during embed user login (read-only) */ - public var embed_group_space_id: Int64? { + public var embed_group_space_id: String? { get { _embed_group_space_id?.value } - set { _embed_group_space_id = newValue.map(AnyInt.init) } + set { _embed_group_space_id = newValue.map(AnyString.init) } } private var _first_name: AnyString? @@ -17349,22 +21577,13 @@ public struct User: SDKModel { set { _first_name = newValue.map(AnyString.init) } } - private var _group_ids: [AnyInt]? + private var _group_ids: [AnyString]? /** * Array of ids of the groups for this user (read-only) */ - public var group_ids: [Int64]? { + public var group_ids: [String]? { get { if let v = _group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _group_ids = v.map { AnyInt.init($0) } } else { _group_ids = nil } } - } - - private var _home_space_id: AnyString? - /** - * ID string for user's home space - */ - public var home_space_id: String? { - get { _home_space_id?.value } - set { _home_space_id = newValue.map(AnyString.init) } + set { if let v = newValue { _group_ids = v.map { AnyString.init($0) } } else { _group_ids = nil } } } private var _home_folder_id: AnyString? @@ -17376,13 +21595,13 @@ public struct User: SDKModel { set { _home_folder_id = newValue.map(AnyString.init) } } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } /** @@ -17422,22 +21641,13 @@ public struct User: SDKModel { */ public var models_dir_validated: Bool? - private var _personal_space_id: AnyInt? - /** - * ID of user's personal space (read-only) - */ - public var personal_space_id: Int64? { - get { _personal_space_id?.value } - set { _personal_space_id = newValue.map(AnyInt.init) } - } - - private var _personal_folder_id: AnyInt? + private var _personal_folder_id: AnyString? /** * ID of user's personal folder (read-only) */ - public var personal_folder_id: Int64? { + public var personal_folder_id: String? { get { _personal_folder_id?.value } - set { _personal_folder_id = newValue.map(AnyInt.init) } + set { _personal_folder_id = newValue.map(AnyString.init) } } /** @@ -17445,13 +21655,13 @@ public struct User: SDKModel { */ public var presumed_looker_employee: Bool? - private var _role_ids: [AnyInt]? + private var _role_ids: [AnyString]? /** * Array of ids of the roles for this user (read-only) */ - public var role_ids: [Int64]? { + public var role_ids: [String]? { get { if let v = _role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } } + set { if let v = newValue { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } } } /** @@ -17489,15 +21699,33 @@ public struct User: SDKModel { */ public var allow_roles_from_normal_groups: Bool? + private var _embed_group_folder_id: AnyString? + /** + * (Embed only) ID of user's group folder based on the external_group_id optionally specified during embed user login (read-only) + */ + public var embed_group_folder_id: String? { + get { _embed_group_folder_id?.value } + set { _embed_group_folder_id = newValue.map(AnyString.init) } + } + + /** + * User is an IAM Admin - only available in Looker (Google Cloud core) (read-only) + */ + public var is_iam_admin: Bool? + + private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, avatar_url: URI? = nil, avatar_url_without_sizing: URI? = nil, credentials_api3: [CredentialsApi3]? = nil, credentials_email: CredentialsEmail? = nil, credentials_embed: [CredentialsEmbed]? = nil, credentials_google: CredentialsGoogle? = nil, credentials_ldap: CredentialsLDAP? = nil, credentials_looker_openid: CredentialsLookerOpenid? = nil, credentials_oidc: CredentialsOIDC? = nil, credentials_saml: CredentialsSaml? = nil, credentials_totp: CredentialsTotp? = nil, display_name: String? = nil, email: String? = nil, embed_group_space_id: Int64? = nil, first_name: String? = nil, group_ids: [Int64]? = nil, home_space_id: String? = nil, home_folder_id: String? = nil, id: Int64? = nil, is_disabled: Bool? = nil, last_name: String? = nil, locale: String? = nil, looker_versions: [String]? = nil, models_dir_validated: Bool? = nil, personal_space_id: Int64? = nil, personal_folder_id: Int64? = nil, presumed_looker_employee: Bool? = nil, role_ids: [Int64]? = nil, sessions: [Session]? = nil, ui_state: StringDictionary? = nil, verified_looker_employee: Bool? = nil, roles_externally_managed: Bool? = nil, allow_direct_roles: Bool? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, url: URI? = nil) { + public init(can: StringDictionary? = nil, avatar_url: String? = nil, avatar_url_without_sizing: String? = nil, credentials_api3: [CredentialsApi3]? = nil, credentials_email: CredentialsEmail? = nil, credentials_embed: [CredentialsEmbed]? = nil, credentials_google: CredentialsGoogle? = nil, credentials_ldap: CredentialsLDAP? = nil, credentials_looker_openid: CredentialsLookerOpenid? = nil, credentials_oidc: CredentialsOIDC? = nil, credentials_saml: CredentialsSaml? = nil, credentials_totp: CredentialsTotp? = nil, display_name: String? = nil, email: String? = nil, embed_group_space_id: String? = nil, first_name: String? = nil, group_ids: [String]? = nil, home_folder_id: String? = nil, id: String? = nil, is_disabled: Bool? = nil, last_name: String? = nil, locale: String? = nil, looker_versions: [String]? = nil, models_dir_validated: Bool? = nil, personal_folder_id: String? = nil, presumed_looker_employee: Bool? = nil, role_ids: [String]? = nil, sessions: [Session]? = nil, ui_state: StringDictionary? = nil, verified_looker_employee: Bool? = nil, roles_externally_managed: Bool? = nil, allow_direct_roles: Bool? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, embed_group_folder_id: String? = nil, is_iam_admin: Bool? = nil, url: String? = nil) { self.can = can - self.avatar_url = avatar_url - self.avatar_url_without_sizing = avatar_url_without_sizing + self._avatar_url = avatar_url.map(AnyString.init) + self._avatar_url_without_sizing = avatar_url_without_sizing.map(AnyString.init) self.credentials_api3 = credentials_api3 self.credentials_email = credentials_email self.credentials_embed = credentials_embed @@ -17509,21 +21737,19 @@ public struct User: SDKModel { self.credentials_totp = credentials_totp self._display_name = display_name.map(AnyString.init) self._email = email.map(AnyString.init) - self._embed_group_space_id = embed_group_space_id.map(AnyInt.init) + self._embed_group_space_id = embed_group_space_id.map(AnyString.init) self._first_name = first_name.map(AnyString.init) - if let v = group_ids { _group_ids = v.map { AnyInt.init($0) } } else { _group_ids = nil } - self._home_space_id = home_space_id.map(AnyString.init) + if let v = group_ids { _group_ids = v.map { AnyString.init($0) } } else { _group_ids = nil } self._home_folder_id = home_folder_id.map(AnyString.init) - self._id = id.map(AnyInt.init) + self._id = id.map(AnyString.init) self.is_disabled = is_disabled self._last_name = last_name.map(AnyString.init) self._locale = locale.map(AnyString.init) if let v = looker_versions { _looker_versions = v.map { AnyString.init($0) } } else { _looker_versions = nil } self.models_dir_validated = models_dir_validated - self._personal_space_id = personal_space_id.map(AnyInt.init) - self._personal_folder_id = personal_folder_id.map(AnyInt.init) + self._personal_folder_id = personal_folder_id.map(AnyString.init) self.presumed_looker_employee = presumed_looker_employee - if let v = role_ids { _role_ids = v.map { AnyInt.init($0) } } else { _role_ids = nil } + if let v = role_ids { _role_ids = v.map { AnyString.init($0) } } else { _role_ids = nil } self.sessions = sessions self.ui_state = ui_state self.verified_looker_employee = verified_looker_employee @@ -17531,7 +21757,9 @@ public struct User: SDKModel { self.allow_direct_roles = allow_direct_roles self.allow_normal_group_membership = allow_normal_group_membership self.allow_roles_from_normal_groups = allow_roles_from_normal_groups - self.url = url + self._embed_group_folder_id = embed_group_folder_id.map(AnyString.init) + self.is_iam_admin = is_iam_admin + self._url = url.map(AnyString.init) } } @@ -17557,40 +21785,40 @@ public struct UserAttribute: SDKModel { */ public var can: StringDictionary? - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } - private var _name: AnyString? + private var _name: AnyString /** * Name of user attribute */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } } - private var _label: AnyString? + private var _label: AnyString /** * Human-friendly label for user attribute */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } + public var label: String { + get { _label.value } + set { _label = AnyString.init(newValue) } } - private var _type: AnyString? + private var _type: AnyString /** * Type of user attribute ("string", "number", "datetime", "yesno", "zipcode") */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var type: String { + get { _type.value } + set { _type = AnyString.init(newValue) } } private var _default_value: AnyString? @@ -17636,12 +21864,12 @@ public struct UserAttribute: SDKModel { set { _hidden_value_domain_whitelist = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, id: Int64? = nil, name: String? = nil, label: String? = nil, type: String? = nil, default_value: String? = nil, is_system: Bool? = nil, is_permanent: Bool? = nil, value_is_hidden: Bool? = nil, user_can_view: Bool? = nil, user_can_edit: Bool? = nil, hidden_value_domain_whitelist: String? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, name: String, label: String, type: String, default_value: String? = nil, is_system: Bool? = nil, is_permanent: Bool? = nil, value_is_hidden: Bool? = nil, user_can_view: Bool? = nil, user_can_edit: Bool? = nil, hidden_value_domain_whitelist: String? = nil) { self.can = can - self._id = id.map(AnyInt.init) - self._name = name.map(AnyString.init) - self._label = label.map(AnyString.init) - self._type = type.map(AnyString.init) + self._id = id.map(AnyString.init) + self._name = AnyString.init(name) + self._label = AnyString.init(label) + self._type = AnyString.init(type) self._default_value = default_value.map(AnyString.init) self.is_system = is_system self.is_permanent = is_permanent @@ -17651,6 +21879,10 @@ public struct UserAttribute: SDKModel { self._hidden_value_domain_whitelist = hidden_value_domain_whitelist.map(AnyString.init) } + public init(can: StringDictionary? = nil, id: String? = nil, _ name: String, _ label: String, _ type: String, default_value: String? = nil, is_system: Bool? = nil, is_permanent: Bool? = nil, value_is_hidden: Bool? = nil, user_can_view: Bool? = nil, user_can_edit: Bool? = nil, hidden_value_domain_whitelist: String? = nil) { + self.init(can: can, id: id, name: name, label: label, type: type, default_value: default_value, is_system: is_system, is_permanent: is_permanent, value_is_hidden: value_is_hidden, user_can_view: user_can_view, user_can_edit: user_can_edit, hidden_value_domain_whitelist: hidden_value_domain_whitelist) + } + } /** @@ -17687,31 +21919,31 @@ public struct UserAttributeGroupValue: SDKModel { */ public var can: StringDictionary? - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id of this group-attribute relation (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } - private var _group_id: AnyInt? + private var _group_id: AnyString? /** * Id of group (read-only) */ - public var group_id: Int64? { + public var group_id: String? { get { _group_id?.value } - set { _group_id = newValue.map(AnyInt.init) } + set { _group_id = newValue.map(AnyString.init) } } - private var _user_attribute_id: AnyInt? + private var _user_attribute_id: AnyString? /** * Id of user attribute (read-only) */ - public var user_attribute_id: Int64? { + public var user_attribute_id: String? { get { _user_attribute_id?.value } - set { _user_attribute_id = newValue.map(AnyInt.init) } + set { _user_attribute_id = newValue.map(AnyString.init) } } /** @@ -17737,11 +21969,11 @@ public struct UserAttributeGroupValue: SDKModel { set { _value = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, id: Int64? = nil, group_id: Int64? = nil, user_attribute_id: Int64? = nil, value_is_hidden: Bool? = nil, rank: Int64? = nil, value: String? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, group_id: String? = nil, user_attribute_id: String? = nil, value_is_hidden: Bool? = nil, rank: Int64? = nil, value: String? = nil) { self.can = can - self._id = id.map(AnyInt.init) - self._group_id = group_id.map(AnyInt.init) - self._user_attribute_id = user_attribute_id.map(AnyInt.init) + self._id = id.map(AnyString.init) + self._group_id = group_id.map(AnyString.init) + self._user_attribute_id = user_attribute_id.map(AnyString.init) self.value_is_hidden = value_is_hidden self._rank = rank.map(AnyInt.init) self._value = value.map(AnyString.init) @@ -17805,13 +22037,13 @@ public struct UserAttributeWithValue: SDKModel { set { _value = newValue.map(AnyString.init) } } - private var _user_id: AnyInt? + private var _user_id: AnyString? /** * Id of User (read-only) */ - public var user_id: Int64? { + public var user_id: String? { get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } + set { _user_id = newValue.map(AnyString.init) } } /** @@ -17824,13 +22056,13 @@ public struct UserAttributeWithValue: SDKModel { */ public var value_is_hidden: Bool? - private var _user_attribute_id: AnyInt? + private var _user_attribute_id: AnyString? /** * Id of User Attribute (read-only) */ - public var user_attribute_id: Int64? { + public var user_attribute_id: String? { get { _user_attribute_id?.value } - set { _user_attribute_id = newValue.map(AnyInt.init) } + set { _user_attribute_id = newValue.map(AnyString.init) } } private var _source: AnyString? @@ -17851,38 +22083,42 @@ public struct UserAttributeWithValue: SDKModel { set { _hidden_value_domain_whitelist = newValue.map(AnyString.init) } } - public init(can: StringDictionary? = nil, name: String? = nil, label: String? = nil, rank: Int64? = nil, value: String? = nil, user_id: Int64? = nil, user_can_edit: Bool? = nil, value_is_hidden: Bool? = nil, user_attribute_id: Int64? = nil, source: String? = nil, hidden_value_domain_whitelist: String? = nil) { + public init(can: StringDictionary? = nil, name: String? = nil, label: String? = nil, rank: Int64? = nil, value: String? = nil, user_id: String? = nil, user_can_edit: Bool? = nil, value_is_hidden: Bool? = nil, user_attribute_id: String? = nil, source: String? = nil, hidden_value_domain_whitelist: String? = nil) { self.can = can self._name = name.map(AnyString.init) self._label = label.map(AnyString.init) self._rank = rank.map(AnyInt.init) self._value = value.map(AnyString.init) - self._user_id = user_id.map(AnyInt.init) + self._user_id = user_id.map(AnyString.init) self.user_can_edit = user_can_edit self.value_is_hidden = value_is_hidden - self._user_attribute_id = user_attribute_id.map(AnyInt.init) + self._user_attribute_id = user_attribute_id.map(AnyString.init) self._source = source.map(AnyString.init) self._hidden_value_domain_whitelist = hidden_value_domain_whitelist.map(AnyString.init) } } -public struct UserIdOnly: SDKModel { +public struct UserEmailOnly: SDKModel { private enum CodingKeys : String, CodingKey { - case _id = "id" + case _email = "email" } - private var _id: AnyInt? + private var _email: AnyString /** - * Unique Id (read-only) + * Email Address */ - public var id: Int64? { - get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + public var email: String { + get { _email.value } + set { _email = AnyString.init(newValue) } + } + + public init(email: String) { + self._email = AnyString.init(email) } - public init(id: Int64? = nil) { - self._id = id.map(AnyInt.init) + public init(_ email: String) { + self.init(email: email) } } @@ -17933,13 +22169,13 @@ public struct UserLoginLockout: SDKModel { set { _ip = newValue.map(AnyString.init) } } - private var _user_id: AnyInt? + private var _user_id: AnyString? /** * User ID (read-only) */ - public var user_id: Int64? { + public var user_id: String? { get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } + set { _user_id = newValue.map(AnyString.init) } } private var _remote_id: AnyString? @@ -17983,12 +22219,12 @@ public struct UserLoginLockout: SDKModel { */ public var lockout_at: Date? - public init(can: StringDictionary? = nil, key: String? = nil, auth_type: String? = nil, ip: String? = nil, user_id: Int64? = nil, remote_id: String? = nil, full_name: String? = nil, email: String? = nil, fail_count: Int64? = nil, lockout_at: Date? = nil) { + public init(can: StringDictionary? = nil, key: String? = nil, auth_type: String? = nil, ip: String? = nil, user_id: String? = nil, remote_id: String? = nil, full_name: String? = nil, email: String? = nil, fail_count: Int64? = nil, lockout_at: Date? = nil) { self.can = can self._key = key.map(AnyString.init) self._auth_type = auth_type.map(AnyString.init) self._ip = ip.map(AnyString.init) - self._user_id = user_id.map(AnyInt.init) + self._user_id = user_id.map(AnyString.init) self._remote_id = remote_id.map(AnyString.init) self._full_name = full_name.map(AnyString.init) self._email = email.map(AnyString.init) @@ -18006,21 +22242,21 @@ public struct UserPublic: SDKModel { case _first_name = "first_name" case _last_name = "last_name" case _display_name = "display_name" - case avatar_url - case url + case _avatar_url = "avatar_url" + case _url = "url" } /** * Operations the current user is able to perform on this object (read-only) */ public var can: StringDictionary? - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _first_name: AnyString? @@ -18050,24 +22286,32 @@ public struct UserPublic: SDKModel { set { _display_name = newValue.map(AnyString.init) } } + private var _avatar_url: AnyString? /** * URL for the avatar image (may be generic) (read-only) */ - public var avatar_url: URI? + public var avatar_url: String? { + get { _avatar_url?.value } + set { _avatar_url = newValue.map(AnyString.init) } + } + private var _url: AnyString? /** * Link to get this item (read-only) */ - public var url: URI? + public var url: String? { + get { _url?.value } + set { _url = newValue.map(AnyString.init) } + } - public init(can: StringDictionary? = nil, id: Int64? = nil, first_name: String? = nil, last_name: String? = nil, display_name: String? = nil, avatar_url: URI? = nil, url: URI? = nil) { + public init(can: StringDictionary? = nil, id: String? = nil, first_name: String? = nil, last_name: String? = nil, display_name: String? = nil, avatar_url: String? = nil, url: String? = nil) { self.can = can - self._id = id.map(AnyInt.init) + self._id = id.map(AnyString.init) self._first_name = first_name.map(AnyString.init) self._last_name = last_name.map(AnyString.init) self._display_name = display_name.map(AnyString.init) - self.avatar_url = avatar_url - self.url = url + self._avatar_url = avatar_url.map(AnyString.init) + self._url = url.map(AnyString.init) } } @@ -18077,7 +22321,7 @@ public struct ValidationError: SDKModel { private enum CodingKeys : String, CodingKey { case _message = "message" case errors - case documentation_url + case _documentation_url = "documentation_url" } private var _message: AnyString /** @@ -18093,18 +22337,22 @@ public struct ValidationError: SDKModel { */ public var errors: [ValidationErrorDetail]? + private var _documentation_url: AnyString /** * Documentation link (read-only) */ - public var documentation_url: URI + public var documentation_url: String { + get { _documentation_url.value } + set { _documentation_url = AnyString.init(newValue) } + } - public init(message: String, errors: [ValidationErrorDetail]? = nil, documentation_url: URI) { + public init(message: String, errors: [ValidationErrorDetail]? = nil, documentation_url: String) { self._message = AnyString.init(message) self.errors = errors - self.documentation_url = documentation_url + self._documentation_url = AnyString.init(documentation_url) } - public init(_ message: String, errors: [ValidationErrorDetail]? = nil, _ documentation_url: URI) { + public init(_ message: String, errors: [ValidationErrorDetail]? = nil, _ documentation_url: String) { self.init(message: message, errors: errors, documentation_url: documentation_url) } @@ -18116,7 +22364,7 @@ public struct ValidationErrorDetail: SDKModel { case _field = "field" case _code = "code" case _message = "message" - case documentation_url + case _documentation_url = "documentation_url" } private var _field: AnyString? /** @@ -18145,19 +22393,23 @@ public struct ValidationErrorDetail: SDKModel { set { _message = newValue.map(AnyString.init) } } + private var _documentation_url: AnyString /** * Documentation link (read-only) */ - public var documentation_url: URI + public var documentation_url: String { + get { _documentation_url.value } + set { _documentation_url = AnyString.init(newValue) } + } - public init(field: String? = nil, code: String? = nil, message: String? = nil, documentation_url: URI) { + public init(field: String? = nil, code: String? = nil, message: String? = nil, documentation_url: String) { self._field = field.map(AnyString.init) self._code = code.map(AnyString.init) self._message = message.map(AnyString.init) - self.documentation_url = documentation_url + self._documentation_url = AnyString.init(documentation_url) } - public init(field: String? = nil, code: String? = nil, message: String? = nil, _ documentation_url: URI) { + public init(field: String? = nil, code: String? = nil, message: String? = nil, _ documentation_url: String) { self.init(field: field, code: code, message: message, documentation_url: documentation_url) } @@ -18238,13 +22490,13 @@ public struct WhitelabelConfiguration: SDKModel { case alerts_links case folders_mentions } - private var _id: AnyInt? + private var _id: AnyString? /** * Unique Id (read-only) */ - public var id: Int64? { + public var id: String? { get { _id?.value } - set { _id = newValue.map(AnyInt.init) } + set { _id = newValue.map(AnyString.init) } } private var _logo_file: AnyString? @@ -18342,8 +22594,8 @@ public struct WhitelabelConfiguration: SDKModel { */ public var folders_mentions: Bool? - public init(id: Int64? = nil, logo_file: String? = nil, logo_url: String? = nil, favicon_file: String? = nil, favicon_url: String? = nil, default_title: String? = nil, show_help_menu: Bool? = nil, show_docs: Bool? = nil, show_email_sub_options: Bool? = nil, allow_looker_mentions: Bool? = nil, allow_looker_links: Bool? = nil, custom_welcome_email_advanced: Bool? = nil, setup_mentions: Bool? = nil, alerts_logo: Bool? = nil, alerts_links: Bool? = nil, folders_mentions: Bool? = nil) { - self._id = id.map(AnyInt.init) + public init(id: String? = nil, logo_file: String? = nil, logo_url: String? = nil, favicon_file: String? = nil, favicon_url: String? = nil, default_title: String? = nil, show_help_menu: Bool? = nil, show_docs: Bool? = nil, show_email_sub_options: Bool? = nil, allow_looker_mentions: Bool? = nil, allow_looker_links: Bool? = nil, custom_welcome_email_advanced: Bool? = nil, setup_mentions: Bool? = nil, alerts_logo: Bool? = nil, alerts_links: Bool? = nil, folders_mentions: Bool? = nil) { + self._id = id.map(AnyString.init) self._logo_file = logo_file.map(AnyString.init) self._logo_url = logo_url.map(AnyString.init) self._favicon_file = favicon_file.map(AnyString.init) @@ -18371,28 +22623,241 @@ public struct Workspace: SDKModel { case projects } /** - * Operations the current user is able to perform on this object (read-only) + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _id: AnyString? + /** + * The unique id of this user workspace. Predefined workspace ids include "production" and "dev" (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + /** + * The local state of each project in the workspace (read-only) + */ + public var projects: [Project]? + + public init(can: StringDictionary? = nil, id: String? = nil, projects: [Project]? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self.projects = projects + } + +} + +/** + * Dynamic writeable type for Alert removes: + * followed, followable, id, investigative_content_title, owner_display_name + */ +public struct WriteAlert: SDKModel { + + private enum CodingKeys : String, CodingKey { + case applied_dashboard_filters + case comparison_type + case _cron = "cron" + case _custom_url_base = "custom_url_base" + case _custom_url_params = "custom_url_params" + case _custom_url_label = "custom_url_label" + case show_custom_url + case _custom_title = "custom_title" + case _dashboard_element_id = "dashboard_element_id" + case _description = "description" + case destinations + case field + case is_disabled + case _disabled_reason = "disabled_reason" + case is_public + case investigative_content_type + case _investigative_content_id = "investigative_content_id" + case _lookml_dashboard_id = "lookml_dashboard_id" + case _lookml_link_id = "lookml_link_id" + case _owner_id = "owner_id" + case threshold + case time_series_condition_state + } + /** + * Filters coming from the dashboard that are applied. Example `[{ "filter_title": "Name", "field_name": "distribution_centers.name", "filter_value": "Los Angeles CA" }]` + */ + public var applied_dashboard_filters: [AlertAppliedDashboardFilter]? + + /** + * 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://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". + */ + public var comparison_type: ComparisonType + + private var _cron: AnyString + /** + * Vixie-Style crontab specification when to run. At minumum, it has to be longer than 15 minute intervals + */ + public var cron: String { + get { _cron.value } + set { _cron = AnyString.init(newValue) } + } + + private var _custom_url_base: AnyString? + /** + * Domain for the custom url selected by the alert creator from the admin defined domain allowlist + */ + public var custom_url_base: String? { + get { _custom_url_base?.value } + set { _custom_url_base = newValue.map(AnyString.init) } + } + + private var _custom_url_params: AnyString? + /** + * Parameters and path for the custom url defined by the alert creator + */ + public var custom_url_params: String? { + get { _custom_url_params?.value } + set { _custom_url_params = newValue.map(AnyString.init) } + } + + private var _custom_url_label: AnyString? + /** + * Label for the custom url defined by the alert creator + */ + public var custom_url_label: String? { + get { _custom_url_label?.value } + set { _custom_url_label = newValue.map(AnyString.init) } + } + + /** + * Boolean to determine if the custom url should be used + */ + public var show_custom_url: Bool? + + private var _custom_title: AnyString? + /** + * An optional, user-defined title for the alert + */ + public var custom_title: String? { + get { _custom_title?.value } + set { _custom_title = newValue.map(AnyString.init) } + } + + private var _dashboard_element_id: AnyString? + /** + * ID of the dashboard element associated with the alert. Refer to [dashboard_element()](#!/Dashboard/DashboardElement) + */ + public var dashboard_element_id: String? { + get { _dashboard_element_id?.value } + set { _dashboard_element_id = newValue.map(AnyString.init) } + } + + private var _description: AnyString? + /** + * An optional description for the alert. This supplements the title + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } + + /** + * Array of destinations to send alerts to. Must be the same type of destination. Example `[{ "destination_type": "EMAIL", "email_address": "test@test.com" }]` + */ + public var destinations: [AlertDestination] + + public var field: AlertField + + /** + * Whether or not the alert is disabled + */ + public var is_disabled: Bool? + + private var _disabled_reason: AnyString? + /** + * Reason for disabling alert + */ + public var disabled_reason: String? { + get { _disabled_reason?.value } + set { _disabled_reason = newValue.map(AnyString.init) } + } + + /** + * Whether or not the alert is public + */ + public var is_public: Bool? + + /** + * The type of the investigative content Valid values are: "dashboard". + */ + public var investigative_content_type: InvestigativeContentType? + + private var _investigative_content_id: AnyString? + /** + * The ID of the investigative content. For dashboards, this will be the dashboard ID + */ + public var investigative_content_id: String? { + get { _investigative_content_id?.value } + set { _investigative_content_id = newValue.map(AnyString.init) } + } + + private var _lookml_dashboard_id: AnyString? + /** + * ID of the LookML dashboard associated with the alert + */ + public var lookml_dashboard_id: String? { + get { _lookml_dashboard_id?.value } + set { _lookml_dashboard_id = newValue.map(AnyString.init) } + } + + private var _lookml_link_id: AnyString? + /** + * ID of the LookML dashboard element associated with the alert */ - public var can: StringDictionary? + public var lookml_link_id: String? { + get { _lookml_link_id?.value } + set { _lookml_link_id = newValue.map(AnyString.init) } + } - private var _id: AnyString? + private var _owner_id: AnyString /** - * The unique id of this user workspace. Predefined workspace ids include "production" and "dev" (read-only) + * User id of alert owner */ - public var id: String? { - get { _id?.value } - set { _id = newValue.map(AnyString.init) } + public var owner_id: String { + get { _owner_id.value } + set { _owner_id = AnyString.init(newValue) } } /** - * The local state of each project in the workspace (read-only) + * Value of the alert threshold */ - public var projects: [Project]? + public var threshold: Double - public init(can: StringDictionary? = nil, id: String? = nil, projects: [Project]? = nil) { - self.can = can - self._id = id.map(AnyString.init) - self.projects = projects + public var time_series_condition_state: AlertConditionState? + + public init(applied_dashboard_filters: [AlertAppliedDashboardFilter]? = nil, comparison_type: ComparisonType, cron: String, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, custom_title: String? = nil, dashboard_element_id: String? = nil, description: String? = nil, destinations: [AlertDestination], field: AlertField, is_disabled: Bool? = nil, disabled_reason: String? = nil, is_public: Bool? = nil, investigative_content_type: InvestigativeContentType? = nil, investigative_content_id: String? = nil, lookml_dashboard_id: String? = nil, lookml_link_id: String? = nil, owner_id: String, threshold: Double, time_series_condition_state: AlertConditionState? = nil) { + self.applied_dashboard_filters = applied_dashboard_filters + self.comparison_type = comparison_type + self._cron = AnyString.init(cron) + 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) + self.show_custom_url = show_custom_url + self._custom_title = custom_title.map(AnyString.init) + self._dashboard_element_id = dashboard_element_id.map(AnyString.init) + self._description = description.map(AnyString.init) + self.destinations = destinations + self.field = field + self.is_disabled = is_disabled + self._disabled_reason = disabled_reason.map(AnyString.init) + self.is_public = is_public + self.investigative_content_type = investigative_content_type + self._investigative_content_id = investigative_content_id.map(AnyString.init) + self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) + self._lookml_link_id = lookml_link_id.map(AnyString.init) + self._owner_id = AnyString.init(owner_id) + self.threshold = threshold + self.time_series_condition_state = time_series_condition_state + } + + public init(applied_dashboard_filters: [AlertAppliedDashboardFilter]? = nil, _ comparison_type: ComparisonType, _ cron: String, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, custom_title: String? = nil, dashboard_element_id: String? = nil, description: String? = nil, _ destinations: [AlertDestination], _ field: AlertField, is_disabled: Bool? = nil, disabled_reason: String? = nil, is_public: Bool? = nil, investigative_content_type: InvestigativeContentType? = nil, investigative_content_id: String? = nil, lookml_dashboard_id: String? = nil, lookml_link_id: String? = nil, _ owner_id: String, _ threshold: Double, time_series_condition_state: AlertConditionState? = nil) { + self.init(applied_dashboard_filters: applied_dashboard_filters, comparison_type: comparison_type, cron: cron, custom_url_base: custom_url_base, custom_url_params: custom_url_params, custom_url_label: custom_url_label, show_custom_url: show_custom_url, custom_title: custom_title, dashboard_element_id: dashboard_element_id, description: description, destinations: destinations, field: field, is_disabled: is_disabled, disabled_reason: disabled_reason, is_public: is_public, investigative_content_type: investigative_content_type, investigative_content_id: investigative_content_id, lookml_dashboard_id: lookml_dashboard_id, lookml_link_id: lookml_link_id, owner_id: owner_id, threshold: threshold, time_series_condition_state: time_series_condition_state) } } @@ -18470,21 +22935,278 @@ public struct WriteBackupConfiguration: SDKModel { set { _custom_s3_key = newValue.map(AnyString.init) } } - private var _custom_s3_secret: AnyString? + private var _custom_s3_secret: AnyString? + /** + * (Write-Only) AWS S3 secret used for custom-s3 backups + */ + public var custom_s3_secret: String? { + get { _custom_s3_secret?.value } + set { _custom_s3_secret = newValue.map(AnyString.init) } + } + + public init(type: String? = nil, custom_s3_bucket: String? = nil, custom_s3_bucket_region: String? = nil, custom_s3_key: String? = nil, custom_s3_secret: String? = nil) { + self._type = type.map(AnyString.init) + self._custom_s3_bucket = custom_s3_bucket.map(AnyString.init) + self._custom_s3_bucket_region = custom_s3_bucket_region.map(AnyString.init) + self._custom_s3_key = custom_s3_key.map(AnyString.init) + self._custom_s3_secret = custom_s3_secret.map(AnyString.init) + } + +} + +/** + * Dynamic writeable type for Board removes: + * can, content_metadata_id, created_at, board_sections, id, updated_at, user_id, primary_homepage + */ +public struct WriteBoard: SDKModel { + + private enum CodingKeys : String, CodingKey { + case deleted_at + case _description = "description" + case _section_order = "section_order" + case _title = "title" + } + /** + * Date of board deletion + */ + public var deleted_at: Date? + + private var _description: AnyString? + /** + * Description of the board + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } + + private var _section_order: [AnyString]? + /** + * ids of the board sections in the order they should be displayed + */ + public var section_order: [String]? { + get { if let v = _section_order { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _section_order = v.map { AnyString.init($0) } } else { _section_order = nil } } + } + + private var _title: AnyString? + /** + * Title of the board + */ + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } + } + + public init(deleted_at: Date? = nil, description: String? = nil, section_order: [String]? = nil, title: String? = nil) { + self.deleted_at = deleted_at + self._description = description.map(AnyString.init) + if let v = section_order { _section_order = v.map { AnyString.init($0) } } else { _section_order = nil } + self._title = title.map(AnyString.init) + } + +} + +/** + * 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 + */ +public struct WriteBoardItem: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _custom_description = "custom_description" + case _custom_title = "custom_title" + case _custom_url = "custom_url" + case _dashboard_id = "dashboard_id" + case _board_section_id = "board_section_id" + case _look_id = "look_id" + case _lookml_dashboard_id = "lookml_dashboard_id" + case _order = "order" + case use_custom_description + case use_custom_title + case use_custom_url + case _custom_image_data_base64 = "custom_image_data_base64" + case use_custom_image + } + private var _custom_description: AnyString? + /** + * Custom description entered by the user, if present + */ + public var custom_description: String? { + get { _custom_description?.value } + set { _custom_description = newValue.map(AnyString.init) } + } + + private var _custom_title: AnyString? + /** + * Custom title entered by the user, if present + */ + public var custom_title: String? { + get { _custom_title?.value } + set { _custom_title = newValue.map(AnyString.init) } + } + + private var _custom_url: AnyString? + /** + * Custom url entered by the user, if present + */ + public var custom_url: String? { + get { _custom_url?.value } + set { _custom_url = newValue.map(AnyString.init) } + } + + private var _dashboard_id: AnyString? + /** + * Dashboard to base this item on + */ + public var dashboard_id: String? { + get { _dashboard_id?.value } + set { _dashboard_id = newValue.map(AnyString.init) } + } + + private var _board_section_id: AnyString? + /** + * Associated Board Section + */ + public var board_section_id: String? { + get { _board_section_id?.value } + set { _board_section_id = newValue.map(AnyString.init) } + } + + private var _look_id: AnyString? + /** + * Look to base this item on + */ + public var look_id: String? { + get { _look_id?.value } + set { _look_id = newValue.map(AnyString.init) } + } + + private var _lookml_dashboard_id: AnyString? + /** + * LookML Dashboard to base this item on + */ + public var lookml_dashboard_id: String? { + get { _lookml_dashboard_id?.value } + set { _lookml_dashboard_id = newValue.map(AnyString.init) } + } + + private var _order: AnyInt? + /** + * An arbitrary integer representing the sort order within the section + */ + public var order: Int64? { + get { _order?.value } + set { _order = newValue.map(AnyInt.init) } + } + + /** + * Whether the custom description should be used instead of the content description, if the item is associated with content + */ + public var use_custom_description: Bool? + + /** + * Whether the custom title should be used instead of the content title, if the item is associated with content + */ + public var use_custom_title: Bool? + + /** + * Whether the custom url should be used instead of the content url, if the item is associated with content + */ + public var use_custom_url: Bool? + + private var _custom_image_data_base64: AnyString? + /** + * (Write-Only) base64 encoded image data + */ + public var custom_image_data_base64: String? { + get { _custom_image_data_base64?.value } + set { _custom_image_data_base64 = newValue.map(AnyString.init) } + } + + /** + * Whether the custom image should be used instead of the content image, if the item is associated with content + */ + public var use_custom_image: Bool? + + public init(custom_description: String? = nil, custom_title: String? = nil, custom_url: String? = nil, dashboard_id: String? = nil, board_section_id: String? = nil, look_id: String? = nil, lookml_dashboard_id: String? = nil, order: Int64? = nil, use_custom_description: Bool? = nil, use_custom_title: Bool? = nil, use_custom_url: Bool? = nil, custom_image_data_base64: String? = nil, use_custom_image: Bool? = nil) { + self._custom_description = custom_description.map(AnyString.init) + self._custom_title = custom_title.map(AnyString.init) + self._custom_url = custom_url.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) + self._board_section_id = board_section_id.map(AnyString.init) + self._look_id = look_id.map(AnyString.init) + self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) + self._order = order.map(AnyInt.init) + self.use_custom_description = use_custom_description + self.use_custom_title = use_custom_title + self.use_custom_url = use_custom_url + self._custom_image_data_base64 = custom_image_data_base64.map(AnyString.init) + self.use_custom_image = use_custom_image + } + +} + +/** + * Dynamic writeable type for BoardSection removes: + * can, created_at, board_items, id, visible_item_order, updated_at + */ +public struct WriteBoardSection: SDKModel { + + private enum CodingKeys : String, CodingKey { + case deleted_at + case _description = "description" + case _board_id = "board_id" + case _item_order = "item_order" + case _title = "title" + } + /** + * Time at which this section was deleted. + */ + public var deleted_at: Date? + + private var _description: AnyString? + /** + * Description of the content found in this section. + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } + + private var _board_id: AnyString? + /** + * Id reference to parent board + */ + public var board_id: String? { + get { _board_id?.value } + set { _board_id = newValue.map(AnyString.init) } + } + + private var _item_order: [AnyString]? + /** + * ids of the board items in the order they should be displayed + */ + public var item_order: [String]? { + get { if let v = _item_order { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _item_order = v.map { AnyString.init($0) } } else { _item_order = nil } } + } + + private var _title: AnyString? /** - * (Write-Only) AWS S3 secret used for custom-s3 backups + * Name of row */ - public var custom_s3_secret: String? { - get { _custom_s3_secret?.value } - set { _custom_s3_secret = newValue.map(AnyString.init) } + public var title: String? { + get { _title?.value } + set { _title = newValue.map(AnyString.init) } } - public init(type: String? = nil, custom_s3_bucket: String? = nil, custom_s3_bucket_region: String? = nil, custom_s3_key: String? = nil, custom_s3_secret: String? = nil) { - self._type = type.map(AnyString.init) - self._custom_s3_bucket = custom_s3_bucket.map(AnyString.init) - self._custom_s3_bucket_region = custom_s3_bucket_region.map(AnyString.init) - self._custom_s3_key = custom_s3_key.map(AnyString.init) - self._custom_s3_secret = custom_s3_secret.map(AnyString.init) + public init(deleted_at: Date? = nil, description: String? = nil, board_id: String? = nil, item_order: [String]? = nil, title: String? = nil) { + self.deleted_at = deleted_at + self._description = description.map(AnyString.init) + self._board_id = board_id.map(AnyString.init) + if let v = item_order { _item_order = v.map { AnyString.init($0) } } else { _item_order = nil } + self._title = title.map(AnyString.init) } } @@ -18536,42 +23258,50 @@ public struct WriteColorCollection: SDKModel { /** * Dynamic writeable type for ContentFavorite removes: - * id, look_id, dashboard_id, look + * id, look_id, dashboard_id, board_id */ public struct WriteContentFavorite: SDKModel { private enum CodingKeys : String, CodingKey { case _user_id = "user_id" case _content_metadata_id = "content_metadata_id" + case look case dashboard } - private var _user_id: AnyInt? + private var _user_id: AnyString? /** * User Id which owns this ContentFavorite */ - public var user_id: Int64? { + public var user_id: String? { get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } + set { _user_id = newValue.map(AnyString.init) } } - private var _content_metadata_id: AnyInt? + private var _content_metadata_id: AnyString? /** * Content Metadata Id associated with this ContentFavorite */ - public var content_metadata_id: Int64? { + public var content_metadata_id: String? { get { _content_metadata_id?.value } - set { _content_metadata_id = newValue.map(AnyInt.init) } + set { _content_metadata_id = newValue.map(AnyString.init) } } + /** + * Dynamic writeable type for LookBasic removes: + * can, content_metadata_id, id, title + */ + public var look: WriteLookBasic? + /** * 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 */ public var dashboard: WriteDashboardBase? - public init(user_id: Int64? = nil, content_metadata_id: Int64? = nil, dashboard: WriteDashboardBase? = nil) { - self._user_id = user_id.map(AnyInt.init) - self._content_metadata_id = content_metadata_id.map(AnyInt.init) + public init(user_id: String? = nil, content_metadata_id: String? = nil, look: WriteLookBasic? = nil, dashboard: WriteDashboardBase? = nil) { + self._user_id = user_id.map(AnyString.init) + self._content_metadata_id = content_metadata_id.map(AnyString.init) + self.look = look self.dashboard = dashboard } @@ -18579,7 +23309,7 @@ public struct WriteContentFavorite: SDKModel { /** * Dynamic writeable type for ContentMeta removes: - * can, id, name, parent_id, dashboard_id, look_id, folder_id, content_type, inheriting_id, slug, space_id + * can, id, name, parent_id, dashboard_id, look_id, folder_id, content_type, inheriting_id, slug */ public struct WriteContentMeta: SDKModel { /** @@ -18755,13 +23485,13 @@ public struct WriteCreateQueryTask: SDKModel { case _look_id = "look_id" case _dashboard_id = "dashboard_id" } - private var _query_id: AnyInt + private var _query_id: AnyString /** * Id of query to run */ - public var query_id: Int64 { + public var query_id: String { get { _query_id.value } - set { _query_id = AnyInt.init(newValue) } + set { _query_id = AnyString.init(newValue) } } /** @@ -18783,13 +23513,13 @@ public struct WriteCreateQueryTask: SDKModel { */ public var deferred: Bool? - private var _look_id: AnyInt? + private var _look_id: AnyString? /** * Id of look associated with query. */ - public var look_id: Int64? { + public var look_id: String? { get { _look_id?.value } - set { _look_id = newValue.map(AnyInt.init) } + set { _look_id = newValue.map(AnyString.init) } } private var _dashboard_id: AnyString? @@ -18801,16 +23531,16 @@ public struct WriteCreateQueryTask: SDKModel { set { _dashboard_id = newValue.map(AnyString.init) } } - public init(query_id: Int64, result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: Int64? = nil, dashboard_id: String? = nil) { - self._query_id = AnyInt.init(query_id) + public init(query_id: String, result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: String? = nil, dashboard_id: String? = nil) { + self._query_id = AnyString.init(query_id) self.result_format = result_format self._source = source.map(AnyString.init) self.deferred = deferred - self._look_id = look_id.map(AnyInt.init) + self._look_id = look_id.map(AnyString.init) self._dashboard_id = dashboard_id.map(AnyString.init) } - public init(_ query_id: Int64, _ result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: Int64? = nil, dashboard_id: String? = nil) { + public init(_ query_id: String, _ result_format: ResultFormat, source: String? = nil, deferred: Bool? = nil, look_id: String? = nil, dashboard_id: String? = nil) { self.init(query_id: query_id, result_format: result_format, source: source, deferred: deferred, look_id: look_id, dashboard_id: dashboard_id) } @@ -18847,62 +23577,9 @@ public struct WriteCredentialsEmail: SDKModel { } -/** - * Dynamic writeable type for CustomWelcomeEmail removes: - * can - */ -public struct WriteCustomWelcomeEmail: SDKModel { - - private enum CodingKeys : String, CodingKey { - case enabled - case _content = "content" - case _subject = "subject" - case _header = "header" - } - /** - * If true, custom email content will replace the default body of welcome emails - */ - public var enabled: Bool? - - private var _content: AnyString? - /** - * The HTML to use as custom content for welcome emails. Script elements and other potentially dangerous markup will be removed. - */ - public var content: String? { - get { _content?.value } - set { _content = newValue.map(AnyString.init) } - } - - private var _subject: AnyString? - /** - * The text to appear in the email subject line. Only available with a whitelabel license and whitelabel_configuration.advanced_custom_welcome_email enabled. - */ - public var subject: String? { - get { _subject?.value } - set { _subject = newValue.map(AnyString.init) } - } - - private var _header: AnyString? - /** - * 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. - */ - public var header: String? { - get { _header?.value } - set { _header = newValue.map(AnyString.init) } - } - - public init(enabled: Bool? = nil, content: String? = nil, subject: String? = nil, header: String? = nil) { - self.enabled = enabled - self._content = content.map(AnyString.init) - self._subject = subject.map(AnyString.init) - self._header = header.map(AnyString.init) - } - -} - /** * Dynamic writeable type for Dashboard removes: - * can, content_favorite_id, content_metadata_id, id, model, readonly, refresh_interval_to_i, user_id, 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 + * can, content_favorite_id, content_metadata_id, id, model, readonly, refresh_interval_to_i, user_id, 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, url */ public struct WriteDashboard: SDKModel { @@ -18915,7 +23592,6 @@ public struct WriteDashboard: SDKModel { case _title = "title" case _slug = "slug" case _preferred_viewer = "preferred_viewer" - case space case alert_sync_with_dashboard_filter_enabled case _background_color = "background_color" case crossfilter_enabled @@ -18927,7 +23603,6 @@ public struct WriteDashboard: SDKModel { case _lookml_link_id = "lookml_link_id" case show_filters_bar case show_title - case _space_id = "space_id" case _folder_id = "folder_id" case _text_tile_text_color = "text_tile_text_color" case _tile_background_color = "tile_background_color" @@ -19000,12 +23675,6 @@ public struct WriteDashboard: SDKModel { set { _preferred_viewer = newValue.map(AnyString.init) } } - /** - * Dynamic writeable type for SpaceBase 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 - */ - public var space: WriteSpaceBase? - /** * Enables alerts to keep in sync with dashboard filter changes */ @@ -19073,15 +23742,6 @@ public struct WriteDashboard: SDKModel { */ public var show_title: Bool? - private var _space_id: AnyString? - /** - * Id of Space - */ - public var space_id: String? { - get { _space_id?.value } - set { _space_id = newValue.map(AnyString.init) } - } - private var _folder_id: AnyString? /** * Id of folder @@ -19129,7 +23789,7 @@ public struct WriteDashboard: SDKModel { public var appearance: DashboardAppearance? - public init(description: String? = nil, hidden: Bool? = nil, query_timezone: String? = nil, refresh_interval: String? = nil, folder: WriteFolderBase? = nil, title: String? = nil, slug: String? = nil, preferred_viewer: String? = nil, space: WriteSpaceBase? = nil, alert_sync_with_dashboard_filter_enabled: Bool? = nil, background_color: String? = nil, crossfilter_enabled: Bool? = nil, deleted: Bool? = nil, enable_viz_full_screen: Bool? = nil, filters_bar_collapsed: Bool? = nil, filters_location_top: Bool? = nil, load_configuration: String? = nil, lookml_link_id: String? = nil, show_filters_bar: Bool? = nil, show_title: Bool? = nil, space_id: String? = nil, folder_id: String? = nil, text_tile_text_color: String? = nil, tile_background_color: String? = nil, tile_text_color: String? = nil, title_color: String? = nil, appearance: DashboardAppearance? = nil) { + public init(description: String? = nil, hidden: Bool? = nil, query_timezone: String? = nil, refresh_interval: String? = nil, folder: WriteFolderBase? = nil, title: String? = nil, slug: String? = nil, preferred_viewer: String? = nil, alert_sync_with_dashboard_filter_enabled: Bool? = nil, background_color: String? = nil, crossfilter_enabled: Bool? = nil, deleted: Bool? = nil, enable_viz_full_screen: Bool? = nil, filters_bar_collapsed: Bool? = nil, filters_location_top: Bool? = nil, load_configuration: String? = nil, lookml_link_id: String? = nil, show_filters_bar: Bool? = nil, show_title: Bool? = nil, folder_id: String? = nil, text_tile_text_color: String? = nil, tile_background_color: String? = nil, tile_text_color: String? = nil, title_color: String? = nil, appearance: DashboardAppearance? = nil) { self._description = description.map(AnyString.init) self.hidden = hidden self._query_timezone = query_timezone.map(AnyString.init) @@ -19138,7 +23798,6 @@ public struct WriteDashboard: SDKModel { self._title = title.map(AnyString.init) self._slug = slug.map(AnyString.init) self._preferred_viewer = preferred_viewer.map(AnyString.init) - self.space = space self.alert_sync_with_dashboard_filter_enabled = alert_sync_with_dashboard_filter_enabled self._background_color = background_color.map(AnyString.init) self.crossfilter_enabled = crossfilter_enabled @@ -19150,7 +23809,6 @@ public struct WriteDashboard: SDKModel { self._lookml_link_id = lookml_link_id.map(AnyString.init) self.show_filters_bar = show_filters_bar self.show_title = show_title - self._space_id = space_id.map(AnyString.init) self._folder_id = folder_id.map(AnyString.init) self._text_tile_text_color = text_tile_text_color.map(AnyString.init) self._tile_background_color = tile_background_color.map(AnyString.init) @@ -19172,15 +23830,8 @@ public struct WriteDashboardBase: SDKModel { */ public var folder: WriteFolderBase? - /** - * Dynamic writeable type for SpaceBase 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 - */ - public var space: WriteSpaceBase? - - public init(folder: WriteFolderBase? = nil, space: WriteSpaceBase? = nil) { + public init(folder: WriteFolderBase? = nil) { self.folder = folder - self.space = space } } @@ -19211,6 +23862,7 @@ public struct WriteDashboardElement: SDKModel { case _title_text = "title_text" case _type = "type" case _rich_content_json = "rich_content_json" + case _extension_id = "extension_id" } private var _body_text: AnyString? /** @@ -19232,7 +23884,7 @@ public struct WriteDashboardElement: SDKModel { /** * 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, view_count, user, url + * 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, view_count, url */ public var look: WriteLookWithQuery? @@ -19287,13 +23939,13 @@ public struct WriteDashboardElement: SDKModel { */ public var query: WriteQuery? - private var _query_id: AnyInt? + private var _query_id: AnyString? /** * Id Of Query */ - public var query_id: Int64? { + public var query_id: String? { get { _query_id?.value } - set { _query_id = newValue.map(AnyInt.init) } + set { _query_id = newValue.map(AnyString.init) } } private var _refresh_interval: AnyString? @@ -19311,13 +23963,13 @@ public struct WriteDashboardElement: SDKModel { */ public var result_maker: WriteResultMakerWithIdVisConfigAndDynamicFields? - private var _result_maker_id: AnyInt? + private var _result_maker_id: AnyString? /** * ID of the ResultMakerLookup entry. */ - public var result_maker_id: Int64? { + public var result_maker_id: String? { get { _result_maker_id?.value } - set { _result_maker_id = newValue.map(AnyInt.init) } + set { _result_maker_id = newValue.map(AnyString.init) } } private var _subtitle_text: AnyString? @@ -19370,7 +24022,16 @@ public struct WriteDashboardElement: SDKModel { set { _rich_content_json = newValue.map(AnyString.init) } } - public init(body_text: String? = nil, dashboard_id: String? = nil, look: WriteLookWithQuery? = nil, look_id: String? = nil, merge_result_id: String? = nil, note_display: String? = nil, note_state: String? = nil, note_text: String? = nil, query: WriteQuery? = nil, query_id: Int64? = nil, refresh_interval: String? = nil, result_maker: WriteResultMakerWithIdVisConfigAndDynamicFields? = nil, result_maker_id: Int64? = nil, subtitle_text: String? = nil, title: String? = nil, title_hidden: Bool? = nil, title_text: String? = nil, type: String? = nil, rich_content_json: String? = nil) { + private var _extension_id: AnyString? + /** + * Extension ID + */ + public var extension_id: String? { + get { _extension_id?.value } + set { _extension_id = newValue.map(AnyString.init) } + } + + public init(body_text: String? = nil, dashboard_id: String? = nil, look: WriteLookWithQuery? = nil, look_id: String? = nil, merge_result_id: String? = nil, note_display: String? = nil, note_state: String? = nil, note_text: String? = nil, query: WriteQuery? = nil, query_id: String? = nil, refresh_interval: String? = nil, result_maker: WriteResultMakerWithIdVisConfigAndDynamicFields? = nil, result_maker_id: String? = nil, subtitle_text: String? = nil, title: String? = nil, title_hidden: Bool? = nil, title_text: String? = nil, type: String? = nil, rich_content_json: String? = nil, extension_id: String? = nil) { self._body_text = body_text.map(AnyString.init) self._dashboard_id = dashboard_id.map(AnyString.init) self.look = look @@ -19380,16 +24041,17 @@ public struct WriteDashboardElement: SDKModel { self._note_state = note_state.map(AnyString.init) self._note_text = note_text.map(AnyString.init) self.query = query - self._query_id = query_id.map(AnyInt.init) + self._query_id = query_id.map(AnyString.init) self._refresh_interval = refresh_interval.map(AnyString.init) self.result_maker = result_maker - self._result_maker_id = result_maker_id.map(AnyInt.init) + self._result_maker_id = result_maker_id.map(AnyString.init) self._subtitle_text = subtitle_text.map(AnyString.init) self._title = title.map(AnyString.init) self.title_hidden = title_hidden self._title_text = title_text.map(AnyString.init) self._type = type.map(AnyString.init) self._rich_content_json = rich_content_json.map(AnyString.init) + self._extension_id = extension_id.map(AnyString.init) } } @@ -19670,6 +24332,41 @@ public struct WriteDashboardLayoutComponent: SDKModel { } +/** + * Dynamic writeable type for DashboardLookml removes: + * dashboard_id + */ +public struct WriteDashboardLookml: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _folder_id = "folder_id" + case _lookml = "lookml" + } + private var _folder_id: AnyString? + /** + * (Write-Only) Id of the folder + */ + public var folder_id: String? { + get { _folder_id?.value } + set { _folder_id = newValue.map(AnyString.init) } + } + + private var _lookml: AnyString? + /** + * lookml of UDD + */ + public var lookml: String? { + get { _lookml?.value } + set { _lookml = newValue.map(AnyString.init) } + } + + public init(folder_id: String? = nil, lookml: String? = nil) { + self._folder_id = folder_id.map(AnyString.init) + self._lookml = lookml.map(AnyString.init) + } + +} + /** * Dynamic writeable type for Datagroup removes: * can, created_at, id, model_name, name, trigger_check_at, trigger_error, trigger_value @@ -19738,7 +24435,15 @@ public struct WriteDBConnection: SDKModel { case sql_writing_with_info_schema case _after_connect_statements = "after_connect_statements" case pdt_context_override + case _custom_local_port = "custom_local_port" + case _tunnel_id = "tunnel_id" case uses_tns + case _pdt_concurrency = "pdt_concurrency" + case disable_context_comment + case _oauth_application_id = "oauth_application_id" + case always_retry_failed_builds + case cost_estimate_enabled + case pdt_api_control_enabled } private var _name: AnyString? /** @@ -19951,12 +24656,68 @@ public struct WriteDBConnection: SDKModel { */ public var pdt_context_override: WriteDBConnectionOverride? + private var _custom_local_port: AnyInt? + /** + * 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. + */ + public var custom_local_port: Int64? { + get { _custom_local_port?.value } + set { _custom_local_port = newValue.map(AnyInt.init) } + } + + private var _tunnel_id: AnyString? + /** + * The Id of the ssh tunnel this connection uses + */ + public var tunnel_id: String? { + get { _tunnel_id?.value } + set { _tunnel_id = newValue.map(AnyString.init) } + } + /** * Enable Transparent Network Substrate (TNS) connections */ public var uses_tns: Bool? - public init(name: String? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, db_timezone: String? = nil, query_timezone: String? = nil, schema: String? = nil, max_connections: Int64? = nil, max_billing_gigabytes: String? = nil, ssl: Bool? = nil, verify_ssl: Bool? = nil, tmp_db_name: String? = nil, jdbc_additional_params: String? = nil, pool_timeout: Int64? = nil, dialect_name: String? = nil, user_db_credentials: Bool? = nil, user_attribute_fields: [String]? = nil, maintenance_cron: String? = nil, sql_runner_precache_tables: Bool? = nil, sql_writing_with_info_schema: Bool? = nil, after_connect_statements: String? = nil, pdt_context_override: WriteDBConnectionOverride? = nil, uses_tns: Bool? = nil) { + private var _pdt_concurrency: AnyInt? + /** + * Maximum number of threads to use to build PDTs in parallel + */ + public var pdt_concurrency: Int64? { + get { _pdt_concurrency?.value } + set { _pdt_concurrency = newValue.map(AnyInt.init) } + } + + /** + * When disable_context_comment is true comment will not be added to SQL + */ + public var disable_context_comment: Bool? + + private var _oauth_application_id: AnyString? + /** + * An External OAuth Application to use for authenticating to the database + */ + public var oauth_application_id: String? { + get { _oauth_application_id?.value } + set { _oauth_application_id = newValue.map(AnyString.init) } + } + + /** + * When true, error PDTs will be retried every regenerator cycle + */ + public var always_retry_failed_builds: Bool? + + /** + * When true, query cost estimate will be displayed in explore. + */ + public var cost_estimate_enabled: Bool? + + /** + * PDT builds on this connection can be kicked off and cancelled via API. + */ + public var pdt_api_control_enabled: Bool? + + public init(name: String? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, db_timezone: String? = nil, query_timezone: String? = nil, schema: String? = nil, max_connections: Int64? = nil, max_billing_gigabytes: String? = nil, ssl: Bool? = nil, verify_ssl: Bool? = nil, tmp_db_name: String? = nil, jdbc_additional_params: String? = nil, pool_timeout: Int64? = nil, dialect_name: String? = nil, user_db_credentials: Bool? = nil, user_attribute_fields: [String]? = nil, maintenance_cron: String? = nil, sql_runner_precache_tables: Bool? = nil, sql_writing_with_info_schema: Bool? = nil, after_connect_statements: String? = nil, pdt_context_override: WriteDBConnectionOverride? = nil, custom_local_port: Int64? = nil, tunnel_id: String? = nil, uses_tns: Bool? = nil, pdt_concurrency: Int64? = nil, disable_context_comment: Bool? = nil, oauth_application_id: String? = nil, always_retry_failed_builds: Bool? = nil, cost_estimate_enabled: Bool? = nil, pdt_api_control_enabled: Bool? = nil) { self._name = name.map(AnyString.init) self._host = host.map(AnyString.init) self._port = port.map(AnyString.init) @@ -19983,7 +24744,15 @@ public struct WriteDBConnection: SDKModel { self.sql_writing_with_info_schema = sql_writing_with_info_schema self._after_connect_statements = after_connect_statements.map(AnyString.init) self.pdt_context_override = pdt_context_override + self._custom_local_port = custom_local_port.map(AnyInt.init) + self._tunnel_id = tunnel_id.map(AnyString.init) self.uses_tns = uses_tns + self._pdt_concurrency = pdt_concurrency.map(AnyInt.init) + self.disable_context_comment = disable_context_comment + self._oauth_application_id = oauth_application_id.map(AnyString.init) + self.always_retry_failed_builds = always_retry_failed_builds + self.cost_estimate_enabled = cost_estimate_enabled + self.pdt_api_control_enabled = pdt_api_control_enabled } } @@ -20079,45 +24848,140 @@ public struct WriteDBConnectionOverride: SDKModel { set { _database = newValue.map(AnyString.init) } } - private var _schema: AnyString? + private var _schema: AnyString? + /** + * Schema name + */ + public var schema: String? { + get { _schema?.value } + set { _schema = newValue.map(AnyString.init) } + } + + private var _jdbc_additional_params: AnyString? + /** + * Additional params to add to JDBC connection string + */ + public var jdbc_additional_params: String? { + get { _jdbc_additional_params?.value } + set { _jdbc_additional_params = newValue.map(AnyString.init) } + } + + private var _after_connect_statements: AnyString? + /** + * SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature + */ + public var after_connect_statements: String? { + get { _after_connect_statements?.value } + set { _after_connect_statements = newValue.map(AnyString.init) } + } + + public init(context: String? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, schema: String? = nil, jdbc_additional_params: String? = nil, after_connect_statements: String? = nil) { + self._context = context.map(AnyString.init) + self._host = host.map(AnyString.init) + self._port = port.map(AnyString.init) + self._username = username.map(AnyString.init) + self._password = password.map(AnyString.init) + self._certificate = certificate.map(AnyString.init) + self._file_type = file_type.map(AnyString.init) + self._database = database.map(AnyString.init) + self._schema = schema.map(AnyString.init) + self._jdbc_additional_params = jdbc_additional_params.map(AnyString.init) + self._after_connect_statements = after_connect_statements.map(AnyString.init) + } + +} + +/** + * Dynamic writeable type for EmbedSecret removes: + * created_at, id, secret, user_id + */ +public struct WriteEmbedSecret: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _algorithm = "algorithm" + case enabled + case secret_type + } + private var _algorithm: AnyString? + /** + * Signing algorithm to use with this secret. Either `hmac/sha-256`(default) or `hmac/sha-1` + */ + public var algorithm: String? { + get { _algorithm?.value } + set { _algorithm = newValue.map(AnyString.init) } + } + + /** + * Is this secret currently enabled + */ + public var enabled: Bool? + + /** + * Field to distinguish between SSO secrets and JWT secrets Valid values are: "SSO", "JWT". + */ + public var secret_type: SecretType? + + public init(algorithm: String? = nil, enabled: Bool? = nil, secret_type: SecretType? = nil) { + self._algorithm = algorithm.map(AnyString.init) + self.enabled = enabled + self.secret_type = secret_type + } + +} + +/** + * Dynamic writeable type for ExternalOauthApplication removes: + * can, id, created_at + */ +public struct WriteExternalOauthApplication: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _client_id = "client_id" + case _client_secret = "client_secret" + case _dialect_name = "dialect_name" + } + private var _name: AnyString? + /** + * The name of this application. For Snowflake connections, this should be the name of the host database. + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + + private var _client_id: AnyString? /** - * Schema name + * The OAuth Client ID for this application */ - public var schema: String? { - get { _schema?.value } - set { _schema = newValue.map(AnyString.init) } + public var client_id: String? { + get { _client_id?.value } + set { _client_id = newValue.map(AnyString.init) } } - private var _jdbc_additional_params: AnyString? + private var _client_secret: AnyString? /** - * Additional params to add to JDBC connection string + * (Write-Only) The OAuth Client Secret for this application */ - public var jdbc_additional_params: String? { - get { _jdbc_additional_params?.value } - set { _jdbc_additional_params = newValue.map(AnyString.init) } + public var client_secret: String? { + get { _client_secret?.value } + set { _client_secret = newValue.map(AnyString.init) } } - private var _after_connect_statements: AnyString? + private var _dialect_name: AnyString? /** - * SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature + * The database dialect for this application. */ - public var after_connect_statements: String? { - get { _after_connect_statements?.value } - set { _after_connect_statements = newValue.map(AnyString.init) } + public var dialect_name: String? { + get { _dialect_name?.value } + set { _dialect_name = newValue.map(AnyString.init) } } - public init(context: String? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, schema: String? = nil, jdbc_additional_params: String? = nil, after_connect_statements: String? = nil) { - self._context = context.map(AnyString.init) - self._host = host.map(AnyString.init) - self._port = port.map(AnyString.init) - self._username = username.map(AnyString.init) - self._password = password.map(AnyString.init) - self._certificate = certificate.map(AnyString.init) - self._file_type = file_type.map(AnyString.init) - self._database = database.map(AnyString.init) - self._schema = schema.map(AnyString.init) - self._jdbc_additional_params = jdbc_additional_params.map(AnyString.init) - self._after_connect_statements = after_connect_statements.map(AnyString.init) + public init(name: String? = nil, client_id: String? = nil, client_secret: String? = nil, dialect_name: String? = nil) { + self._name = name.map(AnyString.init) + self._client_id = client_id.map(AnyString.init) + self._client_secret = client_secret.map(AnyString.init) + self._dialect_name = dialect_name.map(AnyString.init) } } @@ -20202,284 +25066,27 @@ public struct WriteGitBranch: SDKModel { */ public struct WriteGroup: SDKModel { - private enum CodingKeys : String, CodingKey { - case can_add_to_content_metadata - case _name = "name" - } - /** - * Group can be used in content access controls - */ - public var can_add_to_content_metadata: Bool? - - private var _name: AnyString? - /** - * Name of group - */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } - - public init(can_add_to_content_metadata: Bool? = nil, name: String? = nil) { - self.can_add_to_content_metadata = can_add_to_content_metadata - self._name = name.map(AnyString.init) - } - -} - -/** - * Dynamic writeable type for Homepage removes: - * can, content_metadata_id, created_at, homepage_sections, id, updated_at, user_id, primary_homepage - */ -public struct WriteHomepage: SDKModel { - - private enum CodingKeys : String, CodingKey { - case deleted_at - case _description = "description" - case _section_order = "section_order" - case _title = "title" - } - /** - * Date of homepage deletion - */ - public var deleted_at: Date? - - private var _description: AnyString? - /** - * Description of the homepage - */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } - } - - private var _section_order: [AnyInt]? - /** - * ids of the homepage sections in the order they should be displayed - */ - public var section_order: [Int64]? { - get { if let v = _section_order { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _section_order = v.map { AnyInt.init($0) } } else { _section_order = nil } } - } - - private var _title: AnyString? - /** - * Title of the homepage - */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } - } - - public init(deleted_at: Date? = nil, description: String? = nil, section_order: [Int64]? = nil, title: String? = nil) { - self.deleted_at = deleted_at - self._description = description.map(AnyString.init) - if let v = section_order { _section_order = v.map { AnyInt.init($0) } } else { _section_order = nil } - self._title = title.map(AnyString.init) - } - -} - -/** - * Dynamic writeable type for HomepageItem removes: - * can, content_created_by, content_favorite_id, content_metadata_id, content_updated_at, custom_image_url, description, favorite_count, id, image_url, location, section_fetch_time, title, url, view_count - */ -public struct WriteHomepageItem: SDKModel { - - private enum CodingKeys : String, CodingKey { - case _custom_description = "custom_description" - case _custom_image_data_base64 = "custom_image_data_base64" - case _custom_title = "custom_title" - case _custom_url = "custom_url" - case _dashboard_id = "dashboard_id" - case _homepage_section_id = "homepage_section_id" - case _look_id = "look_id" - case _lookml_dashboard_id = "lookml_dashboard_id" - case _order = "order" - case use_custom_description - case use_custom_image - case use_custom_title - case use_custom_url - } - private var _custom_description: AnyString? - /** - * Custom description entered by the user, if present - */ - public var custom_description: String? { - get { _custom_description?.value } - set { _custom_description = newValue.map(AnyString.init) } - } - - private var _custom_image_data_base64: AnyString? - /** - * (Write-Only) base64 encoded image data - */ - public var custom_image_data_base64: String? { - get { _custom_image_data_base64?.value } - set { _custom_image_data_base64 = newValue.map(AnyString.init) } - } - - private var _custom_title: AnyString? - /** - * Custom title entered by the user, if present - */ - public var custom_title: String? { - get { _custom_title?.value } - set { _custom_title = newValue.map(AnyString.init) } - } - - private var _custom_url: AnyString? - /** - * Custom url entered by the user, if present - */ - public var custom_url: String? { - get { _custom_url?.value } - set { _custom_url = newValue.map(AnyString.init) } - } - - private var _dashboard_id: AnyInt? - /** - * Dashboard to base this item on - */ - public var dashboard_id: Int64? { - get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyInt.init) } - } - - private var _homepage_section_id: AnyInt? - /** - * Associated Homepage Section - */ - public var homepage_section_id: Int64? { - get { _homepage_section_id?.value } - set { _homepage_section_id = newValue.map(AnyInt.init) } - } - - private var _look_id: AnyInt? - /** - * Look to base this item on - */ - public var look_id: Int64? { - get { _look_id?.value } - set { _look_id = newValue.map(AnyInt.init) } - } - - private var _lookml_dashboard_id: AnyString? - /** - * LookML Dashboard to base this item on - */ - public var lookml_dashboard_id: String? { - get { _lookml_dashboard_id?.value } - set { _lookml_dashboard_id = newValue.map(AnyString.init) } - } - - private var _order: AnyInt? - /** - * An arbitrary integer representing the sort order within the section - */ - public var order: Int64? { - get { _order?.value } - set { _order = newValue.map(AnyInt.init) } - } - - /** - * Whether the custom description should be used instead of the content description, if the item is associated with content - */ - public var use_custom_description: Bool? - - /** - * Whether the custom image should be used instead of the content image, if the item is associated with content - */ - public var use_custom_image: Bool? - - /** - * Whether the custom title should be used instead of the content title, if the item is associated with content - */ - public var use_custom_title: Bool? - - /** - * Whether the custom url should be used instead of the content url, if the item is associated with content - */ - public var use_custom_url: Bool? - - public init(custom_description: String? = nil, custom_image_data_base64: String? = nil, custom_title: String? = nil, custom_url: String? = nil, dashboard_id: Int64? = nil, homepage_section_id: Int64? = nil, look_id: Int64? = nil, lookml_dashboard_id: String? = nil, order: Int64? = nil, use_custom_description: Bool? = nil, use_custom_image: Bool? = nil, use_custom_title: Bool? = nil, use_custom_url: Bool? = nil) { - self._custom_description = custom_description.map(AnyString.init) - self._custom_image_data_base64 = custom_image_data_base64.map(AnyString.init) - self._custom_title = custom_title.map(AnyString.init) - self._custom_url = custom_url.map(AnyString.init) - self._dashboard_id = dashboard_id.map(AnyInt.init) - self._homepage_section_id = homepage_section_id.map(AnyInt.init) - self._look_id = look_id.map(AnyInt.init) - self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) - self._order = order.map(AnyInt.init) - self.use_custom_description = use_custom_description - self.use_custom_image = use_custom_image - self.use_custom_title = use_custom_title - self.use_custom_url = use_custom_url - } - -} - -/** - * Dynamic writeable type for HomepageSection removes: - * can, created_at, detail_url, homepage_items, id, is_header, updated_at, visible_item_order - */ -public struct WriteHomepageSection: SDKModel { - - private enum CodingKeys : String, CodingKey { - case deleted_at - case _homepage_id = "homepage_id" - case _item_order = "item_order" - case _title = "title" - case _description = "description" - } - /** - * Time at which this section was deleted. - */ - public var deleted_at: Date? - - private var _homepage_id: AnyInt? - /** - * Id reference to parent homepage - */ - public var homepage_id: Int64? { - get { _homepage_id?.value } - set { _homepage_id = newValue.map(AnyInt.init) } - } - - private var _item_order: [AnyInt]? - /** - * ids of the homepage items in the order they should be displayed - */ - public var item_order: [Int64]? { - get { if let v = _item_order { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _item_order = v.map { AnyInt.init($0) } } else { _item_order = nil } } - } - - private var _title: AnyString? + private enum CodingKeys : String, CodingKey { + case can_add_to_content_metadata + case _name = "name" + } /** - * Name of row + * Group can be used in content access controls */ - public var title: String? { - get { _title?.value } - set { _title = newValue.map(AnyString.init) } - } + public var can_add_to_content_metadata: Bool? - private var _description: AnyString? + private var _name: AnyString? /** - * Description of the content found in this section. + * Name of group */ - public var description: String? { - get { _description?.value } - set { _description = newValue.map(AnyString.init) } + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } } - public init(deleted_at: Date? = nil, homepage_id: Int64? = nil, item_order: [Int64]? = nil, title: String? = nil, description: String? = nil) { - self.deleted_at = deleted_at - self._homepage_id = homepage_id.map(AnyInt.init) - if let v = item_order { _item_order = v.map { AnyInt.init($0) } } else { _item_order = nil } - self._title = title.map(AnyString.init) - self._description = description.map(AnyString.init) + public init(can_add_to_content_metadata: Bool? = nil, name: String? = nil) { + self.can_add_to_content_metadata = can_add_to_content_metadata + self._name = name.map(AnyString.init) } } @@ -20505,19 +25112,19 @@ public struct WriteIntegration: SDKModel { */ public var params: [IntegrationParam]? - private var _installed_delegate_oauth_targets: [AnyInt]? + private var _installed_delegate_oauth_targets: [AnyString]? /** * Whether the integration is available to users. */ - public var installed_delegate_oauth_targets: [Int64]? { + public var installed_delegate_oauth_targets: [String]? { get { if let v = _installed_delegate_oauth_targets { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _installed_delegate_oauth_targets = v.map { AnyInt.init($0) } } else { _installed_delegate_oauth_targets = nil } } + set { if let v = newValue { _installed_delegate_oauth_targets = v.map { AnyString.init($0) } } else { _installed_delegate_oauth_targets = nil } } } - public init(enabled: Bool? = nil, params: [IntegrationParam]? = nil, installed_delegate_oauth_targets: [Int64]? = nil) { + public init(enabled: Bool? = nil, params: [IntegrationParam]? = nil, installed_delegate_oauth_targets: [String]? = nil) { self.enabled = enabled self.params = params - if let v = installed_delegate_oauth_targets { _installed_delegate_oauth_targets = v.map { AnyInt.init($0) } } else { _installed_delegate_oauth_targets = nil } + if let v = installed_delegate_oauth_targets { _installed_delegate_oauth_targets = v.map { AnyString.init($0) } } else { _installed_delegate_oauth_targets = nil } } } @@ -20706,22 +25313,22 @@ public struct WriteLDAPConfig: SDKModel { */ public var connection_tls_no_verify: Bool? - private var _default_new_user_group_ids: [AnyInt]? + private var _default_new_user_group_ids: [AnyString]? /** * (Write-Only) Array of ids of groups that will be applied to new users the first time they login via LDAP */ - public var default_new_user_group_ids: [Int64]? { + public var default_new_user_group_ids: [String]? { get { if let v = _default_new_user_group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } } + set { if let v = newValue { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } } } - private var _default_new_user_role_ids: [AnyInt]? + private var _default_new_user_role_ids: [AnyString]? /** * (Write-Only) Array of ids of roles that will be applied to new users the first time they login via LDAP */ - public var default_new_user_role_ids: [Int64]? { + public var default_new_user_role_ids: [String]? { get { if let v = _default_new_user_role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } } + set { if let v = newValue { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } } } /** @@ -20904,7 +25511,7 @@ public struct WriteLDAPConfig: SDKModel { */ public var allow_direct_roles: Bool? - public init(alternate_email_login_allowed: Bool? = nil, auth_password: String? = nil, auth_requires_role: Bool? = nil, auth_username: String? = nil, connection_host: String? = nil, connection_port: String? = nil, connection_tls: Bool? = nil, connection_tls_no_verify: Bool? = nil, default_new_user_group_ids: [Int64]? = nil, default_new_user_role_ids: [Int64]? = nil, enabled: Bool? = nil, force_no_page: Bool? = nil, groups_base_dn: String? = nil, groups_finder_type: String? = nil, groups_member_attribute: String? = nil, groups_objectclasses: String? = nil, groups_user_attribute: String? = nil, groups_with_role_ids: [LDAPGroupWrite]? = nil, merge_new_users_by_email: Bool? = nil, set_roles_from_groups: Bool? = nil, test_ldap_password: String? = nil, test_ldap_user: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attribute_map_ldap_id: String? = nil, user_attributes_with_ids: [LDAPUserAttributeWrite]? = nil, user_bind_base_dn: String? = nil, user_custom_filter: String? = nil, user_id_attribute_names: String? = nil, user_objectclass: String? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil) { + public init(alternate_email_login_allowed: Bool? = nil, auth_password: String? = nil, auth_requires_role: Bool? = nil, auth_username: String? = nil, connection_host: String? = nil, connection_port: String? = nil, connection_tls: Bool? = nil, connection_tls_no_verify: Bool? = nil, default_new_user_group_ids: [String]? = nil, default_new_user_role_ids: [String]? = nil, enabled: Bool? = nil, force_no_page: Bool? = nil, groups_base_dn: String? = nil, groups_finder_type: String? = nil, groups_member_attribute: String? = nil, groups_objectclasses: String? = nil, groups_user_attribute: String? = nil, groups_with_role_ids: [LDAPGroupWrite]? = nil, merge_new_users_by_email: Bool? = nil, set_roles_from_groups: Bool? = nil, test_ldap_password: String? = nil, test_ldap_user: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attribute_map_ldap_id: String? = nil, user_attributes_with_ids: [LDAPUserAttributeWrite]? = nil, user_bind_base_dn: String? = nil, user_custom_filter: String? = nil, user_id_attribute_names: String? = nil, user_objectclass: String? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil) { self.alternate_email_login_allowed = alternate_email_login_allowed self._auth_password = auth_password.map(AnyString.init) self.auth_requires_role = auth_requires_role @@ -20913,8 +25520,8 @@ public struct WriteLDAPConfig: SDKModel { self._connection_port = connection_port.map(AnyString.init) self.connection_tls = connection_tls self.connection_tls_no_verify = connection_tls_no_verify - if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } - if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } + if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } + if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } self.enabled = enabled self.force_no_page = force_no_page self._groups_base_dn = groups_base_dn.map(AnyString.init) @@ -20959,6 +25566,30 @@ public struct WriteLegacyFeature: SDKModel { } +/** + * Dynamic writeable type for LookBasic removes: + * can, content_metadata_id, id, title + */ +public struct WriteLookBasic: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _user_id = "user_id" + } + private var _user_id: AnyString? + /** + * User Id + */ + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } + } + + public init(user_id: String? = nil) { + self._user_id = user_id.map(AnyString.init) + } + +} + /** * Dynamic writeable type for LookmlModel removes: * can, explores, has_content, label @@ -21014,12 +25645,13 @@ public struct WriteLookmlModel: SDKModel { /** * 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, view_count, user, url + * 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, view_count, url */ public struct WriteLookWithQuery: SDKModel { private enum CodingKeys : String, CodingKey { case _title = "title" + case _user_id = "user_id" case deleted case _description = "description" case is_run_on_load @@ -21027,9 +25659,6 @@ public struct WriteLookWithQuery: SDKModel { case _query_id = "query_id" case folder case _folder_id = "folder_id" - case _user_id = "user_id" - case _space_id = "space_id" - case space case query } private var _title: AnyString? @@ -21041,6 +25670,15 @@ public struct WriteLookWithQuery: SDKModel { set { _title = newValue.map(AnyString.init) } } + private var _user_id: AnyString? + /** + * User Id + */ + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } + } + /** * Whether or not a look is 'soft' deleted. */ @@ -21065,13 +25703,13 @@ public struct WriteLookWithQuery: SDKModel { */ public var `public`: Bool? - private var _query_id: AnyInt? + private var _query_id: AnyString? /** * Query Id */ - public var query_id: Int64? { + public var query_id: String? { get { _query_id?.value } - set { _query_id = newValue.map(AnyInt.init) } + set { _query_id = newValue.map(AnyString.init) } } /** @@ -21089,48 +25727,22 @@ public struct WriteLookWithQuery: SDKModel { set { _folder_id = newValue.map(AnyString.init) } } - private var _user_id: AnyInt? - /** - * User Id - */ - public var user_id: Int64? { - get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } - } - - private var _space_id: AnyString? - /** - * Space Id - */ - public var space_id: String? { - get { _space_id?.value } - set { _space_id = newValue.map(AnyString.init) } - } - - /** - * Dynamic writeable type for SpaceBase 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 - */ - public var space: WriteSpaceBase? - /** * Dynamic writeable type for Query removes: * can, id, slug, share_url, expanded_share_url, url, has_table_calculations */ public var query: WriteQuery? - public init(title: String? = nil, deleted: Bool? = nil, description: String? = nil, is_run_on_load: Bool? = nil, `public`: Bool? = nil, query_id: Int64? = nil, folder: WriteFolderBase? = nil, folder_id: String? = nil, user_id: Int64? = nil, space_id: String? = nil, space: WriteSpaceBase? = nil, query: WriteQuery? = nil) { + public init(title: String? = nil, user_id: String? = nil, deleted: Bool? = nil, description: String? = nil, is_run_on_load: Bool? = nil, `public`: Bool? = nil, query_id: String? = nil, folder: WriteFolderBase? = nil, folder_id: String? = nil, query: WriteQuery? = nil) { self._title = title.map(AnyString.init) + self._user_id = user_id.map(AnyString.init) self.deleted = deleted self._description = description.map(AnyString.init) self.is_run_on_load = is_run_on_load self.`public` = `public` - self._query_id = query_id.map(AnyInt.init) + self._query_id = query_id.map(AnyString.init) self.folder = folder self._folder_id = folder_id.map(AnyString.init) - self._user_id = user_id.map(AnyInt.init) - self._space_id = space_id.map(AnyString.init) - self.space = space self.query = query } @@ -21214,6 +25826,41 @@ public struct WriteMergeQuery: SDKModel { } +/** + * Dynamic writeable type for MobileToken removes: + * id + */ +public struct WriteMobileToken: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _device_token = "device_token" + case device_type + } + private var _device_token: AnyString + /** + * Specifies the device token + */ + public var device_token: String { + get { _device_token.value } + set { _device_token = AnyString.init(newValue) } + } + + /** + * Specifies type of device. Valid values are: "android", "ios". + */ + public var device_type: DeviceType + + public init(device_token: String, device_type: DeviceType) { + self._device_token = AnyString.init(device_token) + self.device_type = device_type + } + + public init(_ device_token: String, _ device_type: DeviceType) { + self.init(device_token: device_token, device_type: device_type) + } + +} + /** * Dynamic writeable type for ModelSet removes: * can, all_access, built_in, id, url @@ -21246,6 +25893,70 @@ public struct WriteModelSet: SDKModel { } +/** + * Dynamic writeable type for OauthClientApp removes: + * can, client_guid, tokens_invalid_before, activated_users + */ +public struct WriteOauthClientApp: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _redirect_uri = "redirect_uri" + case _display_name = "display_name" + case _description = "description" + case enabled + case _group_id = "group_id" + } + private var _redirect_uri: AnyString? + /** + * The uri with which this application will receive an auth code by browser redirect. + */ + public var redirect_uri: String? { + get { _redirect_uri?.value } + set { _redirect_uri = newValue.map(AnyString.init) } + } + + private var _display_name: AnyString? + /** + * The application's display name + */ + public var display_name: String? { + get { _display_name?.value } + set { _display_name = newValue.map(AnyString.init) } + } + + private var _description: AnyString? + /** + * A description of the application that will be displayed to users + */ + public var description: String? { + get { _description?.value } + set { _description = newValue.map(AnyString.init) } + } + + /** + * 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. + */ + public var enabled: Bool? + + private var _group_id: AnyString? + /** + * 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 + */ + public var group_id: String? { + get { _group_id?.value } + set { _group_id = newValue.map(AnyString.init) } + } + + public init(redirect_uri: String? = nil, display_name: String? = nil, description: String? = nil, enabled: Bool? = nil, group_id: String? = nil) { + self._redirect_uri = redirect_uri.map(AnyString.init) + self._display_name = display_name.map(AnyString.init) + self._description = description.map(AnyString.init) + self.enabled = enabled + self._group_id = group_id.map(AnyString.init) + } + +} + /** * 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 @@ -21256,7 +25967,7 @@ public struct WriteOIDCConfig: SDKModel { case alternate_email_login_allowed case _audience = "audience" case auth_requires_role - case authorization_endpoint + case _authorization_endpoint = "authorization_endpoint" case _default_new_user_group_ids = "default_new_user_group_ids" case _default_new_user_role_ids = "default_new_user_role_ids" case enabled @@ -21273,7 +25984,7 @@ public struct WriteOIDCConfig: SDKModel { case _user_attribute_map_first_name = "user_attribute_map_first_name" case _user_attribute_map_last_name = "user_attribute_map_last_name" case user_attributes_with_ids - case userinfo_endpoint + case _userinfo_endpoint = "userinfo_endpoint" case allow_normal_group_membership case allow_roles_from_normal_groups case allow_direct_roles @@ -21297,27 +26008,31 @@ public struct WriteOIDCConfig: SDKModel { */ public var auth_requires_role: Bool? + private var _authorization_endpoint: AnyString? /** * OpenID Provider Authorization Url */ - public var authorization_endpoint: URI? + public var authorization_endpoint: String? { + get { _authorization_endpoint?.value } + set { _authorization_endpoint = newValue.map(AnyString.init) } + } - private var _default_new_user_group_ids: [AnyInt]? + private var _default_new_user_group_ids: [AnyString]? /** * (Write-Only) Array of ids of groups that will be applied to new users the first time they login via OIDC */ - public var default_new_user_group_ids: [Int64]? { + public var default_new_user_group_ids: [String]? { get { if let v = _default_new_user_group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } } + set { if let v = newValue { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } } } - private var _default_new_user_role_ids: [AnyInt]? + private var _default_new_user_role_ids: [AnyString]? /** * (Write-Only) Array of ids of roles that will be applied to new users the first time they login via OIDC */ - public var default_new_user_role_ids: [Int64]? { + public var default_new_user_role_ids: [String]? { get { if let v = _default_new_user_role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } } + set { if let v = newValue { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } } } /** @@ -21430,10 +26145,14 @@ public struct WriteOIDCConfig: SDKModel { */ public var user_attributes_with_ids: [OIDCUserAttributeWrite]? + private var _userinfo_endpoint: AnyString? /** * OpenID Provider User Information Url */ - public var userinfo_endpoint: URI? + public var userinfo_endpoint: String? { + get { _userinfo_endpoint?.value } + set { _userinfo_endpoint = newValue.map(AnyString.init) } + } /** * 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. @@ -21450,13 +26169,13 @@ public struct WriteOIDCConfig: SDKModel { */ public var allow_direct_roles: Bool? - public init(alternate_email_login_allowed: Bool? = nil, audience: String? = nil, auth_requires_role: Bool? = nil, authorization_endpoint: URI? = nil, default_new_user_group_ids: [Int64]? = nil, default_new_user_role_ids: [Int64]? = nil, enabled: Bool? = nil, groups_attribute: String? = nil, groups_with_role_ids: [OIDCGroupWrite]? = nil, identifier: String? = nil, issuer: String? = nil, new_user_migration_types: String? = nil, scopes: [String]? = nil, secret: String? = nil, set_roles_from_groups: Bool? = nil, token_endpoint: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attributes_with_ids: [OIDCUserAttributeWrite]? = nil, userinfo_endpoint: URI? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil) { + public init(alternate_email_login_allowed: Bool? = nil, audience: String? = nil, auth_requires_role: Bool? = nil, authorization_endpoint: String? = nil, default_new_user_group_ids: [String]? = nil, default_new_user_role_ids: [String]? = nil, enabled: Bool? = nil, groups_attribute: String? = nil, groups_with_role_ids: [OIDCGroupWrite]? = nil, identifier: String? = nil, issuer: String? = nil, new_user_migration_types: String? = nil, scopes: [String]? = nil, secret: String? = nil, set_roles_from_groups: Bool? = nil, token_endpoint: String? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, user_attributes_with_ids: [OIDCUserAttributeWrite]? = nil, userinfo_endpoint: String? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil) { self.alternate_email_login_allowed = alternate_email_login_allowed self._audience = audience.map(AnyString.init) self.auth_requires_role = auth_requires_role - self.authorization_endpoint = authorization_endpoint - if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } - if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } + self._authorization_endpoint = authorization_endpoint.map(AnyString.init) + if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } + if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } self.enabled = enabled self._groups_attribute = groups_attribute.map(AnyString.init) self.groups_with_role_ids = groups_with_role_ids @@ -21471,7 +26190,7 @@ public struct WriteOIDCConfig: SDKModel { self._user_attribute_map_first_name = user_attribute_map_first_name.map(AnyString.init) self._user_attribute_map_last_name = user_attribute_map_last_name.map(AnyString.init) self.user_attributes_with_ids = user_attributes_with_ids - self.userinfo_endpoint = userinfo_endpoint + self._userinfo_endpoint = userinfo_endpoint.map(AnyString.init) self.allow_normal_group_membership = allow_normal_group_membership self.allow_roles_from_normal_groups = allow_roles_from_normal_groups self.allow_direct_roles = allow_direct_roles @@ -21491,67 +26210,183 @@ public struct WritePasswordConfig: SDKModel { case require_upperlower case require_special } - private var _min_length: AnyInt? + private var _min_length: AnyInt? + /** + * Minimum number of characters required for a new password. Must be between 7 and 100 + */ + public var min_length: Int64? { + get { _min_length?.value } + set { _min_length = newValue.map(AnyInt.init) } + } + + /** + * Require at least one numeric character + */ + public var require_numeric: Bool? + + /** + * Require at least one uppercase and one lowercase letter + */ + public var require_upperlower: Bool? + + /** + * Require at least one special character + */ + public var require_special: Bool? + + public init(min_length: Int64? = nil, require_numeric: Bool? = nil, require_upperlower: Bool? = nil, require_special: Bool? = nil) { + self._min_length = min_length.map(AnyInt.init) + self.require_numeric = require_numeric + self.require_upperlower = require_upperlower + self.require_special = require_special + } + +} + +/** + * Dynamic writeable type for PermissionSet removes: + * can, all_access, built_in, id, url + */ +public struct WritePermissionSet: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _name = "name" + case _permissions = "permissions" + } + private var _name: AnyString? + /** + * Name of PermissionSet + */ + public var name: String? { + get { _name?.value } + set { _name = newValue.map(AnyString.init) } + } + + private var _permissions: [AnyString]? + public var permissions: [String]? { + get { if let v = _permissions { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } } + } + + public init(name: String? = nil, permissions: [String]? = nil) { + self._name = name.map(AnyString.init) + if let v = permissions { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } + } + +} + +/** + * Dynamic writeable type for PrivatelabelConfiguration removes: + * logo_url, favicon_url + */ +public struct WritePrivatelabelConfiguration: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _logo_file = "logo_file" + case _favicon_file = "favicon_file" + case _default_title = "default_title" + case show_help_menu + case show_docs + case show_email_sub_options + case allow_looker_mentions + case allow_looker_links + case custom_welcome_email_advanced + case setup_mentions + case alerts_logo + case alerts_links + case folders_mentions + } + private var _logo_file: AnyString? + /** + * Customer logo image. Expected base64 encoded data (write-only) + */ + public var logo_file: String? { + get { _logo_file?.value } + set { _logo_file = newValue.map(AnyString.init) } + } + + private var _favicon_file: AnyString? + /** + * Custom favicon image. Expected base64 encoded data (write-only) + */ + public var favicon_file: String? { + get { _favicon_file?.value } + set { _favicon_file = newValue.map(AnyString.init) } + } + + private var _default_title: AnyString? + /** + * Default page title + */ + public var default_title: String? { + get { _default_title?.value } + set { _default_title = newValue.map(AnyString.init) } + } + /** - * Minimum number of characters required for a new password. Must be between 7 and 100 + * Boolean to toggle showing help menus */ - public var min_length: Int64? { - get { _min_length?.value } - set { _min_length = newValue.map(AnyInt.init) } - } + public var show_help_menu: Bool? /** - * Require at least one numeric character + * Boolean to toggle showing docs */ - public var require_numeric: Bool? + public var show_docs: Bool? /** - * Require at least one uppercase and one lowercase letter + * Boolean to toggle showing email subscription options. */ - public var require_upperlower: Bool? + public var show_email_sub_options: Bool? /** - * Require at least one special character + * Boolean to toggle mentions of Looker in emails */ - public var require_special: Bool? + public var allow_looker_mentions: Bool? - public init(min_length: Int64? = nil, require_numeric: Bool? = nil, require_upperlower: Bool? = nil, require_special: Bool? = nil) { - self._min_length = min_length.map(AnyInt.init) - self.require_numeric = require_numeric - self.require_upperlower = require_upperlower - self.require_special = require_special - } + /** + * Boolean to toggle links to Looker in emails + */ + public var allow_looker_links: Bool? -} + /** + * Allow subject line and email heading customization in customized emails” + */ + public var custom_welcome_email_advanced: Bool? -/** - * Dynamic writeable type for PermissionSet removes: - * can, all_access, built_in, id, url - */ -public struct WritePermissionSet: SDKModel { + /** + * Remove the word Looker from appearing in the account setup page + */ + public var setup_mentions: Bool? - private enum CodingKeys : String, CodingKey { - case _name = "name" - case _permissions = "permissions" - } - private var _name: AnyString? /** - * Name of PermissionSet + * Remove Looker logo from Alerts */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } - } + public var alerts_logo: Bool? - private var _permissions: [AnyString]? - public var permissions: [String]? { - get { if let v = _permissions { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } } - } + /** + * Remove Looker links from Alerts + */ + public var alerts_links: Bool? - public init(name: String? = nil, permissions: [String]? = nil) { - self._name = name.map(AnyString.init) - if let v = permissions { _permissions = v.map { AnyString.init($0) } } else { _permissions = nil } + /** + * Remove Looker mentions in home folder page when you don’t have any items saved + */ + public var folders_mentions: Bool? + + public init(logo_file: String? = nil, favicon_file: String? = nil, default_title: String? = nil, show_help_menu: Bool? = nil, show_docs: Bool? = nil, show_email_sub_options: Bool? = nil, allow_looker_mentions: Bool? = nil, allow_looker_links: Bool? = nil, custom_welcome_email_advanced: Bool? = nil, setup_mentions: Bool? = nil, alerts_logo: Bool? = nil, alerts_links: Bool? = nil, folders_mentions: Bool? = nil) { + self._logo_file = logo_file.map(AnyString.init) + self._favicon_file = favicon_file.map(AnyString.init) + self._default_title = default_title.map(AnyString.init) + self.show_help_menu = show_help_menu + self.show_docs = show_docs + self.show_email_sub_options = show_email_sub_options + self.allow_looker_mentions = allow_looker_mentions + self.allow_looker_links = allow_looker_links + self.custom_welcome_email_advanced = custom_welcome_email_advanced + self.setup_mentions = setup_mentions + self.alerts_logo = alerts_logo + self.alerts_links = alerts_links + self.folders_mentions = folders_mentions } } @@ -21580,6 +26415,7 @@ public struct WriteProject: SDKModel { case validation_required case git_release_mgmt_enabled case allow_warnings + case _dependency_status = "dependency_status" } private var _name: AnyString? /** @@ -21710,7 +26546,16 @@ public struct WriteProject: SDKModel { */ public var allow_warnings: Bool? - public init(name: String? = nil, git_remote_url: String? = nil, git_username: String? = nil, git_password: String? = nil, git_production_branch_name: String? = nil, use_git_cookie_auth: Bool? = nil, git_username_user_attribute: String? = nil, git_password_user_attribute: String? = nil, git_service_name: String? = nil, git_application_server_http_port: Int64? = nil, git_application_server_http_scheme: String? = nil, deploy_secret: String? = nil, unset_deploy_secret: Bool? = nil, pull_request_mode: PullRequestMode? = nil, validation_required: Bool? = nil, git_release_mgmt_enabled: Bool? = nil, allow_warnings: Bool? = nil) { + private var _dependency_status: AnyString? + /** + * Status of dependencies in your manifest & lockfile + */ + public var dependency_status: String? { + get { _dependency_status?.value } + set { _dependency_status = newValue.map(AnyString.init) } + } + + public init(name: String? = nil, git_remote_url: String? = nil, git_username: String? = nil, git_password: String? = nil, git_production_branch_name: String? = nil, use_git_cookie_auth: Bool? = nil, git_username_user_attribute: String? = nil, git_password_user_attribute: String? = nil, git_service_name: String? = nil, git_application_server_http_port: Int64? = nil, git_application_server_http_scheme: String? = nil, deploy_secret: String? = nil, unset_deploy_secret: Bool? = nil, pull_request_mode: PullRequestMode? = nil, validation_required: Bool? = nil, git_release_mgmt_enabled: Bool? = nil, allow_warnings: Bool? = nil, dependency_status: String? = nil) { self._name = name.map(AnyString.init) self._git_remote_url = git_remote_url.map(AnyString.init) self._git_username = git_username.map(AnyString.init) @@ -21728,6 +26573,7 @@ public struct WriteProject: SDKModel { self.validation_required = validation_required self.git_release_mgmt_enabled = git_release_mgmt_enabled self.allow_warnings = allow_warnings + self._dependency_status = dependency_status.map(AnyString.init) } } @@ -21758,7 +26604,6 @@ public struct WriteQuery: SDKModel { case _dynamic_fields = "dynamic_fields" case _client_id = "client_id" case _query_timezone = "query_timezone" - case runtime } private var _model: AnyString /** @@ -21915,12 +26760,7 @@ public struct WriteQuery: SDKModel { set { _query_timezone = newValue.map(AnyString.init) } } - /** - * (DEPRECATED) Runtime (Deprecated) - */ - public var runtime: Double? - - public init(model: String, view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, query_timezone: String? = nil, runtime: Double? = nil) { + public init(model: String, view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, query_timezone: String? = nil) { self._model = AnyString.init(model) self._view = AnyString.init(view) if let v = fields { _fields = v.map { AnyString.init($0) } } else { _fields = nil } @@ -21940,11 +26780,10 @@ public struct WriteQuery: SDKModel { self._dynamic_fields = dynamic_fields.map(AnyString.init) self._client_id = client_id.map(AnyString.init) self._query_timezone = query_timezone.map(AnyString.init) - self.runtime = runtime } - public init(_ model: String, _ view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, query_timezone: String? = nil, runtime: Double? = nil) { - self.init(model: model, view: view, fields: fields, pivots: pivots, fill_fields: fill_fields, filters: filters, filter_expression: filter_expression, sorts: sorts, limit: limit, column_limit: column_limit, total: total, row_total: row_total, subtotals: subtotals, vis_config: vis_config, filter_config: filter_config, visible_ui_sections: visible_ui_sections, dynamic_fields: dynamic_fields, client_id: client_id, query_timezone: query_timezone, runtime: runtime) + public init(_ model: String, _ view: String, fields: [String]? = nil, pivots: [String]? = nil, fill_fields: [String]? = nil, filters: StringDictionary? = nil, filter_expression: String? = nil, sorts: [String]? = nil, limit: String? = nil, column_limit: String? = nil, total: Bool? = nil, row_total: String? = nil, subtotals: [String]? = nil, vis_config: StringDictionary? = nil, filter_config: StringDictionary? = nil, visible_ui_sections: String? = nil, dynamic_fields: String? = nil, client_id: String? = nil, query_timezone: String? = nil) { + self.init(model: model, view: view, fields: fields, pivots: pivots, fill_fields: fill_fields, filters: filters, filter_expression: filter_expression, sorts: sorts, limit: limit, column_limit: column_limit, total: total, row_total: row_total, subtotals: subtotals, vis_config: vis_config, filter_config: filter_config, visible_ui_sections: visible_ui_sections, dynamic_fields: dynamic_fields, client_id: client_id, query_timezone: query_timezone) } } @@ -22040,13 +26879,13 @@ public struct WriteRole: SDKModel { */ public var permission_set: WritePermissionSet? - private var _permission_set_id: AnyInt? + private var _permission_set_id: AnyString? /** * (Write-Only) Id of permission set */ - public var permission_set_id: Int64? { + public var permission_set_id: String? { get { _permission_set_id?.value } - set { _permission_set_id = newValue.map(AnyInt.init) } + set { _permission_set_id = newValue.map(AnyString.init) } } /** @@ -22055,21 +26894,21 @@ public struct WriteRole: SDKModel { */ public var model_set: WriteModelSet? - private var _model_set_id: AnyInt? + private var _model_set_id: AnyString? /** * (Write-Only) Id of model set */ - public var model_set_id: Int64? { + public var model_set_id: String? { get { _model_set_id?.value } - set { _model_set_id = newValue.map(AnyInt.init) } + set { _model_set_id = newValue.map(AnyString.init) } } - public init(name: String? = nil, permission_set: WritePermissionSet? = nil, permission_set_id: Int64? = nil, model_set: WriteModelSet? = nil, model_set_id: Int64? = nil) { + public init(name: String? = nil, permission_set: WritePermissionSet? = nil, permission_set_id: String? = nil, model_set: WriteModelSet? = nil, model_set_id: String? = nil) { self._name = name.map(AnyString.init) self.permission_set = permission_set - self._permission_set_id = permission_set_id.map(AnyInt.init) + self._permission_set_id = permission_set_id.map(AnyString.init) self.model_set = model_set - self._model_set_id = model_set_id.map(AnyInt.init) + self._model_set_id = model_set_id.map(AnyString.init) } } @@ -22197,22 +27036,22 @@ public struct WriteSamlConfig: SDKModel { */ public var alternate_email_login_allowed: Bool? - private var _default_new_user_role_ids: [AnyInt]? + private var _default_new_user_role_ids: [AnyString]? /** * (Write-Only) Array of ids of roles that will be applied to new users the first time they login via Saml */ - public var default_new_user_role_ids: [Int64]? { + public var default_new_user_role_ids: [String]? { get { if let v = _default_new_user_role_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } } + set { if let v = newValue { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } } } - private var _default_new_user_group_ids: [AnyInt]? + private var _default_new_user_group_ids: [AnyString]? /** * (Write-Only) Array of ids of groups that will be applied to new users the first time they login via Saml */ - public var default_new_user_group_ids: [Int64]? { + public var default_new_user_group_ids: [String]? { get { if let v = _default_new_user_group_ids { return v.map { $0.value } } else { return nil } } - set { if let v = newValue { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } } + set { if let v = newValue { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } } } /** @@ -22282,7 +27121,7 @@ public struct WriteSamlConfig: SDKModel { */ public var allow_direct_roles: Bool? - public init(enabled: Bool? = nil, idp_cert: String? = nil, idp_url: String? = nil, idp_issuer: String? = nil, idp_audience: String? = nil, allowed_clock_drift: Int64? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, new_user_migration_types: String? = nil, alternate_email_login_allowed: Bool? = nil, default_new_user_role_ids: [Int64]? = nil, default_new_user_group_ids: [Int64]? = nil, set_roles_from_groups: Bool? = nil, groups_attribute: String? = nil, groups_with_role_ids: [SamlGroupWrite]? = nil, auth_requires_role: Bool? = nil, user_attributes_with_ids: [SamlUserAttributeWrite]? = nil, groups_finder_type: String? = nil, groups_member_value: String? = nil, bypass_login_page: Bool? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil) { + public init(enabled: Bool? = nil, idp_cert: String? = nil, idp_url: String? = nil, idp_issuer: String? = nil, idp_audience: String? = nil, allowed_clock_drift: Int64? = nil, user_attribute_map_email: String? = nil, user_attribute_map_first_name: String? = nil, user_attribute_map_last_name: String? = nil, new_user_migration_types: String? = nil, alternate_email_login_allowed: Bool? = nil, default_new_user_role_ids: [String]? = nil, default_new_user_group_ids: [String]? = nil, set_roles_from_groups: Bool? = nil, groups_attribute: String? = nil, groups_with_role_ids: [SamlGroupWrite]? = nil, auth_requires_role: Bool? = nil, user_attributes_with_ids: [SamlUserAttributeWrite]? = nil, groups_finder_type: String? = nil, groups_member_value: String? = nil, bypass_login_page: Bool? = nil, allow_normal_group_membership: Bool? = nil, allow_roles_from_normal_groups: Bool? = nil, allow_direct_roles: Bool? = nil) { self.enabled = enabled self._idp_cert = idp_cert.map(AnyString.init) self._idp_url = idp_url.map(AnyString.init) @@ -22294,8 +27133,8 @@ public struct WriteSamlConfig: SDKModel { self._user_attribute_map_last_name = user_attribute_map_last_name.map(AnyString.init) self._new_user_migration_types = new_user_migration_types.map(AnyString.init) self.alternate_email_login_allowed = alternate_email_login_allowed - if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyInt.init($0) } } else { _default_new_user_role_ids = nil } - if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyInt.init($0) } } else { _default_new_user_group_ids = nil } + if let v = default_new_user_role_ids { _default_new_user_role_ids = v.map { AnyString.init($0) } } else { _default_new_user_role_ids = nil } + if let v = default_new_user_group_ids { _default_new_user_group_ids = v.map { AnyString.init($0) } } else { _default_new_user_group_ids = nil } self.set_roles_from_groups = set_roles_from_groups self._groups_attribute = groups_attribute.map(AnyString.init) self.groups_with_role_ids = groups_with_role_ids @@ -22358,13 +27197,13 @@ public struct WriteScheduledPlan: SDKModel { set { _name = newValue.map(AnyString.init) } } - private var _user_id: AnyInt? + private var _user_id: AnyString? /** * User Id which owns this scheduled plan */ - public var user_id: Int64? { + public var user_id: String? { get { _user_id?.value } - set { _user_id = newValue.map(AnyInt.init) } + set { _user_id = newValue.map(AnyString.init) } } /** @@ -22377,22 +27216,22 @@ public struct WriteScheduledPlan: SDKModel { */ public var enabled: Bool? - private var _look_id: AnyInt? + private var _look_id: AnyString? /** * Id of a look */ - public var look_id: Int64? { + public var look_id: String? { get { _look_id?.value } - set { _look_id = newValue.map(AnyInt.init) } + set { _look_id = newValue.map(AnyString.init) } } - private var _dashboard_id: AnyInt? + private var _dashboard_id: AnyString? /** * Id of a dashboard */ - public var dashboard_id: Int64? { + public var dashboard_id: String? { get { _dashboard_id?.value } - set { _dashboard_id = newValue.map(AnyInt.init) } + set { _dashboard_id = newValue.map(AnyString.init) } } private var _lookml_dashboard_id: AnyString? @@ -22567,13 +27406,13 @@ public struct WriteScheduledPlan: SDKModel { set { _inline_table_width = newValue.map(AnyInt.init) } } - public init(name: String? = nil, user_id: Int64? = nil, run_as_recipient: Bool? = nil, enabled: Bool? = nil, look_id: Int64? = nil, dashboard_id: Int64? = 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, query_id: 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, inline_table_width: Int64? = 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, query_id: 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, inline_table_width: Int64? = nil) { self._name = name.map(AnyString.init) - self._user_id = user_id.map(AnyInt.init) + self._user_id = user_id.map(AnyString.init) self.run_as_recipient = run_as_recipient self.enabled = enabled - self._look_id = look_id.map(AnyInt.init) - self._dashboard_id = dashboard_id.map(AnyInt.init) + self._look_id = look_id.map(AnyString.init) + self._dashboard_id = dashboard_id.map(AnyString.init) self._lookml_dashboard_id = lookml_dashboard_id.map(AnyString.init) self._filters_string = filters_string.map(AnyString.init) self._dashboard_filters = dashboard_filters.map(AnyString.init) @@ -22655,40 +27494,251 @@ public struct WriteSessionConfig: SDKModel { } /** - * Dynamic writeable type for SpaceBase 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 Setting removes: + * marketplace_site, embed_enabled */ -public struct WriteSpaceBase: SDKModel { +public struct WriteSetting: SDKModel { private enum CodingKeys : String, CodingKey { - case _name = "name" - case _parent_id = "parent_id" + case extension_framework_enabled + case extension_load_url_enabled + case marketplace_auto_install_enabled + case marketplace_automation + case marketplace_enabled + case marketplace_terms_accepted + case privatelabel_configuration + case custom_welcome_email + case onboarding_enabled + case _timezone = "timezone" + case allow_user_timezones + case data_connector_default_enabled + case _host_url = "host_url" + case override_warnings + case _email_domain_allowlist = "email_domain_allowlist" + case embed_cookieless_v2 + case embed_config } - private var _name: AnyString /** - * Unique Name + * Toggle extension framework on or off */ - public var name: String { - get { _name.value } - set { _name = AnyString.init(newValue) } + public var extension_framework_enabled: Bool? + + /** + * (DEPRECATED) Toggle extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. + */ + public var extension_load_url_enabled: Bool? + + /** + * (DEPRECATED) Toggle marketplace auto install on or off. Deprecated - do not use. Auto install can now be enabled via marketplace automation settings + */ + public var marketplace_auto_install_enabled: Bool? + + public var marketplace_automation: MarketplaceAutomation? + + /** + * Toggle marketplace on or off + */ + public var marketplace_enabled: Bool? + + /** + * 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. + */ + public var marketplace_terms_accepted: Bool? + + /** + * Dynamic writeable type for PrivatelabelConfiguration removes: + * logo_url, favicon_url + */ + public var privatelabel_configuration: WritePrivatelabelConfiguration? + + public var custom_welcome_email: CustomWelcomeEmail? + + /** + * Toggle onboarding on or off + */ + public var onboarding_enabled: Bool? + + private var _timezone: AnyString? + /** + * Change instance-wide default timezone + */ + public var timezone: String? { + get { _timezone?.value } + set { _timezone = newValue.map(AnyString.init) } } - private var _parent_id: AnyString? /** - * Id of Parent. If the parent id is null, this is a root-level entry + * Toggle user-specific timezones on or off */ - public var parent_id: String? { - get { _parent_id?.value } - set { _parent_id = newValue.map(AnyString.init) } + public var allow_user_timezones: Bool? + + /** + * Toggle default future connectors on or off + */ + public var data_connector_default_enabled: Bool? + + private var _host_url: AnyString? + /** + * Change the base portion of your Looker instance URL setting + */ + public var host_url: String? { + get { _host_url?.value } + set { _host_url = newValue.map(AnyString.init) } } - public init(name: String, parent_id: String? = nil) { - self._name = AnyString.init(name) - self._parent_id = parent_id.map(AnyString.init) + /** + * (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. + */ + public var override_warnings: Bool? + + private var _email_domain_allowlist: [AnyString]? + /** + * An array of Email Domain Allowlist of type string for Scheduled Content + */ + public var email_domain_allowlist: [String]? { + get { if let v = _email_domain_allowlist { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _email_domain_allowlist = v.map { AnyString.init($0) } } else { _email_domain_allowlist = nil } } } - public init(_ name: String, parent_id: String? = nil) { - self.init(name: name, parent_id: parent_id) + /** + * (DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value. + */ + public var embed_cookieless_v2: Bool? + + public var embed_config: EmbedConfig? + + 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: EmbedConfig? = 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 + self.marketplace_automation = marketplace_automation + self.marketplace_enabled = marketplace_enabled + self.marketplace_terms_accepted = marketplace_terms_accepted + self.privatelabel_configuration = privatelabel_configuration + self.custom_welcome_email = custom_welcome_email + self.onboarding_enabled = onboarding_enabled + self._timezone = timezone.map(AnyString.init) + self.allow_user_timezones = allow_user_timezones + self.data_connector_default_enabled = data_connector_default_enabled + self._host_url = host_url.map(AnyString.init) + self.override_warnings = override_warnings + if let v = email_domain_allowlist { _email_domain_allowlist = v.map { AnyString.init($0) } } else { _email_domain_allowlist = nil } + self.embed_cookieless_v2 = embed_cookieless_v2 + self.embed_config = embed_config + } + +} + +/** + * Dynamic writeable type for SshServer removes: + * ssh_server_id, finger_print, sha_finger_print, public_key, status + */ +public struct WriteSshServer: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _ssh_server_name = "ssh_server_name" + case _ssh_server_host = "ssh_server_host" + case _ssh_server_port = "ssh_server_port" + case _ssh_server_user = "ssh_server_user" + } + private var _ssh_server_name: AnyString? + /** + * The name to identify this SSH Server + */ + public var ssh_server_name: String? { + get { _ssh_server_name?.value } + set { _ssh_server_name = newValue.map(AnyString.init) } + } + + private var _ssh_server_host: AnyString? + /** + * The hostname or ip address of the SSH Server + */ + public var ssh_server_host: String? { + get { _ssh_server_host?.value } + set { _ssh_server_host = newValue.map(AnyString.init) } + } + + private var _ssh_server_port: AnyInt? + /** + * The port to connect to on the SSH Server + */ + public var ssh_server_port: Int64? { + get { _ssh_server_port?.value } + set { _ssh_server_port = newValue.map(AnyInt.init) } + } + + private var _ssh_server_user: AnyString? + /** + * The username used to connect to the SSH Server + */ + public var ssh_server_user: String? { + get { _ssh_server_user?.value } + set { _ssh_server_user = newValue.map(AnyString.init) } + } + + public init(ssh_server_name: String? = nil, ssh_server_host: String? = nil, ssh_server_port: Int64? = nil, ssh_server_user: String? = nil) { + self._ssh_server_name = ssh_server_name.map(AnyString.init) + self._ssh_server_host = ssh_server_host.map(AnyString.init) + self._ssh_server_port = ssh_server_port.map(AnyInt.init) + self._ssh_server_user = ssh_server_user.map(AnyString.init) + } + +} + +/** + * Dynamic writeable type for SshTunnel removes: + * tunnel_id, ssh_server_name, ssh_server_host, ssh_server_port, ssh_server_user, last_attempt, status + */ +public struct WriteSshTunnel: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _ssh_server_id = "ssh_server_id" + case _local_host_port = "local_host_port" + case _database_host = "database_host" + case _database_port = "database_port" + } + private var _ssh_server_id: AnyString? + /** + * SSH Server ID + */ + public var ssh_server_id: String? { + get { _ssh_server_id?.value } + set { _ssh_server_id = newValue.map(AnyString.init) } + } + + private var _local_host_port: AnyInt? + /** + * Localhost Port used by the Looker instance to connect to the remote DB + */ + public var local_host_port: Int64? { + get { _local_host_port?.value } + set { _local_host_port = newValue.map(AnyInt.init) } + } + + private var _database_host: AnyString? + /** + * Hostname or IP Address of the Database Server + */ + public var database_host: String? { + get { _database_host?.value } + set { _database_host = newValue.map(AnyString.init) } + } + + private var _database_port: AnyInt? + /** + * Port that the Database Server is listening on + */ + public var database_port: Int64? { + get { _database_port?.value } + set { _database_port = newValue.map(AnyInt.init) } + } + + public init(ssh_server_id: String? = nil, local_host_port: Int64? = nil, database_host: String? = nil, database_port: Int64? = nil) { + self._ssh_server_id = ssh_server_id.map(AnyString.init) + self._local_host_port = local_host_port.map(AnyInt.init) + self._database_host = database_host.map(AnyString.init) + self._database_port = database_port.map(AnyInt.init) } } @@ -22737,14 +27787,13 @@ public struct WriteTheme: SDKModel { /** * 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, display_name, email, embed_group_space_id, group_ids, id, looker_versions, personal_space_id, 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, url + * can, avatar_url, avatar_url_without_sizing, credentials_api3, credentials_embed, credentials_google, credentials_ldap, credentials_looker_openid, credentials_oidc, credentials_saml, credentials_totp, 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, url */ public struct WriteUser: SDKModel { private enum CodingKeys : String, CodingKey { case credentials_email case _first_name = "first_name" - case _home_space_id = "home_space_id" case _home_folder_id = "home_folder_id" case is_disabled case _last_name = "last_name" @@ -22767,15 +27816,6 @@ public struct WriteUser: SDKModel { set { _first_name = newValue.map(AnyString.init) } } - private var _home_space_id: AnyString? - /** - * ID string for user's home space - */ - public var home_space_id: String? { - get { _home_space_id?.value } - set { _home_space_id = newValue.map(AnyString.init) } - } - private var _home_folder_id: AnyString? /** * ID string for user's home folder @@ -22818,10 +27858,9 @@ public struct WriteUser: SDKModel { */ public var ui_state: StringDictionary? - public init(credentials_email: WriteCredentialsEmail? = nil, first_name: String? = nil, home_space_id: String? = nil, home_folder_id: String? = nil, is_disabled: Bool? = nil, last_name: String? = nil, locale: String? = nil, models_dir_validated: Bool? = nil, ui_state: StringDictionary? = nil) { + public init(credentials_email: WriteCredentialsEmail? = nil, first_name: String? = nil, home_folder_id: String? = nil, is_disabled: Bool? = nil, last_name: String? = nil, locale: String? = nil, models_dir_validated: Bool? = nil, ui_state: StringDictionary? = nil) { self.credentials_email = credentials_email self._first_name = first_name.map(AnyString.init) - self._home_space_id = home_space_id.map(AnyString.init) self._home_folder_id = home_folder_id.map(AnyString.init) self.is_disabled = is_disabled self._last_name = last_name.map(AnyString.init) @@ -22848,31 +27887,31 @@ public struct WriteUserAttribute: SDKModel { case user_can_edit case _hidden_value_domain_whitelist = "hidden_value_domain_whitelist" } - private var _name: AnyString? + private var _name: AnyString /** * Name of user attribute */ - public var name: String? { - get { _name?.value } - set { _name = newValue.map(AnyString.init) } + public var name: String { + get { _name.value } + set { _name = AnyString.init(newValue) } } - private var _label: AnyString? + private var _label: AnyString /** * Human-friendly label for user attribute */ - public var label: String? { - get { _label?.value } - set { _label = newValue.map(AnyString.init) } + public var label: String { + get { _label.value } + set { _label = AnyString.init(newValue) } } - private var _type: AnyString? + private var _type: AnyString /** * Type of user attribute ("string", "number", "datetime", "yesno", "zipcode") */ - public var type: String? { - get { _type?.value } - set { _type = newValue.map(AnyString.init) } + public var type: String { + get { _type.value } + set { _type = AnyString.init(newValue) } } private var _default_value: AnyString? @@ -22908,10 +27947,10 @@ public struct WriteUserAttribute: SDKModel { set { _hidden_value_domain_whitelist = newValue.map(AnyString.init) } } - public init(name: String? = nil, label: String? = nil, type: String? = nil, default_value: String? = nil, value_is_hidden: Bool? = nil, user_can_view: Bool? = nil, user_can_edit: Bool? = nil, hidden_value_domain_whitelist: String? = nil) { - self._name = name.map(AnyString.init) - self._label = label.map(AnyString.init) - self._type = type.map(AnyString.init) + public init(name: String, label: String, type: String, default_value: String? = nil, value_is_hidden: Bool? = nil, user_can_view: Bool? = nil, user_can_edit: Bool? = nil, hidden_value_domain_whitelist: String? = nil) { + self._name = AnyString.init(name) + self._label = AnyString.init(label) + self._type = AnyString.init(type) self._default_value = default_value.map(AnyString.init) self.value_is_hidden = value_is_hidden self.user_can_view = user_can_view @@ -22919,6 +27958,10 @@ public struct WriteUserAttribute: SDKModel { self._hidden_value_domain_whitelist = hidden_value_domain_whitelist.map(AnyString.init) } + public init(_ name: String, _ label: String, _ type: String, default_value: String? = nil, value_is_hidden: Bool? = nil, user_can_view: Bool? = nil, user_can_edit: Bool? = nil, hidden_value_domain_whitelist: String? = nil) { + self.init(name: name, label: label, type: type, default_value: default_value, value_is_hidden: value_is_hidden, user_can_view: user_can_view, user_can_edit: user_can_edit, hidden_value_domain_whitelist: hidden_value_domain_whitelist) + } + } /** diff --git a/swift/looker/sdk/streams.swift b/swift/looker/sdk/streams.swift index baf780c60..1feeba2c2 100644 --- a/swift/looker/sdk/streams.swift +++ b/swift/looker/sdk/streams.swift @@ -25,17 +25,300 @@ */ /** - * 382 API methods + * 461 API methods */ -/// NOTE: Do not edit this file generated by Looker SDK Codegen for API 3.1 +/// NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0 import Foundation @available(OSX 10.15, *) open class LookerSDKStream: APIMethods { + // MARK Alert: Alert + + /** + * Follow an alert. + * + * POST /alerts/{alert_id}/follow -> Voidable + */ + public func follow_alert( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.post("/alerts/\(path_alert_id)/follow", nil, nil, options) + return result + } + + /** + * Unfollow an alert. + * + * DELETE /alerts/{alert_id}/follow -> Voidable + */ + public func unfollow_alert( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.delete("/alerts/\(path_alert_id)/follow", nil, nil, options) + return result + } + + /** + * ### Search Alerts + * + * GET /alerts/search -> [Alert] + */ + public func search_alerts( + /** + * @param {Int64} limit (Optional) Number of results to return (used with `offset`). + */ + limit: Int64? = nil, + /** + * @param {Int64} offset (Optional) Number of results to skip before returning any (used with `limit`). + */ + offset: Int64? = nil, + /** + * @param {String} group_by (Optional) Dimension by which to order the results(`dashboard` | `owner`) + */ + group_by: String? = nil, + /** + * @param {String} fields (Optional) Requested fields. + */ + fields: String? = nil, + /** + * @param {Bool} disabled (Optional) Filter on returning only enabled or disabled alerts. + */ + disabled: Bool? = nil, + /** + * @param {String} frequency (Optional) Filter on alert frequency, such as: monthly, weekly, daily, hourly, minutes + */ + frequency: String? = nil, + /** + * @param {Bool} condition_met (Optional) Filter on whether the alert has met its condition when it last executed + */ + condition_met: Bool? = nil, + /** + * @param {String} last_run_start (Optional) Filter on the start range of the last time the alerts were run. Example: 2021-01-01T01:01:01-08:00. + */ + last_run_start: String? = nil, + /** + * @param {String} last_run_end (Optional) Filter on the start range of the last time the alerts were run. Example: 2021-01-01T01:01:01-08:00. + */ + last_run_end: String? = nil, + /** + * @param {Bool} all_owners (Admin only) (Optional) Filter for all owners. + */ + all_owners: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/alerts/search", + ["limit": limit, "offset": offset, "group_by": group_by, "fields": fields, "disabled": disabled as Any?, "frequency": frequency, "condition_met": condition_met as Any?, "last_run_start": last_run_start, "last_run_end": last_run_end, "all_owners": all_owners as Any?], nil, options) + return result + } + + /** + * ### Get an alert by a given alert ID + * + * GET /alerts/{alert_id} -> Alert + */ + public func get_alert( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.get("/alerts/\(path_alert_id)", nil, nil, options) + return result + } + + /** + * ### Update an alert + * # Required fields: `owner_id`, `field`, `destinations`, `comparison_type`, `threshold`, `cron` + * # + * + * PUT /alerts/{alert_id} -> Alert + */ + public func update_alert( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + /** + * @param {WriteAlert} body + */ + _ body: WriteAlert, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.put("/alerts/\(path_alert_id)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Update select alert fields + * # Available fields: `owner_id`, `is_disabled`, `disabled_reason`, `is_public`, `threshold` + * # + * + * PATCH /alerts/{alert_id} -> Alert + */ + public func update_alert_field( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + /** + * @param {AlertPatch} body + */ + _ body: AlertPatch, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.patch("/alerts/\(path_alert_id)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Delete an alert by a given alert ID + * + * DELETE /alerts/{alert_id} -> Voidable + */ + public func delete_alert( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.delete("/alerts/\(path_alert_id)", nil, nil, options) + return result + } + + /** + * ### Create a new alert and return details of the newly created object + * + * Required fields: `field`, `destinations`, `comparison_type`, `threshold`, `cron` + * + * Example Request: + * Run alert on dashboard element '103' at 5am every day. Send an email to 'test@test.com' if inventory for Los Angeles (using dashboard filter `Warehouse Name`) is lower than 1,000 + * ``` + * { + * "cron": "0 5 * * *", + * "custom_title": "Alert when LA inventory is low", + * "dashboard_element_id": 103, + * "applied_dashboard_filters": [ + * { + * "filter_title": "Warehouse Name", + * "field_name": "distribution_centers.name", + * "filter_value": "Los Angeles CA", + * "filter_description": "is Los Angeles CA" + * } + * ], + * "comparison_type": "LESS_THAN", + * "destinations": [ + * { + * "destination_type": "EMAIL", + * "email_address": "test@test.com" + * } + * ], + * "field": { + * "title": "Number on Hand", + * "name": "inventory_items.number_on_hand" + * }, + * "is_disabled": false, + * "is_public": true, + * "threshold": 1000 + * } + * ``` + * + * POST /alerts -> Alert + */ + public func create_alert( + /** + * @param {WriteAlert} body + */ + _ body: WriteAlert, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/alerts", nil, try! self.encode(body), options) + return result + } + + /** + * ### Enqueue an Alert by ID + * + * POST /alerts/{alert_id}/enqueue -> Voidable + */ + public func enqueue_alert( + /** + * @param {String} alert_id ID of an alert + */ + _ alert_id: String, + /** + * @param {Bool} force Whether to enqueue an alert again if its already running. + */ + force: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_id = encodeParam(alert_id) + let result: SDKResponse = self.post("/alerts/\(path_alert_id)/enqueue", + ["force": force as Any?], nil, options) + return result + } + + /** + * # Alert Notifications. + * The endpoint returns all the alert notifications received by the user on email in the past 7 days. It also returns whether the notifications have been read by the user. + * + * GET /alert_notifications -> [AlertNotifications] + */ + public func alert_notifications( + /** + * @param {Int64} limit (Optional) Number of results to return (used with `offset`). + */ + limit: Int64? = nil, + /** + * @param {Int64} offset (Optional) Number of results to skip before returning any (used with `limit`). + */ + offset: Int64? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/alert_notifications", + ["limit": limit, "offset": offset], nil, options) + return result + } + + /** + * # Reads a Notification + * The endpoint marks a given alert notification as read by the user, in case it wasn't already read. The AlertNotification model is updated for this purpose. It returns the notification as a response. + * + * PATCH /alert_notifications/{alert_notification_id} -> AlertNotifications + */ + public func read_alert_notification( + /** + * @param {String} alert_notification_id ID of a notification + */ + _ alert_notification_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_alert_notification_id = encodeParam(alert_notification_id) + let result: SDKResponse = self.patch("/alert_notifications/\(path_alert_notification_id)", nil, nil, options) + return result + } + + + // MARK ApiAuth: API Authentication /** @@ -110,9 +393,9 @@ open class LookerSDKStream: APIMethods { */ public func login_user( /** - * @param {Int64} user_id Id of user. + * @param {String} user_id Id of user. */ - _ user_id: Int64, + _ user_id: String, /** * @param {Bool} associative When true (default), API calls using the returned access_token are attributed to the admin user who created the access_token. When false, API activity is attributed to the user the access_token runs as. False requires a looker license. */ @@ -139,1420 +422,1539 @@ open class LookerSDKStream: APIMethods { - // MARK Auth: Manage User Authentication Configuration + // MARK Artifact: Artifact Storage /** - * ### Create Signed Embed URL - * - * Creates a signed embed URL and cryptographically signs it with an embed secret. - * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. - * Do not make any modifications to the returned URL - any change may invalidate the signature and - * cause the URL to fail to load a Looker embed session. - * - * A signed embed URL can only be **used once**. After the URL has been used to request a page from the - * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent - * 'replay attacks'. - * - * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. - * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. - * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option - * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. - * - * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) - * and the lists of models and permissions assigned to the embed user. - * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. - * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. - * - * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. - * - * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the - * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * Get the maximum configured size of the entire artifact store, and the currently used storage in bytes. * - * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. - * - * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. - * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, - * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. - * - * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. - * - * #### Security Note - * Protect this signed URL as you would an access token or password credentials - do not write - * it to disk, do not pass it to a third party, and only pass it through a secure HTTPS - * encrypted transport. + * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * - * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled - * - * POST /embed/sso_url -> EmbedUrlResponse + * GET /artifact/usage -> ArtifactUsage */ - public func create_sso_embed_url( + public func artifact_usage( /** - * @param {EmbedSsoParams} body + * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields */ - _ body: EmbedSsoParams, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/embed/sso_url", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/artifact/usage", + ["fields": fields], nil, options) return result } /** - * ### Get the LDAP configuration. - * - * Looker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server. - * LDAP setup requires coordination with an administrator of that directory server. - * - * Only Looker administrators can read and update the LDAP configuration. - * - * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. - * - * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * Get all artifact namespaces and the count of artifacts in each namespace * - * LDAP is enabled or disabled for Looker using the **enabled** field. - * - * Looker will never return an **auth_password** field. That value can be set, but never retrieved. - * - * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * GET /ldap_config -> LDAPConfig + * GET /artifact/namespaces -> [ArtifactNamespace] */ - public func ldap_config( + public func artifact_namespaces( + /** + * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields + */ + fields: String? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit) + */ + offset: Int64? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/ldap_config", nil, nil, options) + let result: SDKResponse = self.get("/artifact/namespaces", + ["fields": fields, "limit": limit, "offset": offset], nil, options) return result } /** - * ### Update the LDAP configuration. - * - * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. + * ### Return the value of an artifact * - * Only Looker administrators can read and update the LDAP configuration. - * - * LDAP is enabled or disabled for Looker using the **enabled** field. + * The MIME type for the API response is set to the `content_type` of the value * - * It is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally. + * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. + * GET /artifact/{namespace}/value -> String + */ + public func artifact_value( + /** + * @param {String} namespace Artifact storage namespace + */ + _ namespace: String, + /** + * @param {String} key Artifact storage key. Namespace + Key must be unique + */ + key: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_namespace = encodeParam(namespace) + let result: SDKResponse = self.get("/artifact/\(path_namespace)/value", + ["key": key], nil, options) + return result + } + + /** + * Remove *all* artifacts from a namespace. Purged artifacts are permanently deleted * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * PATCH /ldap_config -> LDAPConfig + * DELETE /artifact/{namespace}/purge -> Voidable */ - public func update_ldap_config( + public func purge_artifacts( /** - * @param {WriteLDAPConfig} body + * @param {String} namespace Artifact storage namespace */ - _ body: WriteLDAPConfig, + _ namespace: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/ldap_config", nil, try! self.encode(body), options) + let path_namespace = encodeParam(namespace) + let result: SDKResponse = self.delete("/artifact/\(path_namespace)/purge", nil, nil, options) return result } /** - * ### Test the connection settings for an LDAP configuration. + * ### Search all key/value pairs in a namespace for matching criteria. * - * This tests that the connection is possible given a connection_host and connection_port. + * Returns an array of artifacts matching the specified search criteria. * - * **connection_host** and **connection_port** are required. **connection_tls** is optional. + * Key search patterns use case-insensitive matching and can contain `%` and `_` as SQL LIKE pattern match wildcard expressions. * - * Example: - * ```json - * { - * "connection_host": "ldap.example.com", - * "connection_port": "636", - * "connection_tls": true - * } - * ``` + * The parameters `min_size` and `max_size` can be used individually or together. * - * No authentication to the LDAP server is attempted. + * - `min_size` finds artifacts with sizes greater than or equal to its value + * - `max_size` finds artifacts with sizes less than or equal to its value + * - using both parameters restricts the minimum and maximum size range for artifacts * - * The active LDAP settings are not modified. + * **NOTE**: Artifacts are always returned in alphanumeric order by key. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Get a **single artifact** by namespace and key with [`artifact`](#!/Artifact/artifact) * - * PUT /ldap_config/test_connection -> LDAPConfigTestResult + * **Note**: The artifact storage API can only be used by Looker-built extensions. + * + * GET /artifact/{namespace}/search -> [Artifact] */ - public func test_ldap_config_connection( + public func search_artifacts( /** - * @param {WriteLDAPConfig} body + * @param {String} namespace Artifact storage namespace */ - _ body: WriteLDAPConfig, + _ namespace: String, + /** + * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields + */ + fields: String? = nil, + /** + * @param {String} key Key pattern to match + */ + key: String? = nil, + /** + * @param {String} user_ids Ids of users who created or updated the artifact (comma-delimited list) + */ + user_ids: String? = nil, + /** + * @param {Int64} min_size Minimum storage size of the artifact + */ + min_size: Int64? = nil, + /** + * @param {Int64} max_size Maximum storage size of the artifact + */ + max_size: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit) + */ + offset: Int64? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_connection", nil, try! self.encode(body), options) + let path_namespace = encodeParam(namespace) + let result: SDKResponse = self.get("/artifact/\(path_namespace)/search", + ["fields": fields, "key": key, "user_ids": user_ids, "min_size": min_size, "max_size": max_size, "limit": limit, "offset": offset], nil, options) return result } /** - * ### Test the connection authentication settings for an LDAP configuration. - * - * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. - * - * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. - * - * Example: - * ```json - * { - * "connection_host": "ldap.example.com", - * "connection_port": "636", - * "connection_tls": true, - * "auth_username": "cn=looker,dc=example,dc=com", - * "auth_password": "secret" - * } - * ``` - * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * ### Get one or more artifacts * - * The active LDAP settings are not modified. + * Returns an array of artifacts matching the specified key value(s). * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * PUT /ldap_config/test_auth -> LDAPConfigTestResult + * GET /artifact/{namespace} -> [Artifact] */ - public func test_ldap_config_auth( + public func artifact( /** - * @param {WriteLDAPConfig} body + * @param {String} namespace Artifact storage namespace */ - _ body: WriteLDAPConfig, + _ namespace: String, + /** + * @param {String} key Comma-delimited list of keys. Wildcards not allowed. + */ + _ key: String, + /** + * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields + */ + fields: String? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit) + */ + offset: Int64? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_auth", nil, try! self.encode(body), options) + let path_namespace = encodeParam(namespace) + let result: SDKResponse = self.get("/artifact/\(path_namespace)", + ["key": key, "fields": fields, "limit": limit, "offset": offset], nil, options) return result } /** - * ### Test the user authentication settings for an LDAP configuration without authenticating the user. - * - * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. - * - * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. - * - * **test_ldap_user** is required. + * ### Delete one or more artifacts * - * The active LDAP settings are not modified. + * To avoid rate limiting on deletion requests, multiple artifacts can be deleted at the same time by using a comma-delimited list of artifact keys. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * **Note**: The artifact storage API can only be used by Looker-built extensions. * - * PUT /ldap_config/test_user_info -> LDAPConfigTestResult + * DELETE /artifact/{namespace} -> Voidable */ - public func test_ldap_config_user_info( + public func delete_artifact( /** - * @param {WriteLDAPConfig} body + * @param {String} namespace Artifact storage namespace */ - _ body: WriteLDAPConfig, + _ namespace: String, + /** + * @param {String} key Comma-delimited list of keys. Wildcards not allowed. + */ + _ key: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_user_info", nil, try! self.encode(body), options) + let path_namespace = encodeParam(namespace) + let result: SDKResponse = self.delete("/artifact/\(path_namespace)", + ["key": key], nil, options) return result } /** - * ### Test the user authentication settings for an LDAP configuration. + * ### Create or update one or more artifacts * - * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * Only `key` and `value` are required to _create_ an artifact. + * To _update_ an artifact, its current `version` value must be provided. * - * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * In the following example `body` payload, `one` and `two` are existing artifacts, and `three` is new: * - * **test_ldap_user** and **test_ldap_password** are required. + * ```json + * [ + * { "key": "one", "value": "[ \"updating\", \"existing\", \"one\" ]", "version": 10, "content_type": "application/json" }, + * { "key": "two", "value": "updating existing two", "version": 20 }, + * { "key": "three", "value": "creating new three" }, + * ] + * ``` * - * The active LDAP settings are not modified. + * Notes for this body: * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * - The `value` for `key` **one** is a JSON payload, so a `content_type` override is needed. This override must be done **every** time a JSON value is set. + * - The `version` values for **one** and **two** mean they have been saved 10 and 20 times, respectively. + * - If `version` is **not** provided for an existing artifact, the entire request will be refused and a `Bad Request` response will be sent. + * - If `version` is provided for an artifact, it is only used for helping to prevent inadvertent data overwrites. It cannot be used to **set** the version of an artifact. The Looker server controls `version`. + * - We suggest encoding binary values as base64. Because the MIME content type for base64 is detected as plain text, also provide `content_type` to correctly indicate the value's type for retrieval and client-side processing. * - * PUT /ldap_config/test_user_auth -> LDAPConfigTestResult + * Because artifacts are stored encrypted, the same value can be written multiple times (provided the correct `version` number is used). Looker does not examine any values stored in the artifact store, and only decrypts when sending artifacts back in an API response. + * + * **Note**: The artifact storage API can only be used by Looker-built extensions. + * + * PUT /artifacts/{namespace} -> [Artifact] */ - public func test_ldap_config_user_auth( + public func update_artifacts( /** - * @param {WriteLDAPConfig} body + * @param {String} namespace Artifact storage namespace */ - _ body: WriteLDAPConfig, + _ namespace: String, + /** + * @param {[UpdateArtifact]} body + */ + _ body: [UpdateArtifact], + /** + * @param {String} fields Comma-delimited names of fields to return in responses. Omit for all fields + */ + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/ldap_config/test_user_auth", nil, try! self.encode(body), options) + let path_namespace = encodeParam(namespace) + let result: SDKResponse = self.put("/artifacts/\(path_namespace)", + ["fields": fields], try! self.encode(body), options) return result } + + + // MARK Auth: Manage User Authentication Configuration + /** - * ### Get the OIDC configuration. - * - * Looker can be optionally configured to authenticate users against an OpenID Connect (OIDC) - * authentication server. OIDC setup requires coordination with an administrator of that server. - * - * Only Looker administrators can read and update the OIDC configuration. - * - * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. - * - * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * ### Create an embed secret using the specified information. * - * OIDC is enabled or disabled for Looker using the **enabled** field. + * The value of the `secret` field will be set by Looker and returned. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled * - * GET /oidc_config -> OIDCConfig + * POST /embed_config/secrets -> EmbedSecret */ - public func oidc_config( + public func create_embed_secret( + /** + * @param {WriteEmbedSecret} body + */ + body: WriteEmbedSecret?, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/oidc_config", nil, nil, options) + let result: SDKResponse = self.post("/embed_config/secrets", nil, try! self.encode(body), options) return result } /** - * ### Update the OIDC configuration. - * - * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. - * - * Only Looker administrators can read and update the OIDC configuration. - * - * OIDC is enabled or disabled for Looker using the **enabled** field. - * - * It is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally. + * ### Delete an embed secret. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled * - * PATCH /oidc_config -> OIDCConfig + * DELETE /embed_config/secrets/{embed_secret_id} -> String */ - public func update_oidc_config( + public func delete_embed_secret( /** - * @param {WriteOIDCConfig} body + * @param {String} embed_secret_id Id of Embed Secret */ - _ body: WriteOIDCConfig, + _ embed_secret_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/oidc_config", nil, try! self.encode(body), options) + let path_embed_secret_id = encodeParam(embed_secret_id) + let result: SDKResponse = self.delete("/embed_config/secrets/\(path_embed_secret_id)", nil, nil, options) return result } /** - * ### Get a OIDC test configuration by test_slug. + * ### Create Signed Embed URL * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Creates a signed embed URL and cryptographically signs it with an embed secret. + * This signed URL can then be used to instantiate a Looker embed session in a PBL web application. + * Do not make any modifications to the returned URL - any change may invalidate the signature and + * cause the URL to fail to load a Looker embed session. * - * GET /oidc_test_configs/{test_slug} -> OIDCConfig + * A signed embed URL can only be **used once**. After the URL has been used to request a page from the + * Looker server, it is invalid. Future requests using the same URL will fail. This is to prevent + * 'replay attacks'. + * + * The `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params. + * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`. + * The best way to obtain this `target_url` is to navigate to the desired Looker page in your web browser and use the "Get embed URL" menu option + * to copy it to your clipboard and paste it into the `target_url` property as a quoted string value in this API request. + * + * Permissions for the embed user are defined by the groups in which the embed user is a member (`group_ids` property) + * and the lists of models and permissions assigned to the embed user. + * At a minimum, you must provide values for either the `group_ids` property, or **both** the models and permissions properties. + * These properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions. + * + * The embed user's access is the union of permissions granted by the `group_ids`, `models`, and `permissions` properties. + * + * This function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the + * embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL. + * + * To diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`. + * + * The `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance. + * if not specified, the URL will be signed using the most recent active signing secret. If there is no active secret for signing embed urls, + * a default secret will be created. This default secret is encrypted using HMAC/SHA-256. + * + * The `embed_domain` parameter is optional. If specified and valid, the domain will be added to the embed domain allowlist if it is missing. + * + * #### Security Note + * Protect this signed URL as you would an access token or password credentials - do not write + * it to disk, do not pass it to a third party, and only pass it through a secure HTTPS + * encrypted transport. + * + * + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * POST /embed/sso_url -> EmbedUrlResponse */ - public func oidc_test_config( + public func create_sso_embed_url( /** - * @param {String} test_slug Slug of test config + * @param {EmbedSsoParams} body */ - _ test_slug: String, + _ body: EmbedSsoParams, options: ITransportSettings? = nil ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.get("/oidc_test_configs/\(path_test_slug)", nil, nil, options) + let result: SDKResponse = self.post("/embed/sso_url", nil, try! self.encode(body), options) return result } /** - * ### Delete a OIDC test configuration. + * ### Create an Embed URL * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Creates an embed URL that runs as the Looker user making this API call. ("Embed as me") + * This embed URL can then be used to instantiate a Looker embed session in a + * "Powered by Looker" (PBL) web application. * - * DELETE /oidc_test_configs/{test_slug} -> String + * This is similar to Private Embedding (https://cloud.google.com/looker/docs/r/admin/embed/private-embed). Instead of + * of logging into the Web UI to authenticate, the user has already authenticated against the API to be able to + * make this call. However, unlike Private Embed where the user has access to any other part of the Looker UI, + * the embed web session created by requesting the EmbedUrlResponse.url in a browser only has access to + * content visible under the `/embed` context. + * + * An embed URL can only be used once, and must be used within 5 minutes of being created. After it + * has been used to request a page from the Looker server, the URL is invalid. Future requests using + * the same URL will fail. This is to prevent 'replay attacks'. + * + * The `target_url` property must be a complete URL of a Looker Embedded UI page - scheme, hostname, path starting with "/embed" and query params. + * To load a dashboard with id 56 and with a filter of `Date=1 years`, the looker Embed URL would look like `https://myname.looker.com/embed/dashboards/56?Date=1%20years`. + * The best way to obtain this target_url is to navigate to the desired Looker page in your web browser, + * copy the URL shown in the browser address bar, insert "/embed" after the host/port, and paste it into the `target_url` property as a quoted string value in this API request. + * + * #### Security Note + * Protect this signed URL as you would an access token or password credentials - do not write + * it to disk, do not pass it to a third party, and only pass it through a secure HTTPS + * encrypted transport. + * + * + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * POST /embed/token_url/me -> EmbedUrlResponse */ - public func delete_oidc_test_config( + public func create_embed_url_as_me( /** - * @param {String} test_slug Slug of test config + * @param {EmbedParams} body */ - _ test_slug: String, + _ body: EmbedParams, options: ITransportSettings? = nil ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.delete("/oidc_test_configs/\(path_test_slug)", nil, nil, options) + let result: SDKResponse = self.post("/embed/token_url/me", nil, try! self.encode(body), options) return result } /** - * ### Create a OIDC test configuration. + * ### Acquire a cookieless embed session. * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * The acquire session endpoint negates the need for signing the embed url and passing it as a parameter + * to the embed login. This endpoint accepts an embed user definition and creates or updates it. This is + * similar behavior to the embed SSO login as they both can create and update embed user data. * - * POST /oidc_test_configs -> OIDCConfig + * The endpoint also accepts an optional `session_reference_token`. If present and the session has not expired + * and the credentials match the credentials for the embed session, a new authentication token will be + * generated. This allows the embed session to attach a new embedded IFRAME to the embed session. Note that + * the session is NOT extended in this scenario. In other words the session_length parameter is ignored. + * + * **IMPORTANT:** If the `session_reference_token` is provided and the session has NOT expired, the embed user + * is NOT updated. This is done for performance reasons and to support the embed SSO usecase where the + * first IFRAME created on a page uses a signed url and subsequently created IFRAMEs do not. + * + * If the `session_reference_token` is provided but the session has expired, the token will be ignored and a + * new embed session will be created. Note that the embed user definition will be updated in this scenario. + * + * If the credentials do not match the credentials associated with an exisiting session_reference_token, a + * 404 will be returned. + * + * The endpoint returns the following: + * - Authentication token - a token that is passed to `/embed/login` endpoint that creates or attaches to the + * embed session. This token can be used once and has a lifetime of 30 seconds. + * - Session reference token - a token that lives for the length of the session. This token is used to + * generate new api and navigation tokens OR create new embed IFRAMEs. + * - Api token - lives for 10 minutes. The Looker client will ask for this token once it is loaded into the + * iframe. + * - Navigation token - lives for 10 minutes. The Looker client will ask for this token once it is loaded into + * the iframe. + * + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * POST /embed/cookieless_session/acquire -> EmbedCookielessSessionAcquireResponse */ - public func create_oidc_test_config( + public func acquire_embed_cookieless_session( /** - * @param {WriteOIDCConfig} body + * @param {EmbedCookielessSessionAcquire} body */ - _ body: WriteOIDCConfig, + _ body: EmbedCookielessSessionAcquire, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/oidc_test_configs", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/embed/cookieless_session/acquire", nil, try! self.encode(body), options) return result } /** - * ### Get password config. + * ### Delete cookieless embed session * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * This will delete the session associated with the given session reference token. Calling this endpoint will result + * in the session and session reference data being cleared from the system. This endpoint can be used to log an embed + * user out of the Looker instance. * - * GET /password_config -> PasswordConfig + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * DELETE /embed/cookieless_session/{session_reference_token} -> String */ - public func password_config( + public func delete_embed_cookieless_session( + /** + * @param {String} session_reference_token Embed session reference token + */ + _ session_reference_token: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/password_config", nil, nil, options) + let path_session_reference_token = encodeParam(session_reference_token) + let result: SDKResponse = self.delete("/embed/cookieless_session/\(path_session_reference_token)", nil, nil, options) return result } /** - * ### Update password config. + * ### Generate api and navigation tokens for a cookieless embed session * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * The generate tokens endpoint is used to create new tokens of type: + * - Api token. + * - Navigation token. + * The generate tokens endpoint should be called every time the Looker client asks for a token (except for the + * first time when the tokens returned by the acquire_session endpoint should be used). * - * PATCH /password_config -> PasswordConfig + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * PUT /embed/cookieless_session/generate_tokens -> EmbedCookielessSessionGenerateTokensResponse */ - public func update_password_config( + public func generate_tokens_for_cookieless_session( /** - * @param {WritePasswordConfig} body + * @param {EmbedCookielessSessionGenerateTokens} body */ - _ body: WritePasswordConfig, + _ body: EmbedCookielessSessionGenerateTokens, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/password_config", nil, try! self.encode(body), options) + let result: SDKResponse = self.put("/embed/cookieless_session/generate_tokens", nil, try! self.encode(body), options) return result } /** - * ### Force all credentials_email users to reset their login passwords upon their next login. + * ### Get the LDAP configuration. + * + * Looker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server. + * LDAP setup requires coordination with an administrator of that directory server. + * + * Only Looker administrators can read and update the LDAP configuration. + * + * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. + * + * Looker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * + * LDAP is enabled or disabled for Looker using the **enabled** field. + * + * Looker will never return an **auth_password** field. That value can be set, but never retrieved. + * + * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PUT /password_config/force_password_reset_at_next_login_for_all_users -> String + * GET /ldap_config -> LDAPConfig */ - public func force_password_reset_at_next_login_for_all_users( + public func ldap_config( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/password_config/force_password_reset_at_next_login_for_all_users", nil, nil, options) + let result: SDKResponse = self.get("/ldap_config", nil, nil, options) return result } /** - * ### Get the SAML configuration. + * ### Update the LDAP configuration. * - * Looker can be optionally configured to authenticate users against a SAML authentication server. - * SAML setup requires coordination with an administrator of that server. + * Configuring LDAP impacts authentication for all users. This configuration should be done carefully. * - * Only Looker administrators can read and update the SAML configuration. + * Only Looker administrators can read and update the LDAP configuration. * - * Configuring SAML impacts authentication for all users. This configuration should be done carefully. + * LDAP is enabled or disabled for Looker using the **enabled** field. * - * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * It is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally. * - * SAML is enabled or disabled for Looker using the **enabled** field. + * See the [Looker LDAP docs](https://cloud.google.com/looker/docs/r/api/ldap_setup) for additional information. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /saml_config -> SamlConfig + * PATCH /ldap_config -> LDAPConfig */ - public func saml_config( + public func update_ldap_config( + /** + * @param {WriteLDAPConfig} body + */ + _ body: WriteLDAPConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/saml_config", nil, nil, options) + let result: SDKResponse = self.patch("/ldap_config", nil, try! self.encode(body), options) return result } /** - * ### Update the SAML configuration. + * ### Test the connection settings for an LDAP configuration. * - * Configuring SAML impacts authentication for all users. This configuration should be done carefully. + * This tests that the connection is possible given a connection_host and connection_port. * - * Only Looker administrators can read and update the SAML configuration. + * **connection_host** and **connection_port** are required. **connection_tls** is optional. * - * SAML is enabled or disabled for Looker using the **enabled** field. + * Example: + * ```json + * { + * "connection_host": "ldap.example.com", + * "connection_port": "636", + * "connection_tls": true + * } + * ``` * - * It is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally. + * No authentication to the LDAP server is attempted. + * + * The active LDAP settings are not modified. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PATCH /saml_config -> SamlConfig + * PUT /ldap_config/test_connection -> LDAPConfigTestResult */ - public func update_saml_config( + public func test_ldap_config_connection( /** - * @param {WriteSamlConfig} body + * @param {WriteLDAPConfig} body */ - _ body: WriteSamlConfig, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/saml_config", nil, try! self.encode(body), options) + let result: SDKResponse = self.put("/ldap_config/test_connection", nil, try! self.encode(body), options) return result } /** - * ### Get a SAML test configuration by test_slug. + * ### Test the connection authentication settings for an LDAP configuration. + * + * This tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information. + * + * **connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional. + * + * Example: + * ```json + * { + * "connection_host": "ldap.example.com", + * "connection_port": "636", + * "connection_tls": true, + * "auth_username": "cn=looker,dc=example,dc=com", + * "auth_password": "secret" + * } + * ``` + * + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * + * The active LDAP settings are not modified. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /saml_test_configs/{test_slug} -> SamlConfig + * PUT /ldap_config/test_auth -> LDAPConfigTestResult */ - public func saml_test_config( + public func test_ldap_config_auth( /** - * @param {String} test_slug Slug of test config + * @param {WriteLDAPConfig} body */ - _ test_slug: String, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.get("/saml_test_configs/\(path_test_slug)", nil, nil, options) + let result: SDKResponse = self.put("/ldap_config/test_auth", nil, try! self.encode(body), options) return result } /** - * ### Delete a SAML test configuration. + * ### Test the user authentication settings for an LDAP configuration without authenticating the user. + * + * This test will let you easily test the mapping for user properties and roles for any user withoutneeding to authenticate as that user. + * + * This test accepts a full LDAP configuration along with a username and attempts to find the full infofor the user from the LDAP server without actually authenticating the user. So, user password is notrequired.The configuration is validated before attempting to contact the server. + * + * **test_ldap_user** is required. + * + * The active LDAP settings are not modified. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * DELETE /saml_test_configs/{test_slug} -> String + * PUT /ldap_config/test_user_info -> LDAPConfigTestResult */ - public func delete_saml_test_config( + public func test_ldap_config_user_info( /** - * @param {String} test_slug Slug of test config + * @param {WriteLDAPConfig} body */ - _ test_slug: String, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let path_test_slug = encodeParam(test_slug) - let result: SDKResponse = self.delete("/saml_test_configs/\(path_test_slug)", nil, nil, options) + let result: SDKResponse = self.put("/ldap_config/test_user_info", nil, try! self.encode(body), options) return result } /** - * ### Create a SAML test configuration. + * ### Test the user authentication settings for an LDAP configuration. + * + * This test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication. + * + * Looker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test. + * + * **test_ldap_user** and **test_ldap_password** are required. + * + * The active LDAP settings are not modified. * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /saml_test_configs -> SamlConfig + * PUT /ldap_config/test_user_auth -> LDAPConfigTestResult */ - public func create_saml_test_config( + public func test_ldap_config_user_auth( /** - * @param {WriteSamlConfig} body + * @param {WriteLDAPConfig} body */ - _ body: WriteSamlConfig, + _ body: WriteLDAPConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/saml_test_configs", nil, try! self.encode(body), options) + let result: SDKResponse = self.put("/ldap_config/test_user_auth", nil, try! self.encode(body), options) return result } /** - * ### Parse the given xml as a SAML IdP metadata document and return the result. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Registers a mobile device. + * # Required fields: [:device_token, :device_type] * - * POST /parse_saml_idp_metadata -> SamlMetadataParseResult + * POST /mobile/device -> MobileToken */ - public func parse_saml_idp_metadata( + public func register_mobile_device( /** - * @param {String} body + * @param {WriteMobileToken} body */ - _ body: String, + _ body: WriteMobileToken, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/parse_saml_idp_metadata", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/mobile/device", nil, try! self.encode(body), options) return result } /** - * ### Fetch the given url and parse it as a SAML IdP metadata document and return the result. - * Note that this requires that the url be public or at least at a location where the Looker instance - * can fetch it without requiring any special authentication. - * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * ### Updates the mobile device registration * - * POST /fetch_and_parse_saml_idp_metadata -> SamlMetadataParseResult + * PATCH /mobile/device/{device_id} -> MobileToken */ - public func fetch_and_parse_saml_idp_metadata( + public func update_mobile_device_registration( /** - * @param {String} body + * @param {String} device_id Unique id of the device. */ - _ body: String, + _ device_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/fetch_and_parse_saml_idp_metadata", nil, try! self.encode(body), options) + let path_device_id = encodeParam(device_id) + let result: SDKResponse = self.patch("/mobile/device/\(path_device_id)", nil, nil, options) return result } /** - * ### Get session config. + * ### Deregister a mobile device. * - * GET /session_config -> SessionConfig + * DELETE /mobile/device/{device_id} -> Voidable */ - public func session_config( + public func deregister_mobile_device( + /** + * @param {String} device_id Unique id of the device. + */ + _ device_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/session_config", nil, nil, options) + let path_device_id = encodeParam(device_id) + let result: SDKResponse = self.delete("/mobile/device/\(path_device_id)", nil, nil, options) return result } /** - * ### Update session config. + * ### List All OAuth Client Apps * - * PATCH /session_config -> SessionConfig + * Lists all applications registered to use OAuth2 login with this Looker instance, including + * enabled and disabled apps. + * + * Results are filtered to include only the apps that the caller (current user) + * has permission to see. + * + * GET /oauth_client_apps -> [OauthClientApp] */ - public func update_session_config( + public func all_oauth_client_apps( /** - * @param {WriteSessionConfig} body + * @param {String} fields Requested fields. */ - _ body: WriteSessionConfig, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/session_config", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/oauth_client_apps", + ["fields": fields], nil, options) return result } /** - * ### Get currently locked-out users. + * ### Get Oauth Client App * - * GET /user_login_lockouts -> [UserLoginLockout] + * Returns the registered app client with matching client_guid. + * + * GET /oauth_client_apps/{client_guid} -> OauthClientApp */ - public func all_user_login_lockouts( + public func oauth_client_app( /** - * @param {String} fields Include only these fields in the response + * @param {String} client_guid The unique id of this application + */ + _ client_guid: String, + /** + * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/user_login_lockouts", + let path_client_guid = encodeParam(client_guid) + let result: SDKResponse = self.get("/oauth_client_apps/\(path_client_guid)", ["fields": fields], nil, options) return result } /** - * ### Search currently locked-out users. + * ### Register an OAuth2 Client App * - * GET /user_login_lockouts/search -> [UserLoginLockout] + * Registers details identifying an external web app or native app as an OAuth2 login client of the Looker instance. + * The app registration must provide a unique client_guid and redirect_uri that the app will present + * in OAuth login requests. If the client_guid and redirect_uri parameters in the login request do not match + * the app details registered with the Looker instance, the request is assumed to be a forgery and is rejected. + * + * POST /oauth_client_apps/{client_guid} -> OauthClientApp */ - public func search_user_login_lockouts( - /** - * @param {String} fields Include only these fields in the response - */ - fields: String? = nil, - /** - * @param {Int64} page Return only page N of paginated results - */ - page: Int64? = nil, - /** - * @param {Int64} per_page Return N rows of data per page - */ - per_page: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {String} auth_type Auth type user is locked out for (email, ldap, totp, api) - */ - auth_type: String? = nil, - /** - * @param {String} full_name Match name - */ - full_name: String? = nil, + public func register_oauth_client_app( /** - * @param {String} email Match email + * @param {String} client_guid The unique id of this application */ - email: String? = nil, + _ client_guid: String, /** - * @param {String} remote_id Match remote LDAP ID + * @param {WriteOauthClientApp} body */ - remote_id: String? = nil, + _ body: WriteOauthClientApp, /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {String} fields Requested fields. */ - filter_or: Bool? = nil, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/user_login_lockouts/search", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "auth_type": auth_type, "full_name": full_name, "email": email, "remote_id": remote_id, "filter_or": filter_or as Any?], nil, options) + let path_client_guid = encodeParam(client_guid) + let result: SDKResponse = self.post("/oauth_client_apps/\(path_client_guid)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Removes login lockout for the associated user. + * ### Update OAuth2 Client App Details * - * DELETE /user_login_lockout/{key} -> String + * Modifies the details a previously registered OAuth2 login client app. + * + * PATCH /oauth_client_apps/{client_guid} -> OauthClientApp */ - public func delete_user_login_lockout( + public func update_oauth_client_app( /** - * @param {String} key The key associated with the locked user + * @param {String} client_guid The unique id of this application */ - _ key: String, + _ client_guid: String, + /** + * @param {WriteOauthClientApp} body + */ + _ body: WriteOauthClientApp, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_key = encodeParam(key) - let result: SDKResponse = self.delete("/user_login_lockout/\(path_key)", nil, nil, options) + let path_client_guid = encodeParam(client_guid) + let result: SDKResponse = self.patch("/oauth_client_apps/\(path_client_guid)", + ["fields": fields], try! self.encode(body), options) return result } - - - // MARK ColorCollection: Manage Color Collections - /** - * ### Get an array of all existing Color Collections - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) + * ### Delete OAuth Client App * - * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) + * Deletes the registration info of the app with the matching client_guid. + * All active sessions and tokens issued for this app will immediately become invalid. * - * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * As with most REST DELETE operations, this endpoint does not return an error if the + * indicated resource does not exist. * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * ### Note: this deletion cannot be undone. * - * GET /color_collections -> [ColorCollection] + * DELETE /oauth_client_apps/{client_guid} -> String */ - public func all_color_collections( + public func delete_oauth_client_app( /** - * @param {String} fields Requested fields. + * @param {String} client_guid The unique id of this application */ - fields: String? = nil, + _ client_guid: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/color_collections", - ["fields": fields], nil, options) + let path_client_guid = encodeParam(client_guid) + let result: SDKResponse = self.delete("/oauth_client_apps/\(path_client_guid)", nil, nil, options) return result } /** - * ### Create a custom color collection with the specified information - * - * Creates a new custom color collection object, returning the details, including the created id. - * - * **Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection) - * - * **Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection) + * ### Invalidate All Issued Tokens * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Immediately invalidates all auth codes, sessions, access tokens and refresh tokens issued for + * this app for ALL USERS of this app. * - * POST /color_collections -> ColorCollection + * DELETE /oauth_client_apps/{client_guid}/tokens -> String */ - public func create_color_collection( + public func invalidate_tokens( /** - * @param {WriteColorCollection} body + * @param {String} client_guid The unique id of the application */ - _ body: WriteColorCollection, + _ client_guid: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/color_collections", nil, try! self.encode(body), options) + let path_client_guid = encodeParam(client_guid) + let result: SDKResponse = self.delete("/oauth_client_apps/\(path_client_guid)/tokens", nil, nil, options) return result } /** - * ### Get an array of all existing **Custom** Color Collections - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) + * ### Activate an app for a user * - * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) + * Activates a user for a given oauth client app. This indicates the user has been informed that + * the app will have access to the user's looker data, and that the user has accepted and allowed + * the app to use their Looker account. * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Activating a user for an app that the user is already activated with returns a success response. * - * GET /color_collections/custom -> [ColorCollection] + * POST /oauth_client_apps/{client_guid}/users/{user_id} -> String */ - public func color_collections_custom( + public func activate_app_user( + /** + * @param {String} client_guid The unique id of this application + */ + _ client_guid: String, + /** + * @param {String} user_id The id of the user to enable use of this app + */ + _ user_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/color_collections/custom", + let path_client_guid = encodeParam(client_guid) + let path_user_id = encodeParam(user_id) + let result: SDKResponse = self.post("/oauth_client_apps/\(path_client_guid)/users/\(path_user_id)", ["fields": fields], nil, options) return result } /** - * ### Get an array of all existing **Standard** Color Collections - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) + * ### Deactivate an app for a user * - * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * Deactivate a user for a given oauth client app. All tokens issued to the app for + * this user will be invalid immediately. Before the user can use the app with their + * Looker account, the user will have to read and accept an account use disclosure statement for the app. * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Admin users can deactivate other users, but non-admin users can only deactivate themselves. * - * GET /color_collections/standard -> [ColorCollection] + * As with most REST DELETE operations, this endpoint does not return an error if the indicated + * resource (app or user) does not exist or has already been deactivated. + * + * DELETE /oauth_client_apps/{client_guid}/users/{user_id} -> String */ - public func color_collections_standard( + public func deactivate_app_user( + /** + * @param {String} client_guid The unique id of this application + */ + _ client_guid: String, + /** + * @param {String} user_id The id of the user to enable use of this app + */ + _ user_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/color_collections/standard", + let path_client_guid = encodeParam(client_guid) + let path_user_id = encodeParam(user_id) + let result: SDKResponse = self.delete("/oauth_client_apps/\(path_client_guid)/users/\(path_user_id)", ["fields": fields], nil, options) return result } /** - * ### Get the default color collection + * ### Get the OIDC configuration. * - * Use this to retrieve the default Color Collection. + * Looker can be optionally configured to authenticate users against an OpenID Connect (OIDC) + * authentication server. OIDC setup requires coordination with an administrator of that server. * - * Set the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection) + * Only Looker administrators can read and update the OIDC configuration. * - * GET /color_collections/default -> ColorCollection + * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. + * + * Looker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * + * OIDC is enabled or disabled for Looker using the **enabled** field. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /oidc_config -> OIDCConfig */ - public func default_color_collection( + public func oidc_config( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/color_collections/default", nil, nil, options) + let result: SDKResponse = self.get("/oidc_config", nil, nil, options) return result } /** - * ### Set the global default Color Collection by ID + * ### Update the OIDC configuration. * - * Returns the new specified default Color Collection object. - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Configuring OIDC impacts authentication for all users. This configuration should be done carefully. * - * PUT /color_collections/default -> ColorCollection + * Only Looker administrators can read and update the OIDC configuration. + * + * OIDC is enabled or disabled for Looker using the **enabled** field. + * + * It is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * PATCH /oidc_config -> OIDCConfig */ - public func set_default_color_collection( + public func update_oidc_config( /** - * @param {String} collection_id ID of color collection to set as default + * @param {WriteOIDCConfig} body */ - _ collection_id: String, + _ body: WriteOIDCConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/color_collections/default", - ["collection_id": collection_id], nil, options) + let result: SDKResponse = self.patch("/oidc_config", nil, try! self.encode(body), options) return result } /** - * ### Get a Color Collection by ID - * - * Use this to retrieve a specific Color Collection. - * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) - * - * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) - * - * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * ### Get a OIDC test configuration by test_slug. * - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /color_collections/{collection_id} -> ColorCollection + * GET /oidc_test_configs/{test_slug} -> OIDCConfig */ - public func color_collection( - /** - * @param {String} collection_id Id of Color Collection - */ - _ collection_id: String, + public func oidc_test_config( /** - * @param {String} fields Requested fields. + * @param {String} test_slug Slug of test config */ - fields: String? = nil, + _ test_slug: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_collection_id = encodeParam(collection_id) - let result: SDKResponse = self.get("/color_collections/\(path_collection_id)", - ["fields": fields], nil, options) + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.get("/oidc_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Update a custom color collection by id. - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * ### Delete a OIDC test configuration. * - * PATCH /color_collections/{collection_id} -> ColorCollection + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * DELETE /oidc_test_configs/{test_slug} -> String */ - public func update_color_collection( - /** - * @param {String} collection_id Id of Custom Color Collection - */ - _ collection_id: String, + public func delete_oidc_test_config( /** - * @param {WriteColorCollection} body + * @param {String} test_slug Slug of test config */ - _ body: WriteColorCollection, + _ test_slug: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_collection_id = encodeParam(collection_id) - let result: SDKResponse = self.patch("/color_collections/\(path_collection_id)", nil, try! self.encode(body), options) + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.delete("/oidc_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Delete a custom color collection by id - * - * This operation permanently deletes the identified **Custom** color collection. - * - * **Standard** color collections cannot be deleted + * ### Create a OIDC test configuration. * - * Because multiple color collections can have the same label, they must be deleted by ID, not name. - * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * DELETE /color_collections/{collection_id} -> String + * POST /oidc_test_configs -> OIDCConfig */ - public func delete_color_collection( + public func create_oidc_test_config( /** - * @param {String} collection_id Id of Color Collection + * @param {WriteOIDCConfig} body */ - _ collection_id: String, + _ body: WriteOIDCConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let path_collection_id = encodeParam(collection_id) - let result: SDKResponse = self.delete("/color_collections/\(path_collection_id)", nil, nil, options) + let result: SDKResponse = self.post("/oidc_test_configs", nil, try! self.encode(body), options) return result } - - - // MARK Config: Manage General Configuration - /** - * ### WARNING: The Looker internal database backup function has been deprecated. + * ### Get password config. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /backup_configuration -> BackupConfiguration + * GET /password_config -> PasswordConfig */ - @available(*, deprecated) - public func backup_configuration( + public func password_config( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/backup_configuration", nil, nil, options) + let result: SDKResponse = self.get("/password_config", nil, nil, options) return result } /** - * ### WARNING: The Looker internal database backup function has been deprecated. + * ### Update password config. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PATCH /backup_configuration -> BackupConfiguration + * PATCH /password_config -> PasswordConfig */ - @available(*, deprecated) - public func update_backup_configuration( + public func update_password_config( /** - * @param {WriteBackupConfiguration} body + * @param {WritePasswordConfig} body */ - _ body: WriteBackupConfiguration, + _ body: WritePasswordConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/backup_configuration", nil, try! self.encode(body), options) + let result: SDKResponse = self.patch("/password_config", nil, try! self.encode(body), options) return result } /** - * Get the current Cloud Storage Configuration. + * ### Force all credentials_email users to reset their login passwords upon their next login. * - * GET /cloud_storage -> BackupConfiguration + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * PUT /password_config/force_password_reset_at_next_login_for_all_users -> String */ - public func cloud_storage_configuration( + public func force_password_reset_at_next_login_for_all_users( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/cloud_storage", nil, nil, options) + let result: SDKResponse = self.put("/password_config/force_password_reset_at_next_login_for_all_users", nil, nil, options) return result } /** - * Update the current Cloud Storage Configuration. + * ### Get the SAML configuration. * - * PATCH /cloud_storage -> BackupConfiguration + * Looker can be optionally configured to authenticate users against a SAML authentication server. + * SAML setup requires coordination with an administrator of that server. + * + * Only Looker administrators can read and update the SAML configuration. + * + * Configuring SAML impacts authentication for all users. This configuration should be done carefully. + * + * Looker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct). + * + * SAML is enabled or disabled for Looker using the **enabled** field. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /saml_config -> SamlConfig */ - public func update_cloud_storage_configuration( - /** - * @param {WriteBackupConfiguration} body - */ - _ body: WriteBackupConfiguration, + public func saml_config( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/cloud_storage", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/saml_config", nil, nil, options) return result } /** - * ### Get the current status and content of custom welcome emails + * ### Update the SAML configuration. * - * GET /custom_welcome_email -> CustomWelcomeEmail + * Configuring SAML impacts authentication for all users. This configuration should be done carefully. + * + * Only Looker administrators can read and update the SAML configuration. + * + * SAML is enabled or disabled for Looker using the **enabled** field. + * + * It is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * PATCH /saml_config -> SamlConfig */ - public func custom_welcome_email( + public func update_saml_config( + /** + * @param {WriteSamlConfig} body + */ + _ body: WriteSamlConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/custom_welcome_email", nil, nil, options) + let result: SDKResponse = self.patch("/saml_config", nil, try! self.encode(body), options) return result } /** - * Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user. + * ### Get a SAML test configuration by test_slug. * - * PATCH /custom_welcome_email -> CustomWelcomeEmail + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /saml_test_configs/{test_slug} -> SamlConfig */ - public func update_custom_welcome_email( - /** - * @param {WriteCustomWelcomeEmail} body - */ - _ body: WriteCustomWelcomeEmail, + public func saml_test_config( /** - * @param {Bool} send_test_welcome_email If true a test email with the content from the request will be sent to the current user after saving + * @param {String} test_slug Slug of test config */ - send_test_welcome_email: Bool? = nil, + _ test_slug: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/custom_welcome_email", - ["send_test_welcome_email": send_test_welcome_email as Any?], try! self.encode(body), options) + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.get("/saml_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user. + * ### Delete a SAML test configuration. * - * PUT /custom_welcome_email_test -> WelcomeEmailTest - */ - public func update_custom_welcome_email_test( + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * DELETE /saml_test_configs/{test_slug} -> String + */ + public func delete_saml_test_config( /** - * @param {WelcomeEmailTest} body + * @param {String} test_slug Slug of test config */ - _ body: WelcomeEmailTest, + _ test_slug: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/custom_welcome_email_test", nil, try! self.encode(body), options) + let path_test_slug = encodeParam(test_slug) + let result: SDKResponse = self.delete("/saml_test_configs/\(path_test_slug)", nil, nil, options) return result } /** - * ### Retrieve the value for whether or not digest emails is enabled + * ### Create a SAML test configuration. * - * GET /digest_emails_enabled -> DigestEmails - */ - public func digest_emails_enabled( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/digest_emails_enabled", nil, nil, options) - return result - } - - /** - * ### Update the setting for enabling/disabling digest emails + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PATCH /digest_emails_enabled -> DigestEmails + * POST /saml_test_configs -> SamlConfig */ - public func update_digest_emails_enabled( + public func create_saml_test_config( /** - * @param {DigestEmails} body + * @param {WriteSamlConfig} body */ - _ body: DigestEmails, + _ body: WriteSamlConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/digest_emails_enabled", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/saml_test_configs", nil, try! self.encode(body), options) return result } /** - * ### Trigger the generation of digest email records and send them to Looker's internal system. This does not send - * any actual emails, it generates records containing content which may be of interest for users who have become inactive. - * Emails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings. + * ### Parse the given xml as a SAML IdP metadata document and return the result. * - * POST /digest_email_send -> DigestEmailSend - */ - public func create_digest_email_send( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/digest_email_send", nil, nil, options) - return result - } - - /** - * ### Set the menu item name and content for internal help resources + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /internal_help_resources_content -> InternalHelpResourcesContent + * POST /parse_saml_idp_metadata -> SamlMetadataParseResult */ - public func internal_help_resources_content( + public func parse_saml_idp_metadata( + /** + * @param {String} body + */ + _ body: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/internal_help_resources_content", nil, nil, options) + let result: SDKResponse = self.post("/parse_saml_idp_metadata", nil, try! self.encode(body), options) return result } /** - * Update internal help resources content + * ### Fetch the given url and parse it as a SAML IdP metadata document and return the result. + * Note that this requires that the url be public or at least at a location where the Looker instance + * can fetch it without requiring any special authentication. * - * PATCH /internal_help_resources_content -> InternalHelpResourcesContent + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * POST /fetch_and_parse_saml_idp_metadata -> SamlMetadataParseResult */ - public func update_internal_help_resources_content( + public func fetch_and_parse_saml_idp_metadata( /** - * @param {WriteInternalHelpResourcesContent} body + * @param {String} body */ - _ body: WriteInternalHelpResourcesContent, + _ body: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/internal_help_resources_content", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/fetch_and_parse_saml_idp_metadata", nil, try! self.encode(body), options) return result } /** - * ### Get and set the options for internal help resources + * ### Get session config. * - * GET /internal_help_resources_enabled -> InternalHelpResources + * GET /session_config -> SessionConfig */ - public func internal_help_resources( + public func session_config( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/internal_help_resources_enabled", nil, nil, options) + let result: SDKResponse = self.get("/session_config", nil, nil, options) return result } /** - * Update internal help resources settings + * ### Update session config. * - * PATCH /internal_help_resources -> InternalHelpResources + * PATCH /session_config -> SessionConfig */ - public func update_internal_help_resources( + public func update_session_config( /** - * @param {WriteInternalHelpResources} body + * @param {WriteSessionConfig} body */ - _ body: WriteInternalHelpResources, + _ body: WriteSessionConfig, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.patch("/internal_help_resources", nil, try! self.encode(body), options) + let result: SDKResponse = self.patch("/session_config", nil, try! self.encode(body), options) return result } /** - * ### Get all legacy features. + * ### Get Support Access Allowlist Users + * + * Returns the users that have been added to the Support Access Allowlist * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /legacy_features -> [LegacyFeature] + * GET /support_access/allowlist -> [SupportAccessAllowlistEntry] */ - public func all_legacy_features( + public func get_support_access_allowlist_entries( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/legacy_features", nil, nil, options) + let result: SDKResponse = self.get("/support_access/allowlist", + ["fields": fields], nil, options) return result } /** - * ### Get information about the legacy feature with a specific id. + * ### Add Support Access Allowlist Users + * + * Adds a list of emails to the Allowlist, using the provided reason * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * GET /legacy_features/{legacy_feature_id} -> LegacyFeature + * POST /support_access/allowlist -> [SupportAccessAllowlistEntry] */ - public func legacy_feature( + public func add_support_access_allowlist_entries( /** - * @param {Int64} legacy_feature_id id of legacy feature + * @param {SupportAccessAddEntries} body */ - _ legacy_feature_id: Int64, + _ body: SupportAccessAddEntries, options: ITransportSettings? = nil ) -> SDKResponse { - let path_legacy_feature_id = encodeParam(legacy_feature_id) - let result: SDKResponse = self.get("/legacy_features/\(path_legacy_feature_id)", nil, nil, options) + let result: SDKResponse = self.post("/support_access/allowlist", nil, try! self.encode(body), options) return result } /** - * ### Update information about the legacy feature with a specific id. + * ### Delete Support Access Allowlist User + * + * Deletes the specified Allowlist Entry Id * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * PATCH /legacy_features/{legacy_feature_id} -> LegacyFeature + * DELETE /support_access/allowlist/{entry_id} -> String */ - public func update_legacy_feature( - /** - * @param {Int64} legacy_feature_id id of legacy feature - */ - _ legacy_feature_id: Int64, + public func delete_support_access_allowlist_entry( /** - * @param {WriteLegacyFeature} body + * @param {String} entry_id Id of Allowlist Entry */ - _ body: WriteLegacyFeature, + _ entry_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_legacy_feature_id = encodeParam(legacy_feature_id) - let result: SDKResponse = self.patch("/legacy_features/\(path_legacy_feature_id)", nil, try! self.encode(body), options) + let path_entry_id = encodeParam(entry_id) + let result: SDKResponse = self.delete("/support_access/allowlist/\(path_entry_id)", nil, nil, options) return result } /** - * ### Get a list of locales that Looker supports. + * ### Enable Support Access * - * GET /locales -> [LkLocale] + * Enables Support Access for the provided duration + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * PUT /support_access/enable -> SupportAccessStatus */ - public func all_locales( + public func enable_support_access( + /** + * @param {SupportAccessEnable} body + */ + _ body: SupportAccessEnable, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/locales", nil, nil, options) + let result: SDKResponse = self.put("/support_access/enable", nil, try! self.encode(body), options) return result } /** - * ### Configure SMTP Settings - * This API allows users to configure the SMTP settings on the Looker instance. - * Only admin users are authorised to call this API. + * ### Disable Support Access * - * POST /smtp_settings -> Voidable + * Disables Support Access immediately + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * PUT /support_access/disable -> SupportAccessStatus */ - public func set_smtp_settings( - /** - * @param {SmtpSettings} body - */ - _ body: SmtpSettings, + public func disable_support_access( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/smtp_settings", nil, try! self.encode(body), options) + let result: SDKResponse = self.put("/support_access/disable", nil, nil, options) return result } /** - * ### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks). + * ### Support Access Status * - * GET /timezones -> [Timezone] + * Returns the current Support Access Status + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /support_access/status -> SupportAccessStatus */ - public func all_timezones( + public func support_access_status( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/timezones", nil, nil, options) + let result: SDKResponse = self.get("/support_access/status", nil, nil, options) return result } /** - * ### Get information about all API versions supported by this Looker instance. + * ### Get currently locked-out users. * - * GET /versions -> ApiVersion + * GET /user_login_lockouts -> [UserLoginLockout] */ - public func versions( + public func all_user_login_lockouts( /** - * @param {String} fields Requested fields. + * @param {String} fields Include only these fields in the response */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/versions", + let result: SDKResponse = self.get("/user_login_lockouts", ["fields": fields], nil, options) return result } /** - * ### This feature is enabled only by special license. - * ### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc. + * ### Search currently locked-out users. * - * GET /whitelabel_configuration -> WhitelabelConfiguration + * GET /user_login_lockouts/search -> [UserLoginLockout] */ - public func whitelabel_configuration( + public func search_user_login_lockouts( /** - * @param {String} fields Requested fields. + * @param {String} fields Include only these fields in the response */ fields: String? = nil, + /** + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + */ + page: Int64? = nil, + /** + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + */ + per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {String} auth_type Auth type user is locked out for (email, ldap, totp, api) + */ + auth_type: String? = nil, + /** + * @param {String} full_name Match name + */ + full_name: String? = nil, + /** + * @param {String} email Match email + */ + email: String? = nil, + /** + * @param {String} remote_id Match remote LDAP ID + */ + remote_id: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/whitelabel_configuration", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/user_login_lockouts/search", + ["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 as Any?], nil, options) return result } /** - * ### Update the whitelabel configuration + * ### Removes login lockout for the associated user. * - * PUT /whitelabel_configuration -> WhitelabelConfiguration + * DELETE /user_login_lockout/{key} -> String */ - public func update_whitelabel_configuration( + public func delete_user_login_lockout( /** - * @param {WriteWhitelabelConfiguration} body + * @param {String} key The key associated with the locked user */ - _ body: WriteWhitelabelConfiguration, + _ key: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.put("/whitelabel_configuration", nil, try! self.encode(body), options) + let path_key = encodeParam(key) + let result: SDKResponse = self.delete("/user_login_lockout/\(path_key)", nil, nil, options) return result } - // MARK Connection: Manage Database Connections + // MARK Board: Manage Boards /** - * ### Get information about all connections. + * ### Get information about all boards. * - * GET /connections -> [DBConnection] + * GET /boards -> [Board] */ - public func all_connections( + public func all_boards( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/connections", + let result: SDKResponse = self.get("/boards", ["fields": fields], nil, options) return result } /** - * ### Create a connection using the specified configuration. - * - * POST /connections -> DBConnection - */ - public func create_connection( - /** - * @param {WriteDBConnection} body - */ - _ body: WriteDBConnection, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.post("/connections", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get information about a connection. + * ### Create a new board. * - * GET /connections/{connection_name} -> DBConnection + * POST /boards -> Board */ - public func connection( + public func create_board( /** - * @param {String} connection_name Name of connection + * @param {WriteBoard} body */ - _ connection_name: String, + _ body: WriteBoard, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.get("/connections/\(path_connection_name)", - ["fields": fields], nil, options) + let result: SDKResponse = self.post("/boards", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Update a connection using the specified configuration. - * - * PATCH /connections/{connection_name} -> DBConnection - */ - public func update_connection( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {WriteDBConnection} body - */ - _ body: WriteDBConnection, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.patch("/connections/\(path_connection_name)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete a connection. - * - * DELETE /connections/{connection_name} -> String - */ - public func delete_connection( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.delete("/connections/\(path_connection_name)", nil, nil, options) - return result - } - - /** - * ### Delete a connection override. - * - * DELETE /connections/{connection_name}/connection_override/{override_context} -> String - */ - public func delete_connection_override( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {String} override_context Context of connection override - */ - _ override_context: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let path_override_context = encodeParam(override_context) - let result: SDKResponse = self.delete("/connections/\(path_connection_name)/connection_override/\(path_override_context)", nil, nil, options) - return result - } - - /** - * ### Test an existing connection. - * - * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the - * specific types of tests that the connection supports. - * - * This API is rate limited. - * - * Unsupported tests in the request will be ignored. - * - * PUT /connections/{connection_name}/test -> [DBConnectionTestResult] - */ - public func test_connection( - /** - * @param {String} connection_name Name of connection - */ - _ connection_name: String, - /** - * @param {DelimArray} tests Array of names of tests to run - */ - tests: DelimArray? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_connection_name = encodeParam(connection_name) - let result: SDKResponse = self.put("/connections/\(path_connection_name)/test", - ["tests": tests as Any?], nil, options) - return result - } - - /** - * ### Test a connection configuration. - * - * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the - * specific types of tests that the connection supports. - * - * This API is rate limited. - * - * Unsupported tests in the request will be ignored. - * - * PUT /connections/test -> [DBConnectionTestResult] - */ - public func test_connection_config( - /** - * @param {WriteDBConnection} body - */ - _ body: WriteDBConnection, - /** - * @param {DelimArray} tests Array of names of tests to run - */ - tests: DelimArray? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.put("/connections/test", - ["tests": tests as Any?], try! self.encode(body), options) - return result - } - - /** - * ### Get information about all dialects. - * - * GET /dialect_info -> [DialectInfo] - */ - public func all_dialect_infos( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/dialect_info", - ["fields": fields], nil, options) - return result - } - - - - // MARK Content: Manage Content - - /** - * ### Search Favorite Content + * ### Search Boards * * If multiple search params are given and `filter_or` is FALSE or not specified, * search params are combined in a logical AND operation. @@ -1575,1884 +1977,1527 @@ open class LookerSDKStream: APIMethods { * * Boolean search params accept only "true" and "false" as values. * - * GET /content_favorite/search -> [ContentFavorite] + * GET /boards/search -> [Board] */ - public func search_content_favorites( + public func search_boards( /** - * @param {Int64} id Match content favorite id(s) + * @param {String} title Matches board title. */ - id: Int64? = nil, + title: String? = nil, /** - * @param {Int64} user_id Match user id(s) + * @param {String} created_at Matches the timestamp for when the board was created. */ - user_id: Int64? = nil, + created_at: String? = nil, /** - * @param {Int64} content_metadata_id Match content metadata id(s) + * @param {String} first_name The first name of the user who created this board. */ - content_metadata_id: Int64? = nil, + first_name: String? = nil, /** - * @param {Int64} dashboard_id Match dashboard id(s) + * @param {String} last_name The last name of the user who created this board. */ - dashboard_id: Int64? = nil, + last_name: String? = nil, /** - * @param {Int64} look_id Match look id(s) + * @param {String} fields Requested fields. */ - look_id: Int64? = nil, + fields: String? = nil, /** - * @param {Int64} limit Number of results to return. (used with offset) + * @param {Bool} favorited Return favorited boards when true. */ - limit: Int64? = nil, + favorited: Bool? = nil, /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit) + * @param {String} creator_id Filter on boards created by a particular user. */ - offset: Int64? = nil, + creator_id: String? = nil, /** - * @param {String} sorts Fields to sort by. + * @param {String} sorts The fields to sort the results by */ sorts: String? = nil, /** - * @param {String} fields Requested fields. + * @param {Int64} page The page to return. DEPRECATED. Use offset instead. */ - fields: String? = nil, + page: Int64? = nil, + /** + * @param {Int64} per_page The number of items in the returned page. DEPRECATED. Use limit instead. + */ + per_page: Int64? = nil, + /** + * @param {Int64} offset The number of items to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, + /** + * @param {Int64} limit The maximum number of items to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, /** * @param {Bool} filter_or Combine given search criteria in a boolean OR expression */ filter_or: Bool? = nil, + /** + * @param {String} permission Filter results based on permission, either show (default) or update + */ + permission: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/content_favorite/search", - ["id": id, "user_id": user_id, "content_metadata_id": content_metadata_id, "dashboard_id": dashboard_id, "look_id": look_id, "limit": limit, "offset": offset, "sorts": sorts, "fields": fields, "filter_or": filter_or as Any?], nil, options) + let result: SDKResponse = self.get("/boards/search", + ["title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited as Any?, "creator_id": creator_id, "sorts": sorts, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "filter_or": filter_or as Any?, "permission": permission], nil, options) return result } /** - * ### Get favorite content by its id + * ### Get information about a board. * - * GET /content_favorite/{content_favorite_id} -> ContentFavorite + * GET /boards/{board_id} -> Board */ - public func content_favorite( + public func board( /** - * @param {Int64} content_favorite_id Id of favorite content + * @param {String} board_id Id of board */ - _ content_favorite_id: Int64, + _ board_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_content_favorite_id = encodeParam(content_favorite_id) - let result: SDKResponse = self.get("/content_favorite/\(path_content_favorite_id)", + let path_board_id = encodeParam(board_id) + let result: SDKResponse = self.get("/boards/\(path_board_id)", ["fields": fields], nil, options) return result } /** - * ### Delete favorite content + * ### Update a board definition. * - * DELETE /content_favorite/{content_favorite_id} -> String + * PATCH /boards/{board_id} -> Board */ - public func delete_content_favorite( + public func update_board( + /** + * @param {String} board_id Id of board + */ + _ board_id: String, + /** + * @param {WriteBoard} body + */ + _ body: WriteBoard, /** - * @param {Int64} content_favorite_id Id of favorite content + * @param {String} fields Requested fields. */ - _ content_favorite_id: Int64, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_content_favorite_id = encodeParam(content_favorite_id) - let result: SDKResponse = self.delete("/content_favorite/\(path_content_favorite_id)", nil, nil, options) + let path_board_id = encodeParam(board_id) + let result: SDKResponse = self.patch("/boards/\(path_board_id)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Create favorite content + * ### Delete a board. * - * POST /content_favorite -> ContentFavorite + * DELETE /boards/{board_id} -> String */ - public func create_content_favorite( + public func delete_board( /** - * @param {WriteContentFavorite} body + * @param {String} board_id Id of board */ - _ body: WriteContentFavorite, + _ board_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/content_favorite", nil, try! self.encode(body), options) + let path_board_id = encodeParam(board_id) + let result: SDKResponse = self.delete("/boards/\(path_board_id)", nil, nil, options) return result } /** - * ### Get information about all content metadata in a space. + * ### Get information about all board items. * - * GET /content_metadata -> [ContentMeta] + * GET /board_items -> [BoardItem] */ - public func all_content_metadatas( - /** - * @param {Int64} parent_id Parent space of content. - */ - _ parent_id: Int64, + public func all_board_items( /** * @param {String} fields Requested fields. */ fields: String? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {String} board_section_id Filter to a specific board section + */ + board_section_id: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/content_metadata", - ["parent_id": parent_id, "fields": fields], nil, options) + let result: SDKResponse = self.get("/board_items", + ["fields": fields, "sorts": sorts, "board_section_id": board_section_id], nil, options) return result } /** - * ### Get information about an individual content metadata record. + * ### Create a new board item. * - * GET /content_metadata/{content_metadata_id} -> ContentMeta + * POST /board_items -> BoardItem */ - public func content_metadata( + public func create_board_item( /** - * @param {Int64} content_metadata_id Id of content metadata + * @param {WriteBoardItem} body */ - _ content_metadata_id: Int64, + _ body: WriteBoardItem, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_content_metadata_id = encodeParam(content_metadata_id) - let result: SDKResponse = self.get("/content_metadata/\(path_content_metadata_id)", - ["fields": fields], nil, options) + let result: SDKResponse = self.post("/board_items", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Move a piece of content. + * ### Get information about a board item. * - * PATCH /content_metadata/{content_metadata_id} -> ContentMeta + * GET /board_items/{board_item_id} -> BoardItem */ - public func update_content_metadata( + public func board_item( /** - * @param {Int64} content_metadata_id Id of content metadata + * @param {String} board_item_id Id of board item */ - _ content_metadata_id: Int64, + _ board_item_id: String, /** - * @param {WriteContentMeta} body + * @param {String} fields Requested fields. */ - _ body: WriteContentMeta, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_content_metadata_id = encodeParam(content_metadata_id) - let result: SDKResponse = self.patch("/content_metadata/\(path_content_metadata_id)", nil, try! self.encode(body), options) + let path_board_item_id = encodeParam(board_item_id) + let result: SDKResponse = self.get("/board_items/\(path_board_item_id)", + ["fields": fields], nil, options) return result } /** - * ### All content metadata access records for a content metadata item. + * ### Update a board item definition. * - * GET /content_metadata_access -> [ContentMetaGroupUser] + * PATCH /board_items/{board_item_id} -> BoardItem */ - public func all_content_metadata_accesses( + public func update_board_item( + /** + * @param {String} board_item_id Id of board item + */ + _ board_item_id: String, /** - * @param {Int64} content_metadata_id Id of content metadata + * @param {WriteBoardItem} body */ - _ content_metadata_id: Int64, + _ body: WriteBoardItem, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/content_metadata_access", - ["content_metadata_id": content_metadata_id, "fields": fields], nil, options) + let path_board_item_id = encodeParam(board_item_id) + let result: SDKResponse = self.patch("/board_items/\(path_board_item_id)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Create content metadata access. + * ### Delete a board item. * - * POST /content_metadata_access -> ContentMetaGroupUser + * DELETE /board_items/{board_item_id} -> String */ - public func create_content_metadata_access( - /** - * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH - */ - _ body: ContentMetaGroupUser, + public func delete_board_item( /** - * @param {Bool} send_boards_notification_email Optionally sends notification email when granting access to a board. + * @param {String} board_item_id Id of board item */ - send_boards_notification_email: Bool? = nil, + _ board_item_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/content_metadata_access", - ["send_boards_notification_email": send_boards_notification_email as Any?], try! self.encode(body), options) + let path_board_item_id = encodeParam(board_item_id) + let result: SDKResponse = self.delete("/board_items/\(path_board_item_id)", nil, nil, options) return result } /** - * ### Update type of access for content metadata. + * ### Get information about all board sections. * - * PUT /content_metadata_access/{content_metadata_access_id} -> ContentMetaGroupUser + * GET /board_sections -> [BoardSection] */ - public func update_content_metadata_access( + public func all_board_sections( /** - * @param {Int64} content_metadata_access_id Id of content metadata access + * @param {String} fields Requested fields. */ - _ content_metadata_access_id: Int64, + fields: String? = nil, /** - * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH + * @param {String} sorts Fields to sort by. */ - _ body: ContentMetaGroupUser, + sorts: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_content_metadata_access_id = encodeParam(content_metadata_access_id) - let result: SDKResponse = self.put("/content_metadata_access/\(path_content_metadata_access_id)", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/board_sections", + ["fields": fields, "sorts": sorts], nil, options) return result } /** - * ### Remove content metadata access. + * ### Create a new board section. * - * DELETE /content_metadata_access/{content_metadata_access_id} -> String + * POST /board_sections -> BoardSection */ - public func delete_content_metadata_access( + public func create_board_section( + /** + * @param {WriteBoardSection} body + */ + _ body: WriteBoardSection, /** - * @param {Int64} content_metadata_access_id Id of content metadata access + * @param {String} fields Requested fields. */ - _ content_metadata_access_id: Int64, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_content_metadata_access_id = encodeParam(content_metadata_access_id) - let result: SDKResponse = self.delete("/content_metadata_access/\(path_content_metadata_access_id)", nil, nil, options) + let result: SDKResponse = self.post("/board_sections", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Get an image representing the contents of a dashboard or look. - * - * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not - * reflect the actual data displayed in the respective visualizations. - * - * GET /content_thumbnail/{type}/{resource_id} -> String + * ### Get information about a board section. * - * **Note**: Binary content may be returned by this method. + * GET /board_sections/{board_section_id} -> BoardSection */ - public func content_thumbnail( - /** - * @param {String} type Either dashboard or look - */ - _ type: String, + public func board_section( /** - * @param {String} resource_id ID of the dashboard or look to render + * @param {String} board_section_id Id of board section */ - _ resource_id: String, + _ board_section_id: String, /** - * @param {String} reload Whether or not to refresh the rendered image with the latest content + * @param {String} fields Requested fields. */ - reload: String? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_board_section_id = encodeParam(board_section_id) + let result: SDKResponse = self.get("/board_sections/\(path_board_section_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update a board section definition. + * + * PATCH /board_sections/{board_section_id} -> BoardSection + */ + public func update_board_section( /** - * @param {String} theme Light or dark background. Default is "light" + * @param {String} board_section_id Id of board section */ - theme: String? = nil, + _ board_section_id: String, /** - * @param {String} format A value of png produces a thumbnail in PNG format instead of SVG (default) + * @param {WriteBoardSection} body */ - format: String? = nil, + _ body: WriteBoardSection, /** - * @param {Int64} width The width of the image if format is supplied + * @param {String} fields Requested fields. */ - width: Int64? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_board_section_id = encodeParam(board_section_id) + let result: SDKResponse = self.patch("/board_sections/\(path_board_section_id)", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Delete a board section. + * + * DELETE /board_sections/{board_section_id} -> String + */ + public func delete_board_section( /** - * @param {Int64} height The height of the image if format is supplied + * @param {String} board_section_id Id of board section */ - height: Int64? = nil, + _ board_section_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_type = encodeParam(type) - let path_resource_id = encodeParam(resource_id) - let result: SDKResponse = self.get("/content_thumbnail/\(path_type)/\(path_resource_id)", - ["reload": reload, "theme": theme, "format": format, "width": width, "height": height], nil, options) + let path_board_section_id = encodeParam(board_section_id) + let result: SDKResponse = self.delete("/board_sections/\(path_board_section_id)", nil, nil, options) return result } + + + // MARK ColorCollection: Manage Color Collections + /** - * ### Validate All Content + * ### Get an array of all existing Color Collections + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * Performs validation of all looks and dashboards - * Returns a list of errors found as well as metadata about the content validation run. + * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) * - * GET /content_validation -> ContentValidation + * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) + * + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. + * + * GET /color_collections -> [ColorCollection] */ - public func content_validation( + public func all_color_collections( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/content_validation", + let result: SDKResponse = self.get("/color_collections", ["fields": fields], nil, options) return result } /** - * ### Search Content Views - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. + * ### Create a custom color collection with the specified information * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" + * Creates a new custom color collection object, returning the details, including the created id. * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. + * **Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection) * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. + * **Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection) * - * Boolean search params accept only "true" and "false" as values. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * GET /content_view/search -> [ContentView] + * POST /color_collections -> ColorCollection */ - public func search_content_views( - /** - * @param {Int64} view_count Match view count - */ - view_count: Int64? = nil, - /** - * @param {Int64} group_id Match Group Id - */ - group_id: Int64? = nil, - /** - * @param {String} look_id Match look_id - */ - look_id: String? = nil, - /** - * @param {String} dashboard_id Match dashboard_id - */ - dashboard_id: String? = nil, - /** - * @param {Int64} content_metadata_id Match content metadata id - */ - content_metadata_id: Int64? = nil, - /** - * @param {String} start_of_week_date Match start of week date (format is "YYYY-MM-DD") - */ - start_of_week_date: String? = nil, - /** - * @param {Bool} all_time True if only all time view records should be returned - */ - all_time: Bool? = nil, - /** - * @param {Int64} user_id Match user id - */ - user_id: Int64? = nil, - /** - * @param {String} fields Requested fields - */ - fields: String? = nil, - /** - * @param {Int64} limit Number of results to return. Use with `offset` to manage pagination of results - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning data - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by - */ - sorts: String? = nil, + public func create_color_collection( /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {WriteColorCollection} body */ - filter_or: Bool? = nil, + _ body: WriteColorCollection, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/content_view/search", - ["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 as Any?, "user_id": user_id, "fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) + let result: SDKResponse = self.post("/color_collections", nil, try! self.encode(body), options) return result } /** - * ### Get a vector image representing the contents of a dashboard or look. + * ### Get an array of all existing **Custom** Color Collections + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * # DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail) + * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) * - * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not - * reflect the actual data displayed in the respective visualizations. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * GET /vector_thumbnail/{type}/{resource_id} -> String + * GET /color_collections/custom -> [ColorCollection] */ - @available(*, deprecated) - public func vector_thumbnail( - /** - * @param {String} type Either dashboard or look - */ - _ type: String, - /** - * @param {String} resource_id ID of the dashboard or look to render - */ - _ resource_id: String, + public func color_collections_custom( /** - * @param {String} reload Whether or not to refresh the rendered image with the latest content + * @param {String} fields Requested fields. */ - reload: String? = nil, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_type = encodeParam(type) - let path_resource_id = encodeParam(resource_id) - let result: SDKResponse = self.get("/vector_thumbnail/\(path_type)/\(path_resource_id)", - ["reload": reload], nil, options) + let result: SDKResponse = self.get("/color_collections/custom", + ["fields": fields], nil, options) return result } - - - // MARK Dashboard: Manage Dashboards - /** - * ### Get information about all active dashboards. - * - * Returns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list. + * ### Get an array of all existing **Standard** Color Collections + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * Get the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard) + * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) * - * Find **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards) + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * GET /dashboards -> [DashboardBase] + * GET /color_collections/standard -> [ColorCollection] */ - public func all_dashboards( + public func color_collections_standard( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/dashboards", + let result: SDKResponse = self.get("/color_collections/standard", ["fields": fields], nil, options) return result } /** - * ### Create a new dashboard - * - * Creates a new dashboard object and returns the details of the newly created dashboard. + * ### Get the default color collection * - * `Title` and `space_id` are required fields. - * `Space_id` must contain the id of an existing space. - * A dashboard's `title` must be unique within the space in which it resides. + * Use this to retrieve the default Color Collection. * - * If you receive a 422 error response when creating a dashboard, be sure to look at the - * response body for information about exactly which fields are missing or contain invalid data. + * Set the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection) * - * You can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard) + * GET /color_collections/default -> ColorCollection + */ + public func default_color_collection( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/color_collections/default", nil, nil, options) + return result + } + + /** + * ### Set the global default Color Collection by ID * - * You can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard) + * Returns the new specified default Color Collection object. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * POST /dashboards -> Dashboard + * PUT /color_collections/default -> ColorCollection */ - public func create_dashboard( + public func set_default_color_collection( /** - * @param {WriteDashboard} body + * @param {String} collection_id ID of color collection to set as default */ - _ body: WriteDashboard, + _ collection_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/dashboards", nil, try! self.encode(body), options) + let result: SDKResponse = self.put("/color_collections/default", + ["collection_id": collection_id], nil, options) return result } /** - * ### Search Dashboards + * ### Get a Color Collection by ID * - * Returns an array of **user-defined dashboard** objects that match the specified search criteria. - * Note, [search_dashboards()](#!/Dashboard/search_dashboards) does not return LookML dashboard objects. + * Use this to retrieve a specific Color Collection. + * Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. + * Get all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard) * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. + * Get all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom) * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. - * - * - * The parameters `limit`, and `offset` are recommended for fetching results in page-size chunks. - * - * Get a **single dashboard** by id with [dashboard()](#!/Dashboard/dashboard) + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * GET /dashboards/search -> [Dashboard] + * GET /color_collections/{collection_id} -> ColorCollection */ - public func search_dashboards( - /** - * @param {Int64} id Match dashboard id. - */ - id: Int64? = nil, - /** - * @param {String} slug Match dashboard slug. - */ - slug: String? = nil, - /** - * @param {String} title Match Dashboard title. - */ - title: String? = nil, - /** - * @param {String} description Match Dashboard description. - */ - description: String? = nil, - /** - * @param {Int64} content_favorite_id Filter on a content favorite id. - */ - content_favorite_id: Int64? = nil, - /** - * @param {String} space_id Filter on a particular space. - */ - space_id: String? = nil, - /** - * @param {String} folder_id Filter on a particular space. - */ - folder_id: String? = nil, - /** - * @param {String} deleted Filter on dashboards deleted status. - */ - deleted: String? = nil, - /** - * @param {String} user_id Filter on dashboards created by a particular user. - */ - user_id: String? = nil, - /** - * @param {String} view_count Filter on a particular value of view_count - */ - view_count: String? = nil, - /** - * @param {Int64} content_metadata_id Filter on a content favorite id. - */ - content_metadata_id: Int64? = nil, + public func color_collection( /** - * @param {Bool} curate Exclude items that exist only in personal spaces other than the users + * @param {String} collection_id Id of Color Collection */ - curate: Bool? = nil, + _ collection_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, - /** - * @param {Int64} page Requested page. - */ - page: Int64? = nil, - /** - * @param {Int64} per_page Results per page. - */ - per_page: Int64? = nil, - /** - * @param {String} sorts One or more fields to sort by. Sortable fields: [:title, :user_id, :id, :created_at, :space_id, :folder_id, :description, :view_count, :favorite_count, :slug, :content_favorite_id, :content_metadata_id, :deleted, :deleted_at, :last_viewed_at, :last_accessed_at] - */ - sorts: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/dashboards/search", - ["id": id, "slug": slug, "title": title, "description": description, "content_favorite_id": content_favorite_id, "space_id": space_id, "folder_id": folder_id, "deleted": deleted, "user_id": user_id, "view_count": view_count, "content_metadata_id": content_metadata_id, "curate": curate as Any?, "fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) + let path_collection_id = encodeParam(collection_id) + let result: SDKResponse = self.get("/color_collections/\(path_collection_id)", + ["fields": fields], nil, options) return result } /** - * ### Import a LookML dashboard to a space as a UDD - * Creates a UDD (a dashboard which exists in the Looker database rather than as a LookML file) from the LookML dashboard - * and places it in the space specified. The created UDD will have a lookml_link_id which links to the original LookML dashboard. - * - * To give the imported dashboard specify a (e.g. title: "my title") in the body of your request, otherwise the imported - * dashboard will have the same title as the original LookML dashboard. - * - * For this operation to succeed the user must have permission to see the LookML dashboard in question, and have permission to - * create content in the space the dashboard is being imported to. - * - * **Sync** a linked UDD with [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard) - * **Unlink** a linked UDD by setting lookml_link_id to null with [update_dashboard()](#!/Dashboard/update_dashboard) + * ### Update a custom color collection by id. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * POST /dashboards/{lookml_dashboard_id}/import/{space_id} -> Dashboard + * PATCH /color_collections/{collection_id} -> ColorCollection */ - public func import_lookml_dashboard( - /** - * @param {String} lookml_dashboard_id Id of LookML dashboard - */ - _ lookml_dashboard_id: String, - /** - * @param {String} space_id Id of space to import the dashboard to - */ - _ space_id: String, + public func update_color_collection( /** - * @param {WriteDashboard} body + * @param {String} collection_id Id of Custom Color Collection */ - body: WriteDashboard?, + _ collection_id: String, /** - * @param {Bool} raw_locale If true, and this dashboard is localized, export it with the raw keys, not localized. + * @param {WriteColorCollection} body */ - raw_locale: Bool? = nil, + _ body: WriteColorCollection, options: ITransportSettings? = nil ) -> SDKResponse { - let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.post("/dashboards/\(path_lookml_dashboard_id)/import/\(path_space_id)", - ["raw_locale": raw_locale as Any?], try! self.encode(body), options) + let path_collection_id = encodeParam(collection_id) + let result: SDKResponse = self.patch("/color_collections/\(path_collection_id)", nil, try! self.encode(body), options) return result } /** - * ### Update all linked dashboards to match the specified LookML dashboard. + * ### Delete a custom color collection by id * - * Any UDD (a dashboard which exists in the Looker database rather than as a LookML file) which has a `lookml_link_id` - * property value referring to a LookML dashboard's id (model::dashboardname) will be updated so that it matches the current state of the LookML dashboard. + * This operation permanently deletes the identified **Custom** color collection. * - * For this operation to succeed the user must have permission to view the LookML dashboard, and only linked dashboards - * that the user has permission to update will be synced. + * **Standard** color collections cannot be deleted * - * To **link** or **unlink** a UDD set the `lookml_link_id` property with [update_dashboard()](#!/Dashboard/update_dashboard) + * Because multiple color collections can have the same label, they must be deleted by ID, not name. + * **Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors. * - * PATCH /dashboards/{lookml_dashboard_id}/sync -> [Int64] + * DELETE /color_collections/{collection_id} -> String */ - public func sync_lookml_dashboard( - /** - * @param {String} lookml_dashboard_id Id of LookML dashboard, in the form 'model::dashboardname' - */ - _ lookml_dashboard_id: String, - /** - * @param {WriteDashboard} body - */ - _ body: WriteDashboard, + public func delete_color_collection( /** - * @param {Bool} raw_locale If true, and this dashboard is localized, export it with the raw keys, not localized. + * @param {String} collection_id Id of Color Collection */ - raw_locale: Bool? = nil, + _ collection_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) - let result: SDKResponse = self.patch("/dashboards/\(path_lookml_dashboard_id)/sync", - ["raw_locale": raw_locale as Any?], try! self.encode(body), options) + let path_collection_id = encodeParam(collection_id) + let result: SDKResponse = self.delete("/color_collections/\(path_collection_id)", nil, nil, options) return result } + + + // MARK Config: Manage General Configuration + /** - * ### Get information about a dashboard - * - * Returns the full details of the identified dashboard object - * - * Get a **summary list** of all active dashboards with [all_dashboards()](#!/Dashboard/all_dashboards) - * - * You can **Search** for dashboards with [search_dashboards()](#!/Dashboard/search_dashboards) + * Get the current Cloud Storage Configuration. * - * GET /dashboards/{dashboard_id} -> Dashboard + * GET /cloud_storage -> BackupConfiguration */ - public func dashboard( - /** - * @param {String} dashboard_id Id of dashboard - */ - _ dashboard_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func cloud_storage_configuration( options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.get("/dashboards/\(path_dashboard_id)", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/cloud_storage", nil, nil, options) return result } /** - * ### Update a dashboard - * - * You can use this function to change the string and integer properties of - * a dashboard. Nested objects such as filters, dashboard elements, or dashboard layout components - * cannot be modified by this function - use the update functions for the respective - * nested object types (like [update_dashboard_filter()](#!/3.1/Dashboard/update_dashboard_filter) to change a filter) - * to modify nested objects referenced by a dashboard. - * - * If you receive a 422 error response when updating a dashboard, be sure to look at the - * response body for information about exactly which fields are missing or contain invalid data. + * Update the current Cloud Storage Configuration. * - * PATCH /dashboards/{dashboard_id} -> Dashboard + * PATCH /cloud_storage -> BackupConfiguration */ - public func update_dashboard( - /** - * @param {String} dashboard_id Id of dashboard - */ - _ dashboard_id: String, + public func update_cloud_storage_configuration( /** - * @param {WriteDashboard} body + * @param {WriteBackupConfiguration} body */ - _ body: WriteDashboard, + _ body: WriteBackupConfiguration, options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.patch("/dashboards/\(path_dashboard_id)", nil, try! self.encode(body), options) + let result: SDKResponse = self.patch("/cloud_storage", nil, try! self.encode(body), options) return result } /** - * ### Delete the dashboard with the specified id - * - * Permanently **deletes** a dashboard. (The dashboard cannot be recovered after this operation.) - * - * "Soft" delete or hide a dashboard by setting its `deleted` status to `True` with [update_dashboard()](#!/Dashboard/update_dashboard). - * - * Note: When a dashboard is deleted in the UI, it is soft deleted. Use this API call to permanently remove it, if desired. + * ### Get the current status and content of custom welcome emails * - * DELETE /dashboards/{dashboard_id} -> String + * GET /custom_welcome_email -> CustomWelcomeEmail */ - public func delete_dashboard( - /** - * @param {String} dashboard_id Id of dashboard - */ - _ dashboard_id: String, + @available(*, deprecated) + public func custom_welcome_email( options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.delete("/dashboards/\(path_dashboard_id)", nil, nil, options) + let result: SDKResponse = self.get("/custom_welcome_email", nil, nil, options) return result } /** - * ### Get Aggregate Table LookML for Each Query on a Dahboard - * - * Returns a JSON object that contains the dashboard id and Aggregate Table lookml + * Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user. * - * GET /dashboards/aggregate_table_lookml/{dashboard_id} -> DashboardAggregateTableLookml + * PATCH /custom_welcome_email -> CustomWelcomeEmail */ - public func dashboard_aggregate_table_lookml( + @available(*, deprecated) + public func update_custom_welcome_email( /** - * @param {String} dashboard_id Id of dashboard + * @param {CustomWelcomeEmail} body */ - _ dashboard_id: String, + _ body: CustomWelcomeEmail, + /** + * @param {Bool} send_test_welcome_email If true a test email with the content from the request will be sent to the current user after saving + */ + send_test_welcome_email: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.get("/dashboards/aggregate_table_lookml/\(path_dashboard_id)", nil, nil, options) + let result: SDKResponse = self.patch("/custom_welcome_email", + ["send_test_welcome_email": send_test_welcome_email as Any?], try! self.encode(body), options) return result } /** - * ### Get lookml of a UDD - * - * Returns a JSON object that contains the dashboard id and the full lookml + * Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user. * - * GET /dashboards/lookml/{dashboard_id} -> DashboardLookml + * PUT /custom_welcome_email_test -> WelcomeEmailTest */ - public func dashboard_lookml( + public func update_custom_welcome_email_test( /** - * @param {String} dashboard_id Id of dashboard + * @param {WelcomeEmailTest} body */ - _ dashboard_id: String, + _ body: WelcomeEmailTest, options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.get("/dashboards/lookml/\(path_dashboard_id)", nil, nil, options) + let result: SDKResponse = self.put("/custom_welcome_email_test", nil, try! self.encode(body), options) return result } /** - * ### Search Dashboard Elements - * - * Returns an **array of DashboardElement objects** that match the specified search criteria. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. + * ### Retrieve the value for whether or not digest emails is enabled * - * GET /dashboard_elements/search -> [DashboardElement] + * GET /digest_emails_enabled -> DigestEmails */ - public func search_dashboard_elements( - /** - * @param {Int64} dashboard_id Select elements that refer to a given dashboard id - */ - dashboard_id: Int64? = nil, - /** - * @param {Int64} look_id Select elements that refer to a given look id - */ - look_id: Int64? = nil, - /** - * @param {String} title Match the title of element - */ - title: String? = nil, - /** - * @param {Bool} deleted Select soft-deleted dashboard elements - */ - deleted: Bool? = nil, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, - /** - * @param {String} sorts Fields to sort by. Sortable fields: [:look_id, :dashboard_id, :deleted, :title] - */ - sorts: String? = nil, + public func digest_emails_enabled( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/dashboard_elements/search", - ["dashboard_id": dashboard_id, "look_id": look_id, "title": title, "deleted": deleted as Any?, "fields": fields, "filter_or": filter_or as Any?, "sorts": sorts], nil, options) + let result: SDKResponse = self.get("/digest_emails_enabled", nil, nil, options) return result } /** - * ### Get information about the dashboard element with a specific id. + * ### Update the setting for enabling/disabling digest emails * - * GET /dashboard_elements/{dashboard_element_id} -> DashboardElement + * PATCH /digest_emails_enabled -> DigestEmails */ - public func dashboard_element( - /** - * @param {String} dashboard_element_id Id of dashboard element - */ - _ dashboard_element_id: String, + public func update_digest_emails_enabled( /** - * @param {String} fields Requested fields. + * @param {DigestEmails} body */ - fields: String? = nil, + _ body: DigestEmails, options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_element_id = encodeParam(dashboard_element_id) - let result: SDKResponse = self.get("/dashboard_elements/\(path_dashboard_element_id)", - ["fields": fields], nil, options) + let result: SDKResponse = self.patch("/digest_emails_enabled", nil, try! self.encode(body), options) return result } /** - * ### Update the dashboard element with a specific id. + * ### Trigger the generation of digest email records and send them to Looker's internal system. This does not send + * any actual emails, it generates records containing content which may be of interest for users who have become inactive. + * Emails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings. * - * PATCH /dashboard_elements/{dashboard_element_id} -> DashboardElement + * POST /digest_email_send -> DigestEmailSend */ - public func update_dashboard_element( - /** - * @param {String} dashboard_element_id Id of dashboard element - */ - _ dashboard_element_id: String, - /** - * @param {WriteDashboardElement} body - */ - _ body: WriteDashboardElement, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func create_digest_email_send( options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_element_id = encodeParam(dashboard_element_id) - let result: SDKResponse = self.patch("/dashboard_elements/\(path_dashboard_element_id)", - ["fields": fields], try! self.encode(body), options) + let result: SDKResponse = self.post("/digest_email_send", nil, nil, options) return result } /** - * ### Delete a dashboard element with a specific id. + * ### Get Egress IP Addresses * - * DELETE /dashboard_elements/{dashboard_element_id} -> String + * Returns the list of public egress IP Addresses for a hosted customer's instance + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /public_egress_ip_addresses -> EgressIpAddresses */ - public func delete_dashboard_element( - /** - * @param {String} dashboard_element_id Id of dashboard element - */ - _ dashboard_element_id: String, + public func public_egress_ip_addresses( options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_element_id = encodeParam(dashboard_element_id) - let result: SDKResponse = self.delete("/dashboard_elements/\(path_dashboard_element_id)", nil, nil, options) + let result: SDKResponse = self.get("/public_egress_ip_addresses", nil, nil, options) return result } /** - * ### Get information about all the dashboard elements on a dashboard with a specific id. + * ### Set the menu item name and content for internal help resources * - * GET /dashboards/{dashboard_id}/dashboard_elements -> [DashboardElement] + * GET /internal_help_resources_content -> InternalHelpResourcesContent */ - public func dashboard_dashboard_elements( - /** - * @param {String} dashboard_id Id of dashboard - */ - _ dashboard_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func internal_help_resources_content( options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.get("/dashboards/\(path_dashboard_id)/dashboard_elements", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/internal_help_resources_content", nil, nil, options) return result } /** - * ### Create a dashboard element on the dashboard with a specific id. + * Update internal help resources content * - * POST /dashboard_elements -> DashboardElement + * PATCH /internal_help_resources_content -> InternalHelpResourcesContent */ - public func create_dashboard_element( - /** - * @param {WriteDashboardElement} body - */ - _ body: WriteDashboardElement, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func update_internal_help_resources_content( /** - * @param {Bool} apply_filters Apply relevant filters on dashboard to this tile + * @param {WriteInternalHelpResourcesContent} body */ - apply_filters: Bool? = nil, + _ body: WriteInternalHelpResourcesContent, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/dashboard_elements", - ["fields": fields, "apply_filters": apply_filters as Any?], try! self.encode(body), options) + let result: SDKResponse = self.patch("/internal_help_resources_content", nil, try! self.encode(body), options) return result } /** - * ### Get information about the dashboard filters with a specific id. + * ### Get and set the options for internal help resources * - * GET /dashboard_filters/{dashboard_filter_id} -> DashboardFilter + * GET /internal_help_resources_enabled -> InternalHelpResources */ - public func dashboard_filter( - /** - * @param {String} dashboard_filter_id Id of dashboard filters - */ - _ dashboard_filter_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func internal_help_resources( options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_filter_id = encodeParam(dashboard_filter_id) - let result: SDKResponse = self.get("/dashboard_filters/\(path_dashboard_filter_id)", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/internal_help_resources_enabled", nil, nil, options) return result } /** - * ### Update the dashboard filter with a specific id. + * Update internal help resources settings * - * PATCH /dashboard_filters/{dashboard_filter_id} -> DashboardFilter + * PATCH /internal_help_resources -> InternalHelpResources */ - public func update_dashboard_filter( - /** - * @param {String} dashboard_filter_id Id of dashboard filter - */ - _ dashboard_filter_id: String, - /** - * @param {WriteDashboardFilter} body - */ - _ body: WriteDashboardFilter, + public func update_internal_help_resources( /** - * @param {String} fields Requested fields. + * @param {WriteInternalHelpResources} body */ - fields: String? = nil, + _ body: WriteInternalHelpResources, options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_filter_id = encodeParam(dashboard_filter_id) - let result: SDKResponse = self.patch("/dashboard_filters/\(path_dashboard_filter_id)", - ["fields": fields], try! self.encode(body), options) + let result: SDKResponse = self.patch("/internal_help_resources", nil, try! self.encode(body), options) return result } /** - * ### Delete a dashboard filter with a specific id. + * ### Get all legacy features. * - * DELETE /dashboard_filters/{dashboard_filter_id} -> String + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /legacy_features -> [LegacyFeature] */ - public func delete_dashboard_filter( - /** - * @param {String} dashboard_filter_id Id of dashboard filter - */ - _ dashboard_filter_id: String, + public func all_legacy_features( options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_filter_id = encodeParam(dashboard_filter_id) - let result: SDKResponse = self.delete("/dashboard_filters/\(path_dashboard_filter_id)", nil, nil, options) + let result: SDKResponse = self.get("/legacy_features", nil, nil, options) return result } /** - * ### Get information about all the dashboard filters on a dashboard with a specific id. + * ### Get information about the legacy feature with a specific id. * - * GET /dashboards/{dashboard_id}/dashboard_filters -> [DashboardFilter] + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /legacy_features/{legacy_feature_id} -> LegacyFeature */ - public func dashboard_dashboard_filters( - /** - * @param {String} dashboard_id Id of dashboard - */ - _ dashboard_id: String, + public func legacy_feature( /** - * @param {String} fields Requested fields. + * @param {String} legacy_feature_id id of legacy feature */ - fields: String? = nil, + _ legacy_feature_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.get("/dashboards/\(path_dashboard_id)/dashboard_filters", - ["fields": fields], nil, options) + let path_legacy_feature_id = encodeParam(legacy_feature_id) + let result: SDKResponse = self.get("/legacy_features/\(path_legacy_feature_id)", nil, nil, options) return result } /** - * ### Create a dashboard filter on the dashboard with a specific id. + * ### Update information about the legacy feature with a specific id. * - * POST /dashboard_filters -> DashboardFilter + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * PATCH /legacy_features/{legacy_feature_id} -> LegacyFeature */ - public func create_dashboard_filter( + public func update_legacy_feature( /** - * @param {WriteCreateDashboardFilter} body + * @param {String} legacy_feature_id id of legacy feature */ - _ body: WriteCreateDashboardFilter, + _ legacy_feature_id: String, /** - * @param {String} fields Requested fields + * @param {WriteLegacyFeature} body */ - fields: String? = nil, + _ body: WriteLegacyFeature, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/dashboard_filters", - ["fields": fields], try! self.encode(body), options) + let path_legacy_feature_id = encodeParam(legacy_feature_id) + let result: SDKResponse = self.patch("/legacy_features/\(path_legacy_feature_id)", nil, try! self.encode(body), options) return result } /** - * ### Get information about the dashboard elements with a specific id. + * ### Get a list of locales that Looker supports. * - * GET /dashboard_layout_components/{dashboard_layout_component_id} -> DashboardLayoutComponent + * GET /locales -> [LkLocale] */ - public func dashboard_layout_component( - /** - * @param {String} dashboard_layout_component_id Id of dashboard layout component - */ - _ dashboard_layout_component_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func all_locales( options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_layout_component_id = encodeParam(dashboard_layout_component_id) - let result: SDKResponse = self.get("/dashboard_layout_components/\(path_dashboard_layout_component_id)", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/locales", nil, nil, options) return result } /** - * ### Update the dashboard element with a specific id. + * ### Get all mobile settings. * - * PATCH /dashboard_layout_components/{dashboard_layout_component_id} -> DashboardLayoutComponent + * GET /mobile/settings -> MobileSettings */ - public func update_dashboard_layout_component( - /** - * @param {String} dashboard_layout_component_id Id of dashboard layout component - */ - _ dashboard_layout_component_id: String, - /** - * @param {WriteDashboardLayoutComponent} body - */ - _ body: WriteDashboardLayoutComponent, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func mobile_settings( options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_layout_component_id = encodeParam(dashboard_layout_component_id) - let result: SDKResponse = self.patch("/dashboard_layout_components/\(path_dashboard_layout_component_id)", - ["fields": fields], try! self.encode(body), options) + let result: SDKResponse = self.get("/mobile/settings", nil, nil, options) return result } /** - * ### Get information about all the dashboard layout components for a dashboard layout with a specific id. + * ### Get Looker Settings * - * GET /dashboard_layouts/{dashboard_layout_id}/dashboard_layout_components -> [DashboardLayoutComponent] + * Available settings are: + * - allow_user_timezones + * - custom_welcome_email + * - data_connector_default_enabled + * - extension_framework_enabled + * - extension_load_url_enabled + * - marketplace_auto_install_enabled + * - marketplace_automation + * - marketplace_terms_accepted + * - marketplace_enabled + * - marketplace_site + * - onboarding_enabled + * - privatelabel_configuration + * - timezone + * - host_url + * - email_domain_allowlist + * - embed_cookieless_v2 + * - embed_enabled + * - embed_config + * + * GET /setting -> Setting */ - public func dashboard_layout_dashboard_layout_components( - /** - * @param {String} dashboard_layout_id Id of dashboard layout component - */ - _ dashboard_layout_id: String, + public func get_setting( /** - * @param {String} fields Requested fields. + * @param {String} fields Requested fields */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_layout_id = encodeParam(dashboard_layout_id) - let result: SDKResponse = self.get("/dashboard_layouts/\(path_dashboard_layout_id)/dashboard_layout_components", + let result: SDKResponse = self.get("/setting", ["fields": fields], nil, options) return result } /** - * ### Get information about the dashboard layouts with a specific id. + * ### Configure Looker Settings * - * GET /dashboard_layouts/{dashboard_layout_id} -> DashboardLayout + * Available settings are: + * - allow_user_timezones + * - custom_welcome_email + * - data_connector_default_enabled + * - extension_framework_enabled + * - extension_load_url_enabled + * - marketplace_auto_install_enabled + * - marketplace_automation + * - marketplace_terms_accepted + * - marketplace_enabled + * - marketplace_site + * - onboarding_enabled + * - privatelabel_configuration + * - timezone + * - host_url + * - email_domain_allowlist + * - embed_cookieless_v2 + * - embed_enabled + * - embed_config + * + * See the `Setting` type for more information on the specific values that can be configured. + * + * If a setting update is rejected, the API error payload should provide information on the cause of the rejection. + * + * PATCH /setting -> Setting */ - public func dashboard_layout( + public func set_setting( /** - * @param {String} dashboard_layout_id Id of dashboard layouts + * @param {WriteSetting} body */ - _ dashboard_layout_id: String, + _ body: WriteSetting, /** - * @param {String} fields Requested fields. + * @param {String} fields Requested fields */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_layout_id = encodeParam(dashboard_layout_id) - let result: SDKResponse = self.get("/dashboard_layouts/\(path_dashboard_layout_id)", - ["fields": fields], nil, options) + let result: SDKResponse = self.patch("/setting", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Update the dashboard layout with a specific id. + * ### Configure SMTP Settings + * This API allows users to configure the SMTP settings on the Looker instance. + * Only admin users are authorised to call this API. * - * PATCH /dashboard_layouts/{dashboard_layout_id} -> DashboardLayout + * POST /smtp_settings -> Voidable */ - public func update_dashboard_layout( - /** - * @param {String} dashboard_layout_id Id of dashboard layout - */ - _ dashboard_layout_id: String, + public func set_smtp_settings( /** - * @param {WriteDashboardLayout} body + * @param {SmtpSettings} body */ - _ body: WriteDashboardLayout, + _ body: SmtpSettings, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/smtp_settings", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get current SMTP status. + * + * GET /smtp_status -> SmtpStatus + */ + public func smtp_status( /** - * @param {String} fields Requested fields. + * @param {String} fields Include only these fields in the response */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_layout_id = encodeParam(dashboard_layout_id) - let result: SDKResponse = self.patch("/dashboard_layouts/\(path_dashboard_layout_id)", - ["fields": fields], try! self.encode(body), options) + let result: SDKResponse = self.get("/smtp_status", + ["fields": fields], nil, options) return result } /** - * ### Delete a dashboard layout with a specific id. + * ### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks). * - * DELETE /dashboard_layouts/{dashboard_layout_id} -> String + * GET /timezones -> [Timezone] */ - public func delete_dashboard_layout( - /** - * @param {String} dashboard_layout_id Id of dashboard layout - */ - _ dashboard_layout_id: String, + public func all_timezones( options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_layout_id = encodeParam(dashboard_layout_id) - let result: SDKResponse = self.delete("/dashboard_layouts/\(path_dashboard_layout_id)", nil, nil, options) + let result: SDKResponse = self.get("/timezones", nil, nil, options) return result } /** - * ### Get information about all the dashboard elements on a dashboard with a specific id. + * ### Get information about all API versions supported by this Looker instance. * - * GET /dashboards/{dashboard_id}/dashboard_layouts -> [DashboardLayout] + * GET /versions -> ApiVersion */ - public func dashboard_dashboard_layouts( - /** - * @param {String} dashboard_id Id of dashboard - */ - _ dashboard_id: String, + public func versions( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.get("/dashboards/\(path_dashboard_id)/dashboard_layouts", + let result: SDKResponse = self.get("/versions", ["fields": fields], nil, options) return result } /** - * ### Create a dashboard layout on the dashboard with a specific id. + * ### Get an API specification for this Looker instance. * - * POST /dashboard_layouts -> DashboardLayout + * The specification is returned as a JSON document in Swagger 2.x format + * + * GET /api_spec/{api_version}/{specification} -> AnyCodable */ - public func create_dashboard_layout( + public func api_spec( /** - * @param {WriteDashboardLayout} body + * @param {String} api_version API version */ - _ body: WriteDashboardLayout, + _ api_version: String, /** - * @param {String} fields Requested fields. + * @param {String} specification Specification name. Typically, this is "swagger.json" */ - fields: String? = nil, + _ specification: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/dashboard_layouts", - ["fields": fields], try! self.encode(body), options) + let path_api_version = encodeParam(api_version) + let path_specification = encodeParam(specification) + let result: SDKResponse = self.get("/api_spec/\(path_api_version)/\(path_specification)", nil, nil, options) return result } - - - // MARK 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. + * ### This feature is enabled only by special license. + * ### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc. * - * POST /data_actions -> DataActionResponse + * GET /whitelabel_configuration -> WhitelabelConfiguration */ - public func perform_data_action( + @available(*, deprecated) + public func whitelabel_configuration( /** - * @param {DataActionRequest} body + * @param {String} fields Requested fields. */ - _ body: DataActionRequest, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/data_actions", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/whitelabel_configuration", + ["fields": fields], nil, options) return result } /** - * For some data actions, the remote server may supply a form requesting further user input. This endpoint takes a data action, asks the remote server to generate a form for it, and returns that form to you for presentation to the user. + * ### Update the whitelabel configuration * - * POST /data_actions/form -> DataActionForm + * PUT /whitelabel_configuration -> WhitelabelConfiguration */ - public func fetch_remote_data_action_form( + @available(*, deprecated) + public func update_whitelabel_configuration( /** - * @param {StringDictionary} body + * @param {WriteWhitelabelConfiguration} body */ - _ body: StringDictionary, + _ body: WriteWhitelabelConfiguration, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/data_actions/form", nil, try! self.encode(body), options) + let result: SDKResponse = self.put("/whitelabel_configuration", nil, try! self.encode(body), options) return result } - // MARK Datagroup: Manage Datagroups + // MARK Connection: Manage Database Connections /** - * ### Get information about all datagroups. + * ### Get information about all connections. * - * GET /datagroups -> [Datagroup] + * GET /connections -> [DBConnection] */ - public func all_datagroups( + public func all_connections( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/datagroups", nil, nil, options) + let result: SDKResponse = self.get("/connections", + ["fields": fields], nil, options) return result } /** - * ### Get information about a datagroup. + * ### Create a connection using the specified configuration. * - * GET /datagroups/{datagroup_id} -> Datagroup + * POST /connections -> DBConnection */ - public func datagroup( + public func create_connection( /** - * @param {String} datagroup_id ID of datagroup. + * @param {WriteDBConnection} body */ - _ datagroup_id: String, + _ body: WriteDBConnection, options: ITransportSettings? = nil ) -> SDKResponse { - let path_datagroup_id = encodeParam(datagroup_id) - let result: SDKResponse = self.get("/datagroups/\(path_datagroup_id)", nil, nil, options) + let result: SDKResponse = self.post("/connections", nil, try! self.encode(body), options) return result } /** - * ### Update a datagroup using the specified params. + * ### Get information about a connection. * - * PATCH /datagroups/{datagroup_id} -> Datagroup + * GET /connections/{connection_name} -> DBConnection */ - public func update_datagroup( + public func connection( /** - * @param {String} datagroup_id ID of datagroup. + * @param {String} connection_name Name of connection */ - _ datagroup_id: String, + _ connection_name: String, /** - * @param {WriteDatagroup} body + * @param {String} fields Requested fields. */ - _ body: WriteDatagroup, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_datagroup_id = encodeParam(datagroup_id) - let result: SDKResponse = self.patch("/datagroups/\(path_datagroup_id)", nil, try! self.encode(body), options) + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.get("/connections/\(path_connection_name)", + ["fields": fields], nil, options) return result } - - - // MARK DerivedTable: View Derived Table graphs - /** - * ### Discover information about derived tables + * ### Update a connection using the specified configuration. * - * GET /derived_table/graph/model/{model} -> DependencyGraph + * PATCH /connections/{connection_name} -> DBConnection */ - public func graph_derived_tables_for_model( - /** - * @param {String} model The name of the Lookml model. - */ - _ model: String, + public func update_connection( /** - * @param {String} format The format of the graph. Valid values are [dot]. Default is `dot` + * @param {String} connection_name Name of connection */ - format: String? = nil, + _ connection_name: String, /** - * @param {String} color Color denoting the build status of the graph. Grey = not built, green = built, yellow = building, red = error. + * @param {WriteDBConnection} body */ - color: String? = nil, + _ body: WriteDBConnection, options: ITransportSettings? = nil ) -> SDKResponse { - let path_model = encodeParam(model) - let result: SDKResponse = self.get("/derived_table/graph/model/\(path_model)", - ["format": format, "color": color], nil, options) + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.patch("/connections/\(path_connection_name)", nil, try! self.encode(body), options) return result } /** - * ### Get the subgraph representing this derived table and its dependencies. + * ### Delete a connection. * - * GET /derived_table/graph/view/{view} -> DependencyGraph + * DELETE /connections/{connection_name} -> String */ - public func graph_derived_tables_for_view( - /** - * @param {String} view The derived table's view name. - */ - _ view: String, - /** - * @param {String} models The models where this derived table is defined. - */ - models: String? = nil, + public func delete_connection( /** - * @param {String} workspace The model directory to look in, either `dev` or `production`. + * @param {String} connection_name Name of connection */ - workspace: String? = nil, + _ connection_name: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_view = encodeParam(view) - let result: SDKResponse = self.get("/derived_table/graph/view/\(path_view)", - ["models": models, "workspace": workspace], nil, options) + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.delete("/connections/\(path_connection_name)", nil, nil, options) return result } /** - * Enqueue materialization for a PDT with the given model name and view name + * ### Delete a connection override. * - * GET /derived_table/{model_name}/{view_name}/start -> MaterializePDT + * DELETE /connections/{connection_name}/connection_override/{override_context} -> String */ - public func start_pdt_build( + public func delete_connection_override( /** - * @param {String} model_name The model of the PDT to start building. + * @param {String} connection_name Name of connection */ - _ model_name: String, - /** - * @param {String} view_name The view name of the PDT to start building. - */ - _ view_name: String, - /** - * @param {String} force_rebuild Force rebuild of required dependent PDTs, even if they are already materialized. - */ - force_rebuild: String? = nil, - /** - * @param {String} force_full_incremental Force involved incremental PDTs to fully re-materialize. - */ - force_full_incremental: String? = nil, - /** - * @param {String} workspace Workspace in which to materialize selected PDT ('dev' or default 'production'). - */ - workspace: String? = nil, + _ connection_name: String, /** - * @param {String} source The source of this request. + * @param {String} override_context Context of connection override */ - source: String? = nil, + _ override_context: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_model_name = encodeParam(model_name) - let path_view_name = encodeParam(view_name) - let result: SDKResponse = self.get("/derived_table/\(path_model_name)/\(path_view_name)/start", - ["force_rebuild": force_rebuild, "force_full_incremental": force_full_incremental, "workspace": workspace, "source": source], nil, options) + let path_connection_name = encodeParam(connection_name) + let path_override_context = encodeParam(override_context) + let result: SDKResponse = self.delete("/connections/\(path_connection_name)/connection_override/\(path_override_context)", nil, nil, options) return result } /** - * Check status of PDT materialization + * ### Test an existing connection. * - * GET /derived_table/{materialization_id}/status -> MaterializePDT + * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the + * specific types of tests that the connection supports. + * + * This API is rate limited. + * + * Unsupported tests in the request will be ignored. + * + * PUT /connections/{connection_name}/test -> [DBConnectionTestResult] */ - public func check_pdt_build( + public func test_connection( /** - * @param {String} materialization_id The materialization id to check status for. + * @param {String} connection_name Name of connection */ - _ materialization_id: String, + _ connection_name: String, + /** + * @param {DelimArray} tests Array of names of tests to run + */ + tests: DelimArray? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_materialization_id = encodeParam(materialization_id) - let result: SDKResponse = self.get("/derived_table/\(path_materialization_id)/status", nil, nil, options) + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.put("/connections/\(path_connection_name)/test", + ["tests": tests as Any?], nil, options) return result } /** - * Stop a PDT materialization + * ### Test a connection configuration. * - * GET /derived_table/{materialization_id}/stop -> MaterializePDT + * Note that a connection's 'dialect' property has a 'connection_tests' property that lists the + * specific types of tests that the connection supports. + * + * This API is rate limited. + * + * Unsupported tests in the request will be ignored. + * + * PUT /connections/test -> [DBConnectionTestResult] */ - public func stop_pdt_build( + public func test_connection_config( /** - * @param {String} materialization_id The materialization id to stop. + * @param {WriteDBConnection} body */ - _ materialization_id: String, + _ body: WriteDBConnection, /** - * @param {String} source The source of this request. + * @param {DelimArray} tests Array of names of tests to run */ - source: String? = nil, + tests: DelimArray? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_materialization_id = encodeParam(materialization_id) - let result: SDKResponse = self.get("/derived_table/\(path_materialization_id)/stop", - ["source": source], nil, options) + let result: SDKResponse = self.put("/connections/test", + ["tests": tests as Any?], try! self.encode(body), options) return result } - - - // MARK Folder: Manage Folders - /** - * Search for folders by creator id, parent id, name, etc + * ### Get information about all dialects. * - * GET /folders/search -> [Folder] + * GET /dialect_info -> [DialectInfo] */ - public func search_folders( + public func all_dialect_infos( /** * @param {String} fields Requested fields. */ fields: String? = nil, - /** - * @param {Int64} page Return only page N of paginated results - */ - page: Int64? = nil, - /** - * @param {Int64} per_page Return N rows of data per page - */ - per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {String} name Match Space title. - */ - name: String? = nil, - /** - * @param {Int64} id Match Space id - */ - id: Int64? = nil, - /** - * @param {String} parent_id Filter on a children of a particular folder. - */ - parent_id: String? = nil, - /** - * @param {String} creator_id Filter on folder created by a particular user. - */ - creator_id: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, - /** - * @param {Bool} is_shared_root Match is shared root - */ - is_shared_root: Bool? = nil, - /** - * @param {Bool} is_users_root Match is users root - */ - is_users_root: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/folders/search", - ["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 as Any?, "is_shared_root": is_shared_root as Any?, "is_users_root": is_users_root as Any?], nil, options) + let result: SDKResponse = self.get("/dialect_info", + ["fields": fields], nil, options) return result } /** - * ### Get information about the folder with a specific id. + * ### Get all External OAuth Applications. * - * GET /folders/{folder_id} -> Folder + * This is an OAuth Application which Looker uses to access external systems. + * + * GET /external_oauth_applications -> [ExternalOauthApplication] */ - public func folder( + public func all_external_oauth_applications( /** - * @param {String} folder_id Id of folder + * @param {String} name Application name */ - _ folder_id: String, + name: String? = nil, /** - * @param {String} fields Requested fields. + * @param {String} client_id Application Client ID */ - fields: String? = nil, + client_id: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.get("/folders/\(path_folder_id)", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/external_oauth_applications", + ["name": name, "client_id": client_id], nil, options) return result } /** - * ### Update the folder with a specific id. + * ### Create an OAuth Application using the specified configuration. * - * PATCH /folders/{folder_id} -> Folder + * This is an OAuth Application which Looker uses to access external systems. + * + * POST /external_oauth_applications -> ExternalOauthApplication */ - public func update_folder( - /** - * @param {String} folder_id Id of folder - */ - _ folder_id: String, + public func create_external_oauth_application( /** - * @param {UpdateFolder} body + * @param {WriteExternalOauthApplication} body */ - _ body: UpdateFolder, + _ body: WriteExternalOauthApplication, options: ITransportSettings? = nil ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.patch("/folders/\(path_folder_id)", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/external_oauth_applications", nil, try! self.encode(body), options) return result } /** - * ### Delete the folder with a specific id including any children folders. - * **DANGER** this will delete all looks and dashboards in the folder. + * ### Create OAuth User state. * - * DELETE /folders/{folder_id} -> String + * POST /external_oauth_applications/user_state -> CreateOAuthApplicationUserStateResponse */ - public func delete_folder( + public func create_oauth_application_user_state( /** - * @param {String} folder_id Id of folder + * @param {CreateOAuthApplicationUserStateRequest} body */ - _ folder_id: String, + _ body: CreateOAuthApplicationUserStateRequest, options: ITransportSettings? = nil ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.delete("/folders/\(path_folder_id)", nil, nil, options) + let result: SDKResponse = self.post("/external_oauth_applications/user_state", nil, try! self.encode(body), options) return result } /** - * ### Get information about all folders. - * - * In API 3.x, this will not return empty personal folders, unless they belong to the calling user, - * or if they contain soft-deleted content. - * - * In API 4.0+, all personal folders will be returned. + * ### Get information about all SSH Servers. * - * GET /folders -> [Folder] + * GET /ssh_servers -> [SshServer] */ - public func all_folders( + public func all_ssh_servers( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/folders", + let result: SDKResponse = self.get("/ssh_servers", ["fields": fields], nil, options) return result } /** - * ### Create a folder with specified information. - * - * Caller must have permission to edit the parent folder and to create folders, otherwise the request - * returns 404 Not Found. + * ### Create an SSH Server. * - * POST /folders -> Folder + * POST /ssh_servers -> SshServer */ - public func create_folder( + public func create_ssh_server( /** - * @param {CreateFolder} body + * @param {WriteSshServer} body */ - _ body: CreateFolder, + _ body: WriteSshServer, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/folders", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/ssh_servers", nil, try! self.encode(body), options) return result } /** - * ### Get the children of a folder. + * ### Get information about an SSH Server. * - * GET /folders/{folder_id}/children -> [Folder] + * GET /ssh_server/{ssh_server_id} -> SshServer */ - public func folder_children( + public func ssh_server( /** - * @param {String} folder_id Id of folder - */ - _ folder_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Int64} page Return only page N of paginated results + * @param {String} ssh_server_id Id of SSH Server */ - page: Int64? = nil, - /** - * @param {Int64} per_page Return N rows of data per page - */ - per_page: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, + _ ssh_server_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.get("/folders/\(path_folder_id)/children", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts], nil, options) + let path_ssh_server_id = encodeParam(ssh_server_id) + let result: SDKResponse = self.get("/ssh_server/\(path_ssh_server_id)", nil, nil, options) return result } /** - * ### Search the children of a folder + * ### Update an SSH Server. * - * GET /folders/{folder_id}/children/search -> [Folder] + * PATCH /ssh_server/{ssh_server_id} -> SshServer */ - public func folder_children_search( - /** - * @param {String} folder_id Id of folder - */ - _ folder_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func update_ssh_server( /** - * @param {String} sorts Fields to sort by. + * @param {String} ssh_server_id Id of SSH Server */ - sorts: String? = nil, + _ ssh_server_id: String, /** - * @param {String} name Match folder name. + * @param {WriteSshServer} body */ - name: String? = nil, + _ body: WriteSshServer, options: ITransportSettings? = nil ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.get("/folders/\(path_folder_id)/children/search", - ["fields": fields, "sorts": sorts, "name": name], nil, options) + let path_ssh_server_id = encodeParam(ssh_server_id) + let result: SDKResponse = self.patch("/ssh_server/\(path_ssh_server_id)", nil, try! self.encode(body), options) return result } /** - * ### Get the parent of a folder + * ### Delete an SSH Server. * - * GET /folders/{folder_id}/parent -> Folder + * DELETE /ssh_server/{ssh_server_id} -> String */ - public func folder_parent( - /** - * @param {String} folder_id Id of folder - */ - _ folder_id: String, + public func delete_ssh_server( /** - * @param {String} fields Requested fields. + * @param {String} ssh_server_id Id of SSH Server */ - fields: String? = nil, + _ ssh_server_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.get("/folders/\(path_folder_id)/parent", - ["fields": fields], nil, options) + let path_ssh_server_id = encodeParam(ssh_server_id) + let result: SDKResponse = self.delete("/ssh_server/\(path_ssh_server_id)", nil, nil, options) return result } /** - * ### Get the ancestors of a folder + * ### Test the SSH Server * - * GET /folders/{folder_id}/ancestors -> [Folder] + * GET /ssh_server/{ssh_server_id}/test -> SshServer */ - public func folder_ancestors( + public func test_ssh_server( /** - * @param {String} folder_id Id of folder + * @param {String} ssh_server_id Id of SSH Server */ - _ folder_id: String, + _ ssh_server_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_ssh_server_id = encodeParam(ssh_server_id) + let result: SDKResponse = self.get("/ssh_server/\(path_ssh_server_id)/test", nil, nil, options) + return result + } + + /** + * ### Get information about all SSH Tunnels. + * + * GET /ssh_tunnels -> [SshTunnel] + */ + public func all_ssh_tunnels( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.get("/folders/\(path_folder_id)/ancestors", + let result: SDKResponse = self.get("/ssh_tunnels", ["fields": fields], nil, options) return result } /** - * ### Get all looks in a folder. - * In API 3.x, this will return all looks in a folder, including looks in the trash. - * In API 4.0+, all looks in a folder will be returned, excluding looks in the trash. + * ### Create an SSH Tunnel * - * GET /folders/{folder_id}/looks -> [LookWithQuery] + * POST /ssh_tunnels -> SshTunnel */ - public func folder_looks( - /** - * @param {String} folder_id Id of folder - */ - _ folder_id: String, + public func create_ssh_tunnel( /** - * @param {String} fields Requested fields. + * @param {WriteSshTunnel} body */ - fields: String? = nil, + _ body: WriteSshTunnel, options: ITransportSettings? = nil ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.get("/folders/\(path_folder_id)/looks", - ["fields": fields], nil, options) + let result: SDKResponse = self.post("/ssh_tunnels", nil, try! self.encode(body), options) return result } /** - * ### Get the dashboards in a folder + * ### Get information about an SSH Tunnel. * - * GET /folders/{folder_id}/dashboards -> [Dashboard] + * GET /ssh_tunnel/{ssh_tunnel_id} -> SshTunnel */ - public func folder_dashboards( + public func ssh_tunnel( /** - * @param {String} folder_id Id of folder - */ - _ folder_id: String, - /** - * @param {String} fields Requested fields. + * @param {String} ssh_tunnel_id Id of SSH Tunnel */ - fields: String? = nil, + _ ssh_tunnel_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_folder_id = encodeParam(folder_id) - let result: SDKResponse = self.get("/folders/\(path_folder_id)/dashboards", - ["fields": fields], nil, options) + let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) + let result: SDKResponse = self.get("/ssh_tunnel/\(path_ssh_tunnel_id)", nil, nil, options) return result } - - - // MARK Group: Manage Groups - /** - * ### Get information about all groups. + * ### Update an SSH Tunnel * - * GET /groups -> [LkGroup] + * PATCH /ssh_tunnel/{ssh_tunnel_id} -> SshTunnel */ - public func all_groups( + public func update_ssh_tunnel( /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Int64} page Return only page N of paginated results - */ - page: Int64? = nil, - /** - * @param {Int64} per_page Return N rows of data per page - */ - per_page: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {DelimArray} ids Optional of ids to get specific groups. - */ - ids: DelimArray? = nil, - /** - * @param {Int64} content_metadata_id Id of content metadata to which groups must have access. + * @param {String} ssh_tunnel_id Id of SSH Tunnel */ - content_metadata_id: Int64? = nil, + _ ssh_tunnel_id: String, /** - * @param {Bool} can_add_to_content_metadata Select only groups that either can/cannot be given access to content. + * @param {WriteSshTunnel} body */ - can_add_to_content_metadata: Bool? = nil, + _ body: WriteSshTunnel, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/groups", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "ids": ids as Any?, "content_metadata_id": content_metadata_id, "can_add_to_content_metadata": can_add_to_content_metadata as Any?], nil, options) + let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) + let result: SDKResponse = self.patch("/ssh_tunnel/\(path_ssh_tunnel_id)", nil, try! self.encode(body), options) return result } /** - * ### Creates a new group (admin only). + * ### Delete an SSH Tunnel * - * POST /groups -> LkGroup + * DELETE /ssh_tunnel/{ssh_tunnel_id} -> String */ - public func create_group( + public func delete_ssh_tunnel( /** - * @param {WriteGroup} body + * @param {String} ssh_tunnel_id Id of SSH Tunnel */ - _ body: WriteGroup, + _ ssh_tunnel_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) + let result: SDKResponse = self.delete("/ssh_tunnel/\(path_ssh_tunnel_id)", nil, nil, options) + return result + } + + /** + * ### Test the SSH Tunnel + * + * GET /ssh_tunnel/{ssh_tunnel_id}/test -> SshTunnel + */ + public func test_ssh_tunnel( /** - * @param {String} fields Requested fields. + * @param {String} ssh_tunnel_id Id of SSH Tunnel */ - fields: String? = nil, + _ ssh_tunnel_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/groups", - ["fields": fields], try! self.encode(body), options) + let path_ssh_tunnel_id = encodeParam(ssh_tunnel_id) + let result: SDKResponse = self.get("/ssh_tunnel/\(path_ssh_tunnel_id)/test", nil, nil, options) return result } /** - * ### Search groups + * ### Get the SSH public key * - * Returns all group records that match the given search criteria. + * Get the public key created for this instance to identify itself to a remote SSH server. + * + * GET /ssh_public_key -> SshPublicKey + */ + public func ssh_public_key( + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/ssh_public_key", nil, nil, options) + return result + } + + + + // MARK Content: Manage Content + + /** + * ### Search Favorite Content * * If multiple search params are given and `filter_or` is FALSE or not specified, * search params are combined in a logical AND operation. @@ -3475,359 +3520,379 @@ open class LookerSDKStream: APIMethods { * * Boolean search params accept only "true" and "false" as values. * - * GET /groups/search -> [LkGroup] + * GET /content_favorite/search -> [ContentFavorite] */ - public func search_groups( + public func search_content_favorites( /** - * @param {String} fields Requested fields. + * @param {String} id Match content favorite id(s) */ - fields: String? = nil, + id: String? = nil, /** - * @param {Int64} limit Number of results to return (used with `offset`). + * @param {String} user_id Match user id(s).To create a list of multiple ids, use commas as separators */ - limit: Int64? = nil, + user_id: String? = nil, /** - * @param {Int64} offset Number of results to skip before returning any (used with `limit`). + * @param {String} content_metadata_id Match content metadata id(s).To create a list of multiple ids, use commas as separators */ - offset: Int64? = nil, + content_metadata_id: String? = nil, /** - * @param {String} sorts Fields to sort by. + * @param {String} dashboard_id Match dashboard id(s).To create a list of multiple ids, use commas as separators */ - sorts: String? = nil, + dashboard_id: String? = nil, /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {String} look_id Match look id(s).To create a list of multiple ids, use commas as separators */ - filter_or: Bool? = nil, + look_id: String? = nil, /** - * @param {Int64} id Match group id. + * @param {String} board_id Match board id(s).To create a list of multiple ids, use commas as separators */ - id: Int64? = nil, + board_id: String? = nil, /** - * @param {String} name Match group name. + * @param {Int64} limit Number of results to return. (used with offset) */ - name: String? = nil, + limit: Int64? = nil, /** - * @param {String} external_group_id Match group external_group_id. + * @param {Int64} offset Number of results to skip before returning any. (used with limit) */ - external_group_id: String? = nil, + offset: Int64? = nil, /** - * @param {Bool} externally_managed Match group externally_managed. + * @param {String} sorts Fields to sort by. */ - externally_managed: Bool? = nil, + sorts: String? = nil, /** - * @param {Bool} externally_orphaned Match group externally_orphaned. + * @param {String} fields Requested fields. */ - externally_orphaned: Bool? = nil, + fields: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/groups/search", - ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) + let result: SDKResponse = self.get("/content_favorite/search", + ["id": id, "user_id": user_id, "content_metadata_id": content_metadata_id, "dashboard_id": dashboard_id, "look_id": look_id, "board_id": board_id, "limit": limit, "offset": offset, "sorts": sorts, "fields": fields, "filter_or": filter_or as Any?], nil, options) return result } /** - * ### Get information about a group. + * ### Get favorite content by its id * - * GET /groups/{group_id} -> LkGroup + * GET /content_favorite/{content_favorite_id} -> ContentFavorite */ - public func group( + public func content_favorite( /** - * @param {Int64} group_id Id of group + * @param {String} content_favorite_id Id of favorite content */ - _ group_id: Int64, + _ content_favorite_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.get("/groups/\(path_group_id)", + let path_content_favorite_id = encodeParam(content_favorite_id) + let result: SDKResponse = self.get("/content_favorite/\(path_content_favorite_id)", ["fields": fields], nil, options) return result } /** - * ### Updates the a group (admin only). + * ### Delete favorite content * - * PATCH /groups/{group_id} -> LkGroup + * DELETE /content_favorite/{content_favorite_id} -> String */ - public func update_group( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, - /** - * @param {WriteGroup} body - */ - _ body: WriteGroup, + public func delete_content_favorite( /** - * @param {String} fields Requested fields. + * @param {String} content_favorite_id Id of favorite content */ - fields: String? = nil, + _ content_favorite_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.patch("/groups/\(path_group_id)", - ["fields": fields], try! self.encode(body), options) + let path_content_favorite_id = encodeParam(content_favorite_id) + let result: SDKResponse = self.delete("/content_favorite/\(path_content_favorite_id)", nil, nil, options) return result } /** - * ### Deletes a group (admin only). + * ### Create favorite content * - * DELETE /groups/{group_id} -> String + * POST /content_favorite -> ContentFavorite */ - public func delete_group( + public func create_content_favorite( /** - * @param {Int64} group_id Id of group + * @param {WriteContentFavorite} body */ - _ group_id: Int64, + _ body: WriteContentFavorite, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)", nil, nil, options) + let result: SDKResponse = self.post("/content_favorite", nil, try! self.encode(body), options) return result } /** - * ### Get information about all the groups in a group + * ### Get information about all content metadata in a space. * - * GET /groups/{group_id}/groups -> [LkGroup] + * GET /content_metadata -> [ContentMeta] */ - public func all_group_groups( + public func all_content_metadatas( /** - * @param {Int64} group_id Id of group + * @param {String} parent_id Parent space of content. */ - _ group_id: Int64, + _ parent_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.get("/groups/\(path_group_id)/groups", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/content_metadata", + ["parent_id": parent_id, "fields": fields], nil, options) return result } /** - * ### Adds a new group to a group. + * ### Get information about an individual content metadata record. * - * POST /groups/{group_id}/groups -> LkGroup + * GET /content_metadata/{content_metadata_id} -> ContentMeta */ - public func add_group_group( + public func content_metadata( /** - * @param {Int64} group_id Id of group + * @param {String} content_metadata_id Id of content metadata */ - _ group_id: Int64, + _ content_metadata_id: String, /** - * @param {GroupIdForGroupInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH + * @param {String} fields Requested fields. */ - _ body: GroupIdForGroupInclusion, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.post("/groups/\(path_group_id)/groups", nil, try! self.encode(body), options) + let path_content_metadata_id = encodeParam(content_metadata_id) + let result: SDKResponse = self.get("/content_metadata/\(path_content_metadata_id)", + ["fields": fields], nil, options) return result } /** - * ### Get information about all the users directly included in a group. + * ### Move a piece of content. * - * GET /groups/{group_id}/users -> [User] + * PATCH /content_metadata/{content_metadata_id} -> ContentMeta */ - public func all_group_users( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Int64} page Return only page N of paginated results - */ - page: Int64? = nil, + public func update_content_metadata( /** - * @param {Int64} per_page Return N rows of data per page + * @param {String} content_metadata_id Id of content metadata */ - per_page: Int64? = nil, + _ content_metadata_id: String, /** - * @param {String} sorts Fields to sort by. + * @param {WriteContentMeta} body */ - sorts: String? = nil, + _ body: WriteContentMeta, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.get("/groups/\(path_group_id)/users", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts], nil, options) + let path_content_metadata_id = encodeParam(content_metadata_id) + let result: SDKResponse = self.patch("/content_metadata/\(path_content_metadata_id)", nil, try! self.encode(body), options) return result } /** - * ### Adds a new user to a group. + * ### All content metadata access records for a content metadata item. * - * POST /groups/{group_id}/users -> User + * GET /content_metadata_access -> [ContentMetaGroupUser] */ - public func add_group_user( + public func all_content_metadata_accesses( /** - * @param {Int64} group_id Id of group + * @param {String} content_metadata_id Id of content metadata */ - _ group_id: Int64, + _ content_metadata_id: String, /** - * @param {GroupIdForGroupUserInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH + * @param {String} fields Requested fields. */ - _ body: GroupIdForGroupUserInclusion, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let result: SDKResponse = self.post("/groups/\(path_group_id)/users", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/content_metadata_access", + ["content_metadata_id": content_metadata_id, "fields": fields], nil, options) return result } /** - * ### Removes a user from a group. + * ### Create content metadata access. * - * DELETE /groups/{group_id}/users/{user_id} -> Voidable + * POST /content_metadata_access -> ContentMetaGroupUser */ - public func delete_group_user( + public func create_content_metadata_access( /** - * @param {Int64} group_id Id of group + * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH */ - _ group_id: Int64, + _ body: ContentMetaGroupUser, /** - * @param {Int64} user_id Id of user to remove from group + * @param {Bool} send_boards_notification_email Optionally sends notification email when granting access to a board. */ - _ user_id: Int64, + send_boards_notification_email: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_user_id = encodeParam(user_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)/users/\(path_user_id)", nil, nil, options) + let result: SDKResponse = self.post("/content_metadata_access", + ["send_boards_notification_email": send_boards_notification_email as Any?], try! self.encode(body), options) return result } /** - * ### Removes a group from a group. + * ### Update type of access for content metadata. * - * DELETE /groups/{group_id}/groups/{deleting_group_id} -> Voidable + * PUT /content_metadata_access/{content_metadata_access_id} -> ContentMetaGroupUser */ - public func delete_group_from_group( + public func update_content_metadata_access( /** - * @param {Int64} group_id Id of group + * @param {String} content_metadata_access_id Id of content metadata access */ - _ group_id: Int64, + _ content_metadata_access_id: String, /** - * @param {Int64} deleting_group_id Id of group to delete + * @param {ContentMetaGroupUser} body WARNING: no writeable properties found for POST, PUT, or PATCH */ - _ deleting_group_id: Int64, + _ body: ContentMetaGroupUser, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_deleting_group_id = encodeParam(deleting_group_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)/groups/\(path_deleting_group_id)", nil, nil, options) + let path_content_metadata_access_id = encodeParam(content_metadata_access_id) + let result: SDKResponse = self.put("/content_metadata_access/\(path_content_metadata_access_id)", nil, try! self.encode(body), options) return result } /** - * ### Set the value of a user attribute for a group. - * - * For information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values). + * ### Remove content metadata access. * - * PATCH /groups/{group_id}/attribute_values/{user_attribute_id} -> UserAttributeGroupValue + * DELETE /content_metadata_access/{content_metadata_access_id} -> String */ - public func update_user_attribute_group_value( - /** - * @param {Int64} group_id Id of group - */ - _ group_id: Int64, - /** - * @param {Int64} user_attribute_id Id of user attribute - */ - _ user_attribute_id: Int64, + public func delete_content_metadata_access( /** - * @param {UserAttributeGroupValue} body WARNING: no writeable properties found for POST, PUT, or PATCH + * @param {String} content_metadata_access_id Id of content metadata access */ - _ body: UserAttributeGroupValue, + _ content_metadata_access_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_user_attribute_id = encodeParam(user_attribute_id) - let result: SDKResponse = self.patch("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, try! self.encode(body), options) + let path_content_metadata_access_id = encodeParam(content_metadata_access_id) + let result: SDKResponse = self.delete("/content_metadata_access/\(path_content_metadata_access_id)", nil, nil, options) return result } /** - * ### Remove a user attribute value from a group. + * ### Search across looks, dashboards, and lookml dashboards. The terms field will be matched against the + * title and description of the content and the closest results are returned. Content that has been frequently + * viewed and those pieces of content stored in public folders will be ranked more highly in the results. * - * DELETE /groups/{group_id}/attribute_values/{user_attribute_id} -> Voidable + * This endpoint does not return a full description of these content types. For more specific information + * about each type please refer to the individual content specific API endpoints. + * + * Get the **full details** of a specific dashboard (or lookml dashboard) by id with [dashboard()](#!/Dashboard/dashboard) + * Get the **full details** of a specific look by id with [look()](#!/Look/look) + * + * GET /content/{terms} -> [ContentSearch] */ - public func delete_user_attribute_group_value( + public func search_content( + /** + * @param {String} terms Search terms + */ + _ terms: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {String} types Content types requested (dashboard, look, lookml_dashboard). + */ + types: String? = nil, /** - * @param {Int64} group_id Id of group + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, + /** + * @param {Int64} page Requested page. */ - _ group_id: Int64, + page: Int64? = nil, /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {Int64} per_page Results per page. */ - _ user_attribute_id: Int64, + per_page: Int64? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_group_id = encodeParam(group_id) - let path_user_attribute_id = encodeParam(user_attribute_id) - let result: SDKResponse = self.delete("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, nil, options) + let path_terms = encodeParam(terms) + let result: SDKResponse = self.get("/content/\(path_terms)", + ["fields": fields, "types": types, "limit": limit, "offset": offset, "page": page, "per_page": per_page], nil, options) return result } - - - // MARK Homepage: Manage Homepage - /** - * ### Get information about all homepages. + * ### Get an image representing the contents of a dashboard or look. + * + * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not + * reflect the actual data displayed in the respective visualizations. + * + * GET /content_thumbnail/{type}/{resource_id} -> String * - * GET /homepages -> [Homepage] + * **Note**: Binary content may be returned by this method. */ - @available(*, deprecated) - public func all_homepages( + public func content_thumbnail( /** - * @param {String} fields Requested fields. + * @param {String} type Either dashboard or look */ - fields: String? = nil, + _ type: String, + /** + * @param {String} resource_id ID of the dashboard or look to render + */ + _ resource_id: String, + /** + * @param {String} reload Whether or not to refresh the rendered image with the latest content + */ + reload: String? = nil, + /** + * @param {String} theme Light or dark background. Default is "light" + */ + theme: String? = nil, + /** + * @param {String} format A value of png produces a thumbnail in PNG format instead of SVG (default) + */ + format: String? = nil, + /** + * @param {Int64} width The width of the image if format is supplied + */ + width: Int64? = nil, + /** + * @param {Int64} height The height of the image if format is supplied + */ + height: Int64? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/homepages", - ["fields": fields], nil, options) + let path_type = encodeParam(type) + let path_resource_id = encodeParam(resource_id) + let result: SDKResponse = self.get("/content_thumbnail/\(path_type)/\(path_resource_id)", + ["reload": reload, "theme": theme, "format": format, "width": width, "height": height], nil, options) return result } /** - * ### Create a new homepage. + * ### Validate All Content + * + * Performs validation of all looks and dashboards + * Returns a list of errors found as well as metadata about the content validation run. * - * POST /homepages -> Homepage + * GET /content_validation -> ContentValidation */ - @available(*, deprecated) - public func create_homepage( - /** - * @param {WriteHomepage} body - */ - _ body: WriteHomepage, + public func content_validation( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/homepages", - ["fields": fields], try! self.encode(body), options) + let result: SDKResponse = self.get("/content_validation", + ["fields": fields], nil, options) return result } /** - * ### Search Homepages + * ### Search Content Views * * If multiple search params are given and `filter_or` is FALSE or not specified, * search params are combined in a logical AND operation. @@ -3850,56 +3915,55 @@ open class LookerSDKStream: APIMethods { * * Boolean search params accept only "true" and "false" as values. * - * GET /homepages/search -> [Homepage] + * GET /content_view/search -> [ContentView] */ - @available(*, deprecated) - public func search_homepages( + public func search_content_views( /** - * @param {String} title Matches homepage title. + * @param {String} view_count Match view count */ - title: String? = nil, + view_count: String? = nil, /** - * @param {String} created_at Matches the timestamp for when the homepage was created. + * @param {String} group_id Match Group Id */ - created_at: String? = nil, + group_id: String? = nil, /** - * @param {String} first_name The first name of the user who created this homepage. + * @param {String} look_id Match look_id */ - first_name: String? = nil, + look_id: String? = nil, /** - * @param {String} last_name The last name of the user who created this homepage. + * @param {String} dashboard_id Match dashboard_id */ - last_name: String? = nil, + dashboard_id: String? = nil, /** - * @param {String} fields Requested fields. + * @param {String} content_metadata_id Match content metadata id */ - fields: String? = nil, + content_metadata_id: String? = nil, /** - * @param {Bool} favorited Return favorited homepages when true. + * @param {String} start_of_week_date Match start of week date (format is "YYYY-MM-DD") */ - favorited: Bool? = nil, + start_of_week_date: String? = nil, /** - * @param {String} creator_id Filter on homepages created by a particular user. + * @param {Bool} all_time True if only all time view records should be returned */ - creator_id: String? = nil, + all_time: Bool? = nil, /** - * @param {Int64} page The page to return. + * @param {String} user_id Match user id */ - page: Int64? = nil, + user_id: String? = nil, /** - * @param {Int64} per_page The number of items in the returned page. + * @param {String} fields Requested fields */ - per_page: Int64? = nil, + fields: String? = nil, /** - * @param {Int64} offset The number of items to skip before returning any. (used with limit and takes priority over page and per_page) + * @param {Int64} limit Number of results to return. Use with `offset` to manage pagination of results */ - offset: Int64? = nil, + limit: Int64? = nil, /** - * @param {Int64} limit The maximum number of items to return. (used with offset and takes priority over page and per_page) + * @param {Int64} offset Number of results to skip before returning data */ - limit: Int64? = nil, + offset: Int64? = nil, /** - * @param {String} sorts The fields to sort the results by. + * @param {String} sorts Fields to sort by */ sorts: String? = nil, /** @@ -3908,2185 +3972,4418 @@ open class LookerSDKStream: APIMethods { filter_or: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/homepages/search", - ["title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited as Any?, "creator_id": creator_id, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) + let result: SDKResponse = self.get("/content_view/search", + ["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 as Any?, "user_id": user_id, "fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) return result } /** - * ### Get information about a homepage. + * ### Get a vector image representing the contents of a dashboard or look. + * + * # DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail) + * + * The returned thumbnail is an abstract representation of the contents of a dashbord or look and does not + * reflect the actual data displayed in the respective visualizations. * - * GET /homepages/{homepage_id} -> Homepage + * GET /vector_thumbnail/{type}/{resource_id} -> String */ @available(*, deprecated) - public func homepage( + public func vector_thumbnail( + /** + * @param {String} type Either dashboard or look + */ + _ type: String, /** - * @param {Int64} homepage_id Id of homepage + * @param {String} resource_id ID of the dashboard or look to render */ - _ homepage_id: Int64, + _ resource_id: String, /** - * @param {String} fields Requested fields. + * @param {String} reload Whether or not to refresh the rendered image with the latest content */ - fields: String? = nil, + reload: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_homepage_id = encodeParam(homepage_id) - let result: SDKResponse = self.get("/homepages/\(path_homepage_id)", - ["fields": fields], nil, options) + let path_type = encodeParam(type) + let path_resource_id = encodeParam(resource_id) + let result: SDKResponse = self.get("/vector_thumbnail/\(path_type)/\(path_resource_id)", + ["reload": reload], nil, options) return result } + + + // MARK Dashboard: Manage Dashboards + /** - * ### Update a homepage definition. + * ### Get information about all active dashboards. + * + * Returns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list. + * + * Get the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard) + * + * Find **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards) * - * PATCH /homepages/{homepage_id} -> Homepage + * GET /dashboards -> [DashboardBase] */ - @available(*, deprecated) - public func update_homepage( - /** - * @param {Int64} homepage_id Id of homepage - */ - _ homepage_id: Int64, - /** - * @param {WriteHomepage} body - */ - _ body: WriteHomepage, + public func all_dashboards( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_homepage_id = encodeParam(homepage_id) - let result: SDKResponse = self.patch("/homepages/\(path_homepage_id)", - ["fields": fields], try! self.encode(body), options) + let result: SDKResponse = self.get("/dashboards", + ["fields": fields], nil, options) return result } /** - * ### Delete a homepage. + * ### Create a new dashboard + * + * Creates a new dashboard object and returns the details of the newly created dashboard. + * + * `Title` and `space_id` are required fields. + * `Space_id` must contain the id of an existing space. + * A dashboard's `title` must be unique within the space in which it resides. + * + * If you receive a 422 error response when creating a dashboard, be sure to look at the + * response body for information about exactly which fields are missing or contain invalid data. + * + * You can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard) + * + * You can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard) * - * DELETE /homepages/{homepage_id} -> String + * POST /dashboards -> Dashboard */ - @available(*, deprecated) - public func delete_homepage( + public func create_dashboard( /** - * @param {Int64} homepage_id Id of homepage + * @param {WriteDashboard} body */ - _ homepage_id: Int64, + _ body: WriteDashboard, options: ITransportSettings? = nil ) -> SDKResponse { - let path_homepage_id = encodeParam(homepage_id) - let result: SDKResponse = self.delete("/homepages/\(path_homepage_id)", nil, nil, options) + let result: SDKResponse = self.post("/dashboards", nil, try! self.encode(body), options) return result } /** - * ### Get information about all homepage items. + * ### Search Dashboards + * + * Returns an array of **user-defined dashboard** objects that match the specified search criteria. + * Note, [search_dashboards()](#!/Dashboard/search_dashboards) does not return LookML dashboard objects. + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * * - * GET /homepage_items -> [HomepageItem] + * The parameters `limit`, and `offset` are recommended for fetching results in page-size chunks. + * + * Get a **single dashboard** by id with [dashboard()](#!/Dashboard/dashboard) + * + * GET /dashboards/search -> [Dashboard] */ - @available(*, deprecated) - public func all_homepage_items( + public func search_dashboards( /** - * @param {String} fields Requested fields. + * @param {String} id Match dashboard id. */ - fields: String? = nil, + id: String? = nil, /** - * @param {String} sorts Fields to sort by. + * @param {String} slug Match dashboard slug. */ - sorts: String? = nil, + slug: String? = nil, /** - * @param {String} homepage_section_id Filter to a specific homepage section + * @param {String} title Match Dashboard title. */ - homepage_section_id: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/homepage_items", - ["fields": fields, "sorts": sorts, "homepage_section_id": homepage_section_id], nil, options) - return result - } - - /** - * ### Create a new homepage item. - * - * POST /homepage_items -> HomepageItem - */ - @available(*, deprecated) - public func create_homepage_item( + title: String? = nil, + /** + * @param {String} description Match Dashboard description. + */ + description: String? = nil, + /** + * @param {String} content_favorite_id Filter on a content favorite id. + */ + content_favorite_id: String? = nil, + /** + * @param {String} folder_id Filter on a particular space. + */ + folder_id: String? = nil, + /** + * @param {String} deleted Filter on dashboards deleted status. + */ + deleted: String? = nil, + /** + * @param {String} user_id Filter on dashboards created by a particular user. + */ + user_id: String? = nil, + /** + * @param {String} view_count Filter on a particular value of view_count + */ + view_count: String? = nil, + /** + * @param {String} content_metadata_id Filter on a content favorite id. + */ + content_metadata_id: String? = nil, + /** + * @param {Bool} curate Exclude items that exist only in personal spaces other than the users + */ + curate: Bool? = nil, /** - * @param {WriteHomepageItem} body + * @param {String} last_viewed_at Select dashboards based on when they were last viewed */ - _ body: WriteHomepageItem, + last_viewed_at: String? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, + /** + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + */ + page: Int64? = nil, + /** + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + */ + per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, + /** + * @param {String} sorts One or more fields to sort by. Sortable fields: [:title, :user_id, :id, :created_at, :space_id, :folder_id, :description, :view_count, :favorite_count, :slug, :content_favorite_id, :content_metadata_id, :deleted, :deleted_at, :last_viewed_at, :last_accessed_at] + */ + sorts: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + /** + * @param {Bool} not_owned_by Filter out the dashboards owned by the user passed at the :user_id params + */ + not_owned_by: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/homepage_items", - ["fields": fields], try! self.encode(body), options) + let result: SDKResponse = self.get("/dashboards/search", + ["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 as Any?, "last_viewed_at": last_viewed_at, "fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "not_owned_by": not_owned_by as Any?], nil, options) return result } /** - * ### Get information about a homepage item. + * ### Import a LookML dashboard to a space as a UDD + * Creates a UDD (a dashboard which exists in the Looker database rather than as a LookML file) from the LookML dashboard + * and places it in the space specified. The created UDD will have a lookml_link_id which links to the original LookML dashboard. + * + * To give the imported dashboard specify a (e.g. title: "my title") in the body of your request, otherwise the imported + * dashboard will have the same title as the original LookML dashboard. + * + * For this operation to succeed the user must have permission to see the LookML dashboard in question, and have permission to + * create content in the space the dashboard is being imported to. * - * GET /homepage_items/{homepage_item_id} -> HomepageItem + * **Sync** a linked UDD with [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard) + * **Unlink** a linked UDD by setting lookml_link_id to null with [update_dashboard()](#!/Dashboard/update_dashboard) + * + * POST /dashboards/{lookml_dashboard_id}/import/{space_id} -> Dashboard */ - @available(*, deprecated) - public func homepage_item( + public func import_lookml_dashboard( + /** + * @param {String} lookml_dashboard_id Id of LookML dashboard + */ + _ lookml_dashboard_id: String, /** - * @param {Int64} homepage_item_id Id of homepage item + * @param {String} space_id Id of space to import the dashboard to */ - _ homepage_item_id: Int64, + _ space_id: String, /** - * @param {String} fields Requested fields. + * @param {WriteDashboard} body */ - fields: String? = nil, + body: WriteDashboard?, + /** + * @param {Bool} raw_locale If true, and this dashboard is localized, export it with the raw keys, not localized. + */ + raw_locale: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_homepage_item_id = encodeParam(homepage_item_id) - let result: SDKResponse = self.get("/homepage_items/\(path_homepage_item_id)", - ["fields": fields], nil, options) + let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.post("/dashboards/\(path_lookml_dashboard_id)/import/\(path_space_id)", + ["raw_locale": raw_locale as Any?], try! self.encode(body), options) return result } /** - * ### Update a homepage item definition. + * ### Update all linked dashboards to match the specified LookML dashboard. + * + * Any UDD (a dashboard which exists in the Looker database rather than as a LookML file) which has a `lookml_link_id` + * property value referring to a LookML dashboard's id (model::dashboardname) will be updated so that it matches the current state of the LookML dashboard. + * + * For this operation to succeed the user must have permission to view the LookML dashboard, and only linked dashboards + * that the user has permission to update will be synced. * - * PATCH /homepage_items/{homepage_item_id} -> HomepageItem + * To **link** or **unlink** a UDD set the `lookml_link_id` property with [update_dashboard()](#!/Dashboard/update_dashboard) + * + * PATCH /dashboards/{lookml_dashboard_id}/sync -> [Int64] */ - @available(*, deprecated) - public func update_homepage_item( + public func sync_lookml_dashboard( /** - * @param {Int64} homepage_item_id Id of homepage item + * @param {String} lookml_dashboard_id Id of LookML dashboard, in the form 'model::dashboardname' */ - _ homepage_item_id: Int64, + _ lookml_dashboard_id: String, /** - * @param {WriteHomepageItem} body + * @param {WriteDashboard} body */ - _ body: WriteHomepageItem, + _ body: WriteDashboard, /** - * @param {String} fields Requested fields. + * @param {Bool} raw_locale If true, and this dashboard is localized, export it with the raw keys, not localized. */ - fields: String? = nil, + raw_locale: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_homepage_item_id = encodeParam(homepage_item_id) - let result: SDKResponse = self.patch("/homepage_items/\(path_homepage_item_id)", - ["fields": fields], try! self.encode(body), options) + let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) + let result: SDKResponse = self.patch("/dashboards/\(path_lookml_dashboard_id)/sync", + ["raw_locale": raw_locale as Any?], try! self.encode(body), options) return result } /** - * ### Delete a homepage item. + * ### Get information about a dashboard + * + * Returns the full details of the identified dashboard object + * + * Get a **summary list** of all active dashboards with [all_dashboards()](#!/Dashboard/all_dashboards) + * + * You can **Search** for dashboards with [search_dashboards()](#!/Dashboard/search_dashboards) * - * DELETE /homepage_items/{homepage_item_id} -> String + * GET /dashboards/{dashboard_id} -> Dashboard */ - @available(*, deprecated) - public func delete_homepage_item( + public func dashboard( + /** + * @param {String} dashboard_id Id of dashboard + */ + _ dashboard_id: String, /** - * @param {Int64} homepage_item_id Id of homepage item + * @param {String} fields Requested fields. */ - _ homepage_item_id: Int64, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_homepage_item_id = encodeParam(homepage_item_id) - let result: SDKResponse = self.delete("/homepage_items/\(path_homepage_item_id)", nil, nil, options) + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.get("/dashboards/\(path_dashboard_id)", + ["fields": fields], nil, options) return result } /** - * ### Get information about all homepage sections. + * ### Update a dashboard + * + * You can use this function to change the string and integer properties of + * a dashboard. Nested objects such as filters, dashboard elements, or dashboard layout components + * cannot be modified by this function - use the update functions for the respective + * nested object types (like [update_dashboard_filter()](#!/3.1/Dashboard/update_dashboard_filter) to change a filter) + * to modify nested objects referenced by a dashboard. + * + * If you receive a 422 error response when updating a dashboard, be sure to look at the + * response body for information about exactly which fields are missing or contain invalid data. * - * GET /homepage_sections -> [HomepageSection] + * PATCH /dashboards/{dashboard_id} -> Dashboard */ - @available(*, deprecated) - public func all_homepage_sections( + public func update_dashboard( /** - * @param {String} fields Requested fields. + * @param {String} dashboard_id Id of dashboard */ - fields: String? = nil, + _ dashboard_id: String, /** - * @param {String} sorts Fields to sort by. + * @param {WriteDashboard} body */ - sorts: String? = nil, + _ body: WriteDashboard, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/homepage_sections", - ["fields": fields, "sorts": sorts], nil, options) + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.patch("/dashboards/\(path_dashboard_id)", nil, try! self.encode(body), options) return result } /** - * ### Create a new homepage section. + * ### Delete the dashboard with the specified id + * + * Permanently **deletes** a dashboard. (The dashboard cannot be recovered after this operation.) + * + * "Soft" delete or hide a dashboard by setting its `deleted` status to `True` with [update_dashboard()](#!/Dashboard/update_dashboard). + * + * Note: When a dashboard is deleted in the UI, it is soft deleted. Use this API call to permanently remove it, if desired. * - * POST /homepage_sections -> HomepageSection + * DELETE /dashboards/{dashboard_id} -> String */ - @available(*, deprecated) - public func create_homepage_section( - /** - * @param {WriteHomepageSection} body - */ - _ body: WriteHomepageSection, + public func delete_dashboard( /** - * @param {String} fields Requested fields. + * @param {String} dashboard_id Id of dashboard */ - fields: String? = nil, + _ dashboard_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/homepage_sections", - ["fields": fields], try! self.encode(body), options) + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.delete("/dashboards/\(path_dashboard_id)", nil, nil, options) return result } /** - * ### Get information about a homepage section. + * ### Get Aggregate Table LookML for Each Query on a Dahboard * - * GET /homepage_sections/{homepage_section_id} -> HomepageSection + * Returns a JSON object that contains the dashboard id and Aggregate Table lookml + * + * GET /dashboards/aggregate_table_lookml/{dashboard_id} -> DashboardAggregateTableLookml */ - @available(*, deprecated) - public func homepage_section( - /** - * @param {Int64} homepage_section_id Id of homepage section - */ - _ homepage_section_id: Int64, + public func dashboard_aggregate_table_lookml( /** - * @param {String} fields Requested fields. + * @param {String} dashboard_id Id of dashboard */ - fields: String? = nil, + _ dashboard_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_homepage_section_id = encodeParam(homepage_section_id) - let result: SDKResponse = self.get("/homepage_sections/\(path_homepage_section_id)", - ["fields": fields], nil, options) + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.get("/dashboards/aggregate_table_lookml/\(path_dashboard_id)", nil, nil, options) return result } /** - * ### Update a homepage section definition. + * ### Get lookml of a UDD + * + * Returns a JSON object that contains the dashboard id and the full lookml * - * PATCH /homepage_sections/{homepage_section_id} -> HomepageSection + * GET /dashboards/lookml/{dashboard_id} -> DashboardLookml */ - @available(*, deprecated) - public func update_homepage_section( - /** - * @param {Int64} homepage_section_id Id of homepage section - */ - _ homepage_section_id: Int64, - /** - * @param {WriteHomepageSection} body - */ - _ body: WriteHomepageSection, + public func dashboard_lookml( /** - * @param {String} fields Requested fields. + * @param {String} dashboard_id Id of dashboard */ - fields: String? = nil, + _ dashboard_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_homepage_section_id = encodeParam(homepage_section_id) - let result: SDKResponse = self.patch("/homepage_sections/\(path_homepage_section_id)", - ["fields": fields], try! self.encode(body), options) + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.get("/dashboards/lookml/\(path_dashboard_id)", nil, nil, options) return result } /** - * ### Delete a homepage section. + * ### Move an existing dashboard + * + * Moves a dashboard to a specified folder, and returns the moved dashboard. * - * DELETE /homepage_sections/{homepage_section_id} -> String + * `dashboard_id` and `folder_id` are required. + * `dashboard_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard. + * + * PATCH /dashboards/{dashboard_id}/move -> Dashboard */ - @available(*, deprecated) - public func delete_homepage_section( + public func move_dashboard( + /** + * @param {String} dashboard_id Dashboard id to move. + */ + _ dashboard_id: String, /** - * @param {Int64} homepage_section_id Id of homepage section + * @param {String} folder_id Folder id to move to. */ - _ homepage_section_id: Int64, + _ folder_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_homepage_section_id = encodeParam(homepage_section_id) - let result: SDKResponse = self.delete("/homepage_sections/\(path_homepage_section_id)", nil, nil, options) + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.patch("/dashboards/\(path_dashboard_id)/move", + ["folder_id": folder_id], nil, options) return result } /** - * ### Get information about the primary homepage's sections. + * ### Creates a dashboard object based on LookML Dashboard YAML, and returns the details of the newly created dashboard. * - * GET /primary_homepage_sections -> [HomepageSection] + * If a dashboard exists with the YAML-defined "preferred_slug", the new dashboard will overwrite it. Otherwise, a new + * dashboard will be created. Note that when a dashboard is overwritten, alerts will not be maintained. + * + * If a folder_id is specified: new dashboards will be placed in that folder, and overwritten dashboards will be moved to it + * If the folder_id isn't specified: new dashboards will be placed in the caller's personal folder, and overwritten dashboards + * will remain where they were + * + * LookML must contain valid LookML YAML code. It's recommended to use the LookML format returned + * from [dashboard_lookml()](#!/Dashboard/dashboard_lookml) as the input LookML (newlines replaced with + * ). + * + * Note that the created dashboard is not linked to any LookML Dashboard, + * i.e. [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard) will not update dashboards created by this method. + * + * POST /dashboards/lookml -> Dashboard */ - public func all_primary_homepage_sections( + public func import_dashboard_from_lookml( /** - * @param {String} fields Requested fields. + * @param {WriteDashboardLookml} body */ - fields: String? = nil, + _ body: WriteDashboardLookml, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/primary_homepage_sections", - ["fields": fields], nil, options) + let result: SDKResponse = self.post("/dashboards/lookml", nil, try! self.encode(body), options) return result } - - - // MARK Integration: Manage Integrations - /** - * ### Get information about all Integration Hubs. + * # DEPRECATED: Use [import_dashboard_from_lookml()](#!/Dashboard/import_dashboard_from_lookml) * - * GET /integration_hubs -> [IntegrationHub] + * POST /dashboards/from_lookml -> Dashboard */ - public func all_integration_hubs( + public func create_dashboard_from_lookml( /** - * @param {String} fields Requested fields. + * @param {WriteDashboardLookml} body */ - fields: String? = nil, + _ body: WriteDashboardLookml, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/integration_hubs", - ["fields": fields], nil, options) + let result: SDKResponse = self.post("/dashboards/from_lookml", nil, try! self.encode(body), options) return result } /** - * ### Create a new Integration Hub. + * ### Copy an existing dashboard * - * This API is rate limited to prevent it from being used for SSRF attacks + * Creates a copy of an existing dashboard, in a specified folder, and returns the copied dashboard. * - * POST /integration_hubs -> IntegrationHub + * `dashboard_id` is required, `dashboard_id` and `folder_id` must already exist if specified. + * `folder_id` will default to the existing folder. + * + * If a dashboard with the same title already exists in the target folder, the copy will have '(copy)' + * or '(copy <# of copies>)' appended. + * + * POST /dashboards/{dashboard_id}/copy -> Dashboard */ - public func create_integration_hub( + public func copy_dashboard( /** - * @param {WriteIntegrationHub} body + * @param {String} dashboard_id Dashboard id to copy. */ - _ body: WriteIntegrationHub, + _ dashboard_id: String, /** - * @param {String} fields Requested fields. + * @param {String} folder_id Folder id to copy to. */ - fields: String? = nil, + folder_id: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/integration_hubs", - ["fields": fields], try! self.encode(body), options) + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.post("/dashboards/\(path_dashboard_id)/copy", + ["folder_id": folder_id], nil, options) return result } /** - * ### Get information about a Integration Hub. + * ### Search Dashboard Elements * - * GET /integration_hubs/{integration_hub_id} -> IntegrationHub - */ - public func integration_hub( + * Returns an **array of DashboardElement objects** that match the specified search criteria. + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /dashboard_elements/search -> [DashboardElement] + */ + public func search_dashboard_elements( + /** + * @param {String} dashboard_id Select elements that refer to a given dashboard id + */ + dashboard_id: String? = nil, + /** + * @param {String} look_id Select elements that refer to a given look id + */ + look_id: String? = nil, + /** + * @param {String} title Match the title of element + */ + title: String? = nil, /** - * @param {Int64} integration_hub_id Id of integration_hub + * @param {Bool} deleted Select soft-deleted dashboard elements */ - _ integration_hub_id: Int64, + deleted: Bool? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + /** + * @param {String} sorts Fields to sort by. Sortable fields: [:look_id, :dashboard_id, :deleted, :title] + */ + sorts: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_integration_hub_id = encodeParam(integration_hub_id) - let result: SDKResponse = self.get("/integration_hubs/\(path_integration_hub_id)", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/dashboard_elements/search", + ["dashboard_id": dashboard_id, "look_id": look_id, "title": title, "deleted": deleted as Any?, "fields": fields, "filter_or": filter_or as Any?, "sorts": sorts], nil, options) return result } /** - * ### Update a Integration Hub definition. + * ### Get information about the dashboard element with a specific id. * - * This API is rate limited to prevent it from being used for SSRF attacks + * GET /dashboard_elements/{dashboard_element_id} -> DashboardElement + */ + public func dashboard_element( + /** + * @param {String} dashboard_element_id Id of dashboard element + */ + _ dashboard_element_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_dashboard_element_id = encodeParam(dashboard_element_id) + let result: SDKResponse = self.get("/dashboard_elements/\(path_dashboard_element_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update the dashboard element with a specific id. * - * PATCH /integration_hubs/{integration_hub_id} -> IntegrationHub + * PATCH /dashboard_elements/{dashboard_element_id} -> DashboardElement */ - public func update_integration_hub( + public func update_dashboard_element( /** - * @param {Int64} integration_hub_id Id of integration_hub + * @param {String} dashboard_element_id Id of dashboard element */ - _ integration_hub_id: Int64, + _ dashboard_element_id: String, /** - * @param {WriteIntegrationHub} body + * @param {WriteDashboardElement} body */ - _ body: WriteIntegrationHub, + _ body: WriteDashboardElement, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_integration_hub_id = encodeParam(integration_hub_id) - let result: SDKResponse = self.patch("/integration_hubs/\(path_integration_hub_id)", + let path_dashboard_element_id = encodeParam(dashboard_element_id) + let result: SDKResponse = self.patch("/dashboard_elements/\(path_dashboard_element_id)", ["fields": fields], try! self.encode(body), options) return result } /** - * ### Delete a Integration Hub. + * ### Delete a dashboard element with a specific id. * - * DELETE /integration_hubs/{integration_hub_id} -> String + * DELETE /dashboard_elements/{dashboard_element_id} -> String */ - public func delete_integration_hub( + public func delete_dashboard_element( /** - * @param {Int64} integration_hub_id Id of integration_hub + * @param {String} dashboard_element_id Id of dashboard element */ - _ integration_hub_id: Int64, + _ dashboard_element_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_integration_hub_id = encodeParam(integration_hub_id) - let result: SDKResponse = self.delete("/integration_hubs/\(path_integration_hub_id)", nil, nil, options) + let path_dashboard_element_id = encodeParam(dashboard_element_id) + let result: SDKResponse = self.delete("/dashboard_elements/\(path_dashboard_element_id)", nil, nil, options) return result } /** - * Accepts the legal agreement for a given integration hub. This only works for integration hubs that have legal_agreement_required set to true and legal_agreement_signed set to false. + * ### Get information about all the dashboard elements on a dashboard with a specific id. * - * POST /integration_hubs/{integration_hub_id}/accept_legal_agreement -> IntegrationHub + * GET /dashboards/{dashboard_id}/dashboard_elements -> [DashboardElement] */ - public func accept_integration_hub_legal_agreement( + public func dashboard_dashboard_elements( + /** + * @param {String} dashboard_id Id of dashboard + */ + _ dashboard_id: String, /** - * @param {Int64} integration_hub_id Id of integration_hub + * @param {String} fields Requested fields. */ - _ integration_hub_id: Int64, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_integration_hub_id = encodeParam(integration_hub_id) - let result: SDKResponse = self.post("/integration_hubs/\(path_integration_hub_id)/accept_legal_agreement", nil, nil, options) + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.get("/dashboards/\(path_dashboard_id)/dashboard_elements", + ["fields": fields], nil, options) return result } /** - * ### Get information about all Integrations. + * ### Create a dashboard element on the dashboard with a specific id. * - * GET /integrations -> [Integration] + * POST /dashboard_elements -> DashboardElement */ - public func all_integrations( + public func create_dashboard_element( + /** + * @param {WriteDashboardElement} body + */ + _ body: WriteDashboardElement, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {String} integration_hub_id Filter to a specific provider + * @param {Bool} apply_filters Apply relevant filters on dashboard to this tile */ - integration_hub_id: String? = nil, + apply_filters: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/integrations", - ["fields": fields, "integration_hub_id": integration_hub_id], nil, options) + let result: SDKResponse = self.post("/dashboard_elements", + ["fields": fields, "apply_filters": apply_filters as Any?], try! self.encode(body), options) return result } /** - * ### Get information about a Integration. + * ### Get information about the dashboard filters with a specific id. * - * GET /integrations/{integration_id} -> Integration + * GET /dashboard_filters/{dashboard_filter_id} -> DashboardFilter */ - public func integration( + public func dashboard_filter( /** - * @param {String} integration_id Id of integration + * @param {String} dashboard_filter_id Id of dashboard filters */ - _ integration_id: String, + _ dashboard_filter_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_integration_id = encodeParam(integration_id) - let result: SDKResponse = self.get("/integrations/\(path_integration_id)", + let path_dashboard_filter_id = encodeParam(dashboard_filter_id) + let result: SDKResponse = self.get("/dashboard_filters/\(path_dashboard_filter_id)", ["fields": fields], nil, options) return result } /** - * ### Update parameters on a Integration. + * ### Update the dashboard filter with a specific id. * - * PATCH /integrations/{integration_id} -> Integration + * PATCH /dashboard_filters/{dashboard_filter_id} -> DashboardFilter */ - public func update_integration( + public func update_dashboard_filter( /** - * @param {String} integration_id Id of integration + * @param {String} dashboard_filter_id Id of dashboard filter */ - _ integration_id: String, + _ dashboard_filter_id: String, /** - * @param {WriteIntegration} body + * @param {WriteDashboardFilter} body */ - _ body: WriteIntegration, + _ body: WriteDashboardFilter, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_integration_id = encodeParam(integration_id) - let result: SDKResponse = self.patch("/integrations/\(path_integration_id)", + let path_dashboard_filter_id = encodeParam(dashboard_filter_id) + let result: SDKResponse = self.patch("/dashboard_filters/\(path_dashboard_filter_id)", ["fields": fields], try! self.encode(body), options) return result } /** - * Returns the Integration form for presentation to the user. + * ### Delete a dashboard filter with a specific id. * - * POST /integrations/{integration_id}/form -> DataActionForm + * DELETE /dashboard_filters/{dashboard_filter_id} -> String */ - public func fetch_integration_form( - /** - * @param {String} integration_id Id of integration - */ - _ integration_id: String, + public func delete_dashboard_filter( /** - * @param {StringDictionary} body + * @param {String} dashboard_filter_id Id of dashboard filter */ - body: StringDictionary? = nil, + _ dashboard_filter_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_integration_id = encodeParam(integration_id) - let result: SDKResponse = self.post("/integrations/\(path_integration_id)/form", nil, try! self.encode(body), options) + let path_dashboard_filter_id = encodeParam(dashboard_filter_id) + let result: SDKResponse = self.delete("/dashboard_filters/\(path_dashboard_filter_id)", nil, nil, options) return result } /** - * Tests the integration to make sure all the settings are working. + * ### Get information about all the dashboard filters on a dashboard with a specific id. * - * POST /integrations/{integration_id}/test -> IntegrationTestResult + * GET /dashboards/{dashboard_id}/dashboard_filters -> [DashboardFilter] */ - public func test_integration( + public func dashboard_dashboard_filters( /** - * @param {String} integration_id Id of integration + * @param {String} dashboard_id Id of dashboard */ - _ integration_id: String, + _ dashboard_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_integration_id = encodeParam(integration_id) - let result: SDKResponse = self.post("/integrations/\(path_integration_id)/test", nil, nil, options) + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.get("/dashboards/\(path_dashboard_id)/dashboard_filters", + ["fields": fields], nil, options) return result } - - - // MARK Look: Run and Manage Looks - /** - * ### Get information about all active Looks - * - * Returns an array of **abbreviated Look objects** describing all the looks that the caller has access to. Soft-deleted Looks are **not** included. - * - * Get the **full details** of a specific look by id with [look(id)](#!/Look/look) - * - * Find **soft-deleted looks** with [search_looks()](#!/Look/search_looks) + * ### Create a dashboard filter on the dashboard with a specific id. * - * GET /looks -> [Look] + * POST /dashboard_filters -> DashboardFilter */ - public func all_looks( + public func create_dashboard_filter( /** - * @param {String} fields Requested fields. + * @param {WriteCreateDashboardFilter} body + */ + _ body: WriteCreateDashboardFilter, + /** + * @param {String} fields Requested fields */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/looks", - ["fields": fields], nil, options) + let result: SDKResponse = self.post("/dashboard_filters", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Create a Look - * - * To create a look to display query data, first create the query with [create_query()](#!/Query/create_query) - * then assign the query's id to the `query_id` property in the call to `create_look()`. - * - * To place the look into a particular space, assign the space's id to the `space_id` property - * in the call to `create_look()`. + * ### Get information about the dashboard elements with a specific id. * - * POST /looks -> LookWithQuery + * GET /dashboard_layout_components/{dashboard_layout_component_id} -> DashboardLayoutComponent */ - public func create_look( + public func dashboard_layout_component( /** - * @param {WriteLookWithQuery} body + * @param {String} dashboard_layout_component_id Id of dashboard layout component */ - _ body: WriteLookWithQuery, + _ dashboard_layout_component_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/looks", - ["fields": fields], try! self.encode(body), options) + let path_dashboard_layout_component_id = encodeParam(dashboard_layout_component_id) + let result: SDKResponse = self.get("/dashboard_layout_components/\(path_dashboard_layout_component_id)", + ["fields": fields], nil, options) return result } /** - * ### Search Looks + * ### Update the dashboard element with a specific id. * - * Returns an **array of Look objects** that match the specified search criteria. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. - * - * - * Get a **single look** by id with [look(id)](#!/Look/look) - * - * GET /looks/search -> [Look] + * PATCH /dashboard_layout_components/{dashboard_layout_component_id} -> DashboardLayoutComponent */ - public func search_looks( - /** - * @param {String} id Match look id. - */ - id: String? = nil, - /** - * @param {String} title Match Look title. - */ - title: String? = nil, - /** - * @param {String} description Match Look description. - */ - description: String? = nil, - /** - * @param {Int64} content_favorite_id Select looks with a particular content favorite id - */ - content_favorite_id: Int64? = nil, - /** - * @param {String} space_id Select looks in a particular space. - */ - space_id: String? = nil, - /** - * @param {String} user_id Select looks created by a particular user. - */ - user_id: String? = nil, - /** - * @param {String} view_count Select looks with particular view_count value - */ - view_count: String? = nil, - /** - * @param {Bool} deleted Select soft-deleted looks - */ - deleted: Bool? = nil, + public func update_dashboard_layout_component( /** - * @param {Int64} query_id Select looks that reference a particular query by query_id + * @param {String} dashboard_layout_component_id Id of dashboard layout component */ - query_id: Int64? = nil, + _ dashboard_layout_component_id: String, /** - * @param {Bool} curate Exclude items that exist only in personal spaces other than the users + * @param {WriteDashboardLayoutComponent} body */ - curate: Bool? = nil, + _ body: WriteDashboardLayoutComponent, /** * @param {String} fields Requested fields. */ fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_dashboard_layout_component_id = encodeParam(dashboard_layout_component_id) + let result: SDKResponse = self.patch("/dashboard_layout_components/\(path_dashboard_layout_component_id)", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Get information about all the dashboard layout components for a dashboard layout with a specific id. + * + * GET /dashboard_layouts/{dashboard_layout_id}/dashboard_layout_components -> [DashboardLayoutComponent] + */ + public func dashboard_layout_dashboard_layout_components( /** - * @param {Int64} page Requested page. - */ - page: Int64? = nil, - /** - * @param {Int64} per_page Results per page. - */ - per_page: Int64? = nil, - /** - * @param {String} sorts One or more fields to sort results by. Sortable fields: [:title, :user_id, :id, :created_at, :space_id, :folder_id, :description, :updated_at, :last_updater_id, :view_count, :favorite_count, :content_favorite_id, :deleted, :deleted_at, :last_viewed_at, :last_accessed_at, :query_id] + * @param {String} dashboard_layout_id Id of dashboard layout component */ - sorts: String? = nil, + _ dashboard_layout_id: String, /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + * @param {String} fields Requested fields. */ - filter_or: Bool? = nil, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/looks/search", - ["id": id, "title": title, "description": description, "content_favorite_id": content_favorite_id, "space_id": space_id, "user_id": user_id, "view_count": view_count, "deleted": deleted as Any?, "query_id": query_id, "curate": curate as Any?, "fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) + let path_dashboard_layout_id = encodeParam(dashboard_layout_id) + let result: SDKResponse = self.get("/dashboard_layouts/\(path_dashboard_layout_id)/dashboard_layout_components", + ["fields": fields], nil, options) return result } /** - * ### Get a Look. - * - * Returns detailed information about a Look and its associated Query. + * ### Get information about the dashboard layouts with a specific id. * - * GET /looks/{look_id} -> LookWithQuery + * GET /dashboard_layouts/{dashboard_layout_id} -> DashboardLayout */ - public func look( + public func dashboard_layout( /** - * @param {Int64} look_id Id of look + * @param {String} dashboard_layout_id Id of dashboard layouts */ - _ look_id: Int64, + _ dashboard_layout_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let result: SDKResponse = self.get("/looks/\(path_look_id)", + let path_dashboard_layout_id = encodeParam(dashboard_layout_id) + let result: SDKResponse = self.get("/dashboard_layouts/\(path_dashboard_layout_id)", ["fields": fields], nil, options) return result } /** - * ### Modify a Look - * - * Use this function to modify parts of a look. Property values given in a call to `update_look` are - * applied to the existing look, so there's no need to include properties whose values are not changing. - * It's best to specify only the properties you want to change and leave everything else out - * of your `update_look` call. **Look properties marked 'read-only' will be ignored.** - * - * When a user deletes a look in the Looker UI, the look data remains in the database but is - * marked with a deleted flag ("soft-deleted"). Soft-deleted looks can be undeleted (by an admin) - * if the delete was in error. - * - * To soft-delete a look via the API, use [update_look()](#!/Look/update_look) to change the look's `deleted` property to `true`. - * You can undelete a look by calling `update_look` to change the look's `deleted` property to `false`. - * - * Soft-deleted looks are excluded from the results of [all_looks()](#!/Look/all_looks) and [search_looks()](#!/Look/search_looks), so they - * essentially disappear from view even though they still reside in the db. - * In API 3.1 and later, you can pass `deleted: true` as a parameter to [search_looks()](#!/3.1/Look/search_looks) to list soft-deleted looks. - * - * NOTE: [delete_look()](#!/Look/delete_look) performs a "hard delete" - the look data is removed from the Looker - * database and destroyed. There is no "undo" for `delete_look()`. + * ### Update the dashboard layout with a specific id. * - * PATCH /looks/{look_id} -> LookWithQuery + * PATCH /dashboard_layouts/{dashboard_layout_id} -> DashboardLayout */ - public func update_look( + public func update_dashboard_layout( /** - * @param {Int64} look_id Id of look + * @param {String} dashboard_layout_id Id of dashboard layout */ - _ look_id: Int64, + _ dashboard_layout_id: String, /** - * @param {WriteLookWithQuery} body + * @param {WriteDashboardLayout} body */ - _ body: WriteLookWithQuery, + _ body: WriteDashboardLayout, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let result: SDKResponse = self.patch("/looks/\(path_look_id)", + let path_dashboard_layout_id = encodeParam(dashboard_layout_id) + let result: SDKResponse = self.patch("/dashboard_layouts/\(path_dashboard_layout_id)", ["fields": fields], try! self.encode(body), options) return result } /** - * ### Permanently Delete a Look - * - * This operation **permanently** removes a look from the Looker database. - * - * NOTE: There is no "undo" for this kind of delete. - * - * For information about soft-delete (which can be undone) see [update_look()](#!/Look/update_look). + * ### Delete a dashboard layout with a specific id. * - * DELETE /looks/{look_id} -> String + * DELETE /dashboard_layouts/{dashboard_layout_id} -> String */ - public func delete_look( + public func delete_dashboard_layout( /** - * @param {Int64} look_id Id of look + * @param {String} dashboard_layout_id Id of dashboard layout */ - _ look_id: Int64, + _ dashboard_layout_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let result: SDKResponse = self.delete("/looks/\(path_look_id)", nil, nil, options) + let path_dashboard_layout_id = encodeParam(dashboard_layout_id) + let result: SDKResponse = self.delete("/dashboard_layouts/\(path_dashboard_layout_id)", nil, nil, options) return result } /** - * ### Run a Look - * - * Runs a given look's query and returns the results in the requested format. - * - * Supported formats: - * - * | result_format | Description - * | :-----------: | :--- | - * | json | Plain json - * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query - * | csv | Comma separated values with a header - * | txt | Tab separated values with a header - * | html | Simple html - * | md | Simple markdown - * | xlsx | MS Excel spreadsheet - * | sql | Returns the generated SQL rather than running the query - * | png | A PNG image of the visualization of the query - * | jpg | A JPG image of the visualization of the query - * - * GET /looks/{look_id}/run/{result_format} -> String + * ### Get information about all the dashboard elements on a dashboard with a specific id. * - * **Note**: Binary content may be returned by this method. + * GET /dashboards/{dashboard_id}/dashboard_layouts -> [DashboardLayout] */ - public func run_look( - /** - * @param {Int64} look_id Id of look - */ - _ look_id: Int64, + public func dashboard_dashboard_layouts( /** - * @param {String} result_format Format of result + * @param {String} dashboard_id Id of dashboard */ - _ result_format: String, + _ dashboard_id: String, /** - * @param {Int64} limit Row limit (may override the limit in the saved query). + * @param {String} fields Requested fields. */ - limit: Int64? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.get("/dashboards/\(path_dashboard_id)/dashboard_layouts", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create a dashboard layout on the dashboard with a specific id. + * + * POST /dashboard_layouts -> DashboardLayout + */ + public func create_dashboard_layout( /** - * @param {Bool} apply_formatting Apply model-specified formatting to each result. + * @param {WriteDashboardLayout} body */ - apply_formatting: Bool? = nil, + _ body: WriteDashboardLayout, /** - * @param {Bool} apply_vis Apply visualization options to results. + * @param {String} fields Requested fields. */ - apply_vis: Bool? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/dashboard_layouts", + ["fields": fields], try! self.encode(body), options) + return result + } + + + + // MARK 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. + * + * POST /data_actions -> DataActionResponse + */ + public func perform_data_action( /** - * @param {Bool} cache Get results from cache if available. + * @param {DataActionRequest} body */ - cache: Bool? = nil, + _ body: DataActionRequest, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/data_actions", nil, try! self.encode(body), options) + return result + } + + /** + * For some data actions, the remote server may supply a form requesting further user input. This endpoint takes a data action, asks the remote server to generate a form for it, and returns that form to you for presentation to the user. + * + * POST /data_actions/form -> DataActionForm + */ + public func fetch_remote_data_action_form( /** - * @param {Int64} image_width Render width for image formats. + * @param {StringDictionary} body */ - image_width: Int64? = nil, - /** - * @param {Int64} image_height Render height for image formats. - */ - image_height: Int64? = nil, - /** - * @param {Bool} generate_drill_links Generate drill links (only applicable to 'json_detail' format. - */ - generate_drill_links: Bool? = nil, - /** - * @param {Bool} force_production Force use of production models even if the user is in development mode. Note that this flag being false does not guarantee development models will be used. - */ - force_production: Bool? = nil, - /** - * @param {Bool} cache_only Retrieve any results from cache even if the results have expired. - */ - cache_only: Bool? = nil, - /** - * @param {String} path_prefix Prefix to use for drill links (url encoded). - */ - path_prefix: String? = nil, - /** - * @param {Bool} rebuild_pdts Rebuild PDTS used in query. - */ - rebuild_pdts: Bool? = nil, - /** - * @param {Bool} server_table_calcs Perform table calculations on query results - */ - server_table_calcs: Bool? = nil, + _ body: StringDictionary, options: ITransportSettings? = nil ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let path_result_format = encodeParam(result_format) - let result: SDKResponse = self.get("/looks/\(path_look_id)/run/\(path_result_format)", - ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?], nil, options) + let result: SDKResponse = self.post("/data_actions/form", nil, try! self.encode(body), options) return result } - // MARK LookmlModel: Manage LookML Models + // MARK Datagroup: Manage Datagroups /** - * ### Get information about all lookml models. + * ### Get information about all datagroups. * - * GET /lookml_models -> [LookmlModel] + * GET /datagroups -> [Datagroup] */ - public func all_lookml_models( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func all_datagroups( options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/lookml_models", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/datagroups", nil, nil, options) return result } /** - * ### Create a lookml model using the specified configuration. + * ### Get information about a datagroup. * - * POST /lookml_models -> LookmlModel + * GET /datagroups/{datagroup_id} -> Datagroup */ - public func create_lookml_model( + public func datagroup( /** - * @param {WriteLookmlModel} body + * @param {String} datagroup_id ID of datagroup. */ - _ body: WriteLookmlModel, + _ datagroup_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/lookml_models", nil, try! self.encode(body), options) + let path_datagroup_id = encodeParam(datagroup_id) + let result: SDKResponse = self.get("/datagroups/\(path_datagroup_id)", nil, nil, options) return result } /** - * ### Get information about a lookml model. + * ### Update a datagroup using the specified params. * - * GET /lookml_models/{lookml_model_name} -> LookmlModel + * PATCH /datagroups/{datagroup_id} -> Datagroup */ - public func lookml_model( + public func update_datagroup( /** - * @param {String} lookml_model_name Name of lookml model. + * @param {String} datagroup_id ID of datagroup. */ - _ lookml_model_name: String, + _ datagroup_id: String, /** - * @param {String} fields Requested fields. + * @param {WriteDatagroup} body */ - fields: String? = nil, + _ body: WriteDatagroup, options: ITransportSettings? = nil ) -> SDKResponse { - let path_lookml_model_name = encodeParam(lookml_model_name) - let result: SDKResponse = self.get("/lookml_models/\(path_lookml_model_name)", - ["fields": fields], nil, options) + let path_datagroup_id = encodeParam(datagroup_id) + let result: SDKResponse = self.patch("/datagroups/\(path_datagroup_id)", nil, try! self.encode(body), options) return result } + + + // MARK DerivedTable: View Derived Table graphs + /** - * ### Update a lookml model using the specified configuration. + * ### Discover information about derived tables * - * PATCH /lookml_models/{lookml_model_name} -> LookmlModel + * GET /derived_table/graph/model/{model} -> DependencyGraph */ - public func update_lookml_model( + public func graph_derived_tables_for_model( /** - * @param {String} lookml_model_name Name of lookml model. + * @param {String} model The name of the Lookml model. */ - _ lookml_model_name: String, + _ model: String, /** - * @param {WriteLookmlModel} body + * @param {String} format The format of the graph. Valid values are [dot]. Default is `dot` */ - _ body: WriteLookmlModel, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_lookml_model_name = encodeParam(lookml_model_name) - let result: SDKResponse = self.patch("/lookml_models/\(path_lookml_model_name)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete a lookml model. - * - * DELETE /lookml_models/{lookml_model_name} -> String - */ - public func delete_lookml_model( + format: String? = nil, /** - * @param {String} lookml_model_name Name of lookml model. + * @param {String} color Color denoting the build status of the graph. Grey = not built, green = built, yellow = building, red = error. */ - _ lookml_model_name: String, + color: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_lookml_model_name = encodeParam(lookml_model_name) - let result: SDKResponse = self.delete("/lookml_models/\(path_lookml_model_name)", nil, nil, options) + let path_model = encodeParam(model) + let result: SDKResponse = self.get("/derived_table/graph/model/\(path_model)", + ["format": format, "color": color], nil, options) return result } /** - * ### Get information about a lookml model explore. + * ### Get the subgraph representing this derived table and its dependencies. * - * GET /lookml_models/{lookml_model_name}/explores/{explore_name} -> LookmlModelExplore + * GET /derived_table/graph/view/{view} -> DependencyGraph */ - public func lookml_model_explore( + public func graph_derived_tables_for_view( /** - * @param {String} lookml_model_name Name of lookml model. + * @param {String} view The derived table's view name. */ - _ lookml_model_name: String, + _ view: String, /** - * @param {String} explore_name Name of explore. + * @param {String} models The models where this derived table is defined. */ - _ explore_name: String, + models: String? = nil, /** - * @param {String} fields Requested fields. + * @param {String} workspace The model directory to look in, either `dev` or `production`. */ - fields: String? = nil, + workspace: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_lookml_model_name = encodeParam(lookml_model_name) - let path_explore_name = encodeParam(explore_name) - let result: SDKResponse = self.get("/lookml_models/\(path_lookml_model_name)/explores/\(path_explore_name)", - ["fields": fields], nil, options) + let path_view = encodeParam(view) + let result: SDKResponse = self.get("/derived_table/graph/view/\(path_view)", + ["models": models, "workspace": workspace], nil, options) return result } - - - // MARK Project: Manage Projects - /** - * ### Get All Git Branches - * - * Returns a list of git branches in the project repository + * Enqueue materialization for a PDT with the given model name and view name * - * GET /projects/{project_id}/git_branches -> [GitBranch] + * GET /derived_table/{model_name}/{view_name}/start -> MaterializePDT */ - public func all_git_branches( + public func start_pdt_build( /** - * @param {String} project_id Project Id + * @param {String} model_name The model of the PDT to start building. */ - _ project_id: String, + _ model_name: String, + /** + * @param {String} view_name The view name of the PDT to start building. + */ + _ view_name: String, + /** + * @param {String} force_rebuild Force rebuild of required dependent PDTs, even if they are already materialized. + */ + force_rebuild: String? = nil, + /** + * @param {String} force_full_incremental Force involved incremental PDTs to fully re-materialize. + */ + force_full_incremental: String? = nil, + /** + * @param {String} workspace Workspace in which to materialize selected PDT ('dev' or default 'production'). + */ + workspace: String? = nil, + /** + * @param {String} source The source of this request. + */ + source: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.get("/projects/\(path_project_id)/git_branches", nil, nil, options) + let path_model_name = encodeParam(model_name) + let path_view_name = encodeParam(view_name) + let result: SDKResponse = self.get("/derived_table/\(path_model_name)/\(path_view_name)/start", + ["force_rebuild": force_rebuild, "force_full_incremental": force_full_incremental, "workspace": workspace, "source": source], nil, options) return result } /** - * ### Get the Current Git Branch - * - * Returns the git branch currently checked out in the given project repository + * Check status of PDT materialization * - * GET /projects/{project_id}/git_branch -> GitBranch + * GET /derived_table/{materialization_id}/status -> MaterializePDT */ - public func git_branch( + public func check_pdt_build( /** - * @param {String} project_id Project Id + * @param {String} materialization_id The materialization id to check status for. */ - _ project_id: String, + _ materialization_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.get("/projects/\(path_project_id)/git_branch", nil, nil, options) + let path_materialization_id = encodeParam(materialization_id) + let result: SDKResponse = self.get("/derived_table/\(path_materialization_id)/status", nil, nil, options) return result } /** - * ### Checkout and/or reset --hard an existing Git Branch - * - * Only allowed in development mode - * - Call `update_session` to select the 'dev' workspace. - * - * Checkout an existing branch if name field is different from the name of the currently checked out branch. - * - * Optionally specify a branch name, tag name or commit SHA to which the branch should be reset. - * **DANGER** hard reset will be force pushed to the remote. Unsaved changes and commits may be permanently lost. + * Stop a PDT materialization * - * PUT /projects/{project_id}/git_branch -> GitBranch + * GET /derived_table/{materialization_id}/stop -> MaterializePDT */ - public func update_git_branch( + public func stop_pdt_build( /** - * @param {String} project_id Project Id + * @param {String} materialization_id The materialization id to stop. */ - _ project_id: String, + _ materialization_id: String, /** - * @param {WriteGitBranch} body + * @param {String} source The source of this request. */ - _ body: WriteGitBranch, + source: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.put("/projects/\(path_project_id)/git_branch", nil, try! self.encode(body), options) + let path_materialization_id = encodeParam(materialization_id) + let result: SDKResponse = self.get("/derived_table/\(path_materialization_id)/stop", + ["source": source], nil, options) return result } + + + // MARK Folder: Manage Folders + /** - * ### Create and Checkout a Git Branch - * - * Creates and checks out a new branch in the given project repository - * Only allowed in development mode - * - Call `update_session` to select the 'dev' workspace. - * - * Optionally specify a branch name, tag name or commit SHA as the start point in the ref field. - * If no ref is specified, HEAD of the current branch will be used as the start point for the new branch. + * Search for folders by creator id, parent id, name, etc * - * POST /projects/{project_id}/git_branch -> GitBranch + * GET /folders/search -> [Folder] */ - public func create_git_branch( + public func search_folders( /** - * @param {String} project_id Project Id + * @param {String} fields Requested fields. */ - _ project_id: String, + fields: String? = nil, /** - * @param {WriteGitBranch} body + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ - _ body: WriteGitBranch, - options: ITransportSettings? = nil + page: Int64? = nil, + /** + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + */ + per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {String} name Match Space title. + */ + name: String? = nil, + /** + * @param {String} id Match Space id + */ + id: String? = nil, + /** + * @param {String} parent_id Filter on a children of a particular folder. + */ + parent_id: String? = nil, + /** + * @param {String} creator_id Filter on folder created by a particular user. + */ + creator_id: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + /** + * @param {Bool} is_shared_root Match is shared root + */ + is_shared_root: Bool? = nil, + /** + * @param {Bool} is_users_root Match is users root + */ + is_users_root: Bool? = nil, + options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.post("/projects/\(path_project_id)/git_branch", nil, try! self.encode(body), options) + let result: SDKResponse = self.get("/folders/search", + ["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 as Any?, "is_shared_root": is_shared_root as Any?, "is_users_root": is_users_root as Any?], nil, options) return result } /** - * ### Get the specified Git Branch - * - * Returns the git branch specified in branch_name path param if it exists in the given project repository + * ### Get information about the folder with a specific id. * - * GET /projects/{project_id}/git_branch/{branch_name} -> GitBranch + * GET /folders/{folder_id} -> Folder */ - public func find_git_branch( + public func folder( /** - * @param {String} project_id Project Id + * @param {String} folder_id Id of folder */ - _ project_id: String, + _ folder_id: String, /** - * @param {String} branch_name Branch Name + * @param {String} fields Requested fields. */ - _ branch_name: String, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let path_branch_name = encodeParam(branch_name) - let result: SDKResponse = self.get("/projects/\(path_project_id)/git_branch/\(path_branch_name)", nil, nil, options) + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.get("/folders/\(path_folder_id)", + ["fields": fields], nil, options) return result } /** - * ### Delete the specified Git Branch - * - * Delete git branch specified in branch_name path param from local and remote of specified project repository + * ### Update the folder with a specific id. * - * DELETE /projects/{project_id}/git_branch/{branch_name} -> String + * PATCH /folders/{folder_id} -> Folder */ - public func delete_git_branch( + public func update_folder( /** - * @param {String} project_id Project Id + * @param {String} folder_id Id of folder */ - _ project_id: String, + _ folder_id: String, /** - * @param {String} branch_name Branch Name + * @param {UpdateFolder} body */ - _ branch_name: String, + _ body: UpdateFolder, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let path_branch_name = encodeParam(branch_name) - let result: SDKResponse = self.delete("/projects/\(path_project_id)/git_branch/\(path_branch_name)", nil, nil, options) + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.patch("/folders/\(path_folder_id)", nil, try! self.encode(body), options) return result } /** - * ### Deploy a Remote Branch or Ref to Production - * - * Git must have been configured and deploy permission required. - * - * Deploy is a one/two step process - * 1. If this is the first deploy of this project, create the production project with git repository. - * 2. Pull the branch or ref into the production project. - * - * Can only specify either a branch or a ref. + * ### Delete the folder with a specific id including any children folders. + * **DANGER** this will delete all looks and dashboards in the folder. * - * POST /projects/{project_id}/deploy_ref_to_production -> String + * DELETE /folders/{folder_id} -> String */ - public func deploy_ref_to_production( - /** - * @param {String} project_id Id of project - */ - _ project_id: String, - /** - * @param {String} branch Branch to deploy to production - */ - branch: String? = nil, + public func delete_folder( /** - * @param {String} ref Ref to deploy to production + * @param {String} folder_id Id of folder */ - ref: String? = nil, + _ folder_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.post("/projects/\(path_project_id)/deploy_ref_to_production", - ["branch": branch, "ref": ref], nil, options) + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.delete("/folders/\(path_folder_id)", nil, nil, options) return result } /** - * ### Deploy LookML from this Development Mode Project to Production - * - * Git must have been configured, must be in dev mode and deploy permission required + * ### Get information about all folders. * - * Deploy is a two / three step process: + * In API 3.x, this will not return empty personal folders, unless they belong to the calling user, + * or if they contain soft-deleted content. * - * 1. Push commits in current branch of dev mode project to the production branch (origin/master). - * Note a. This step is skipped in read-only projects. - * Note b. If this step is unsuccessful for any reason (e.g. rejected non-fastforward because production branch has - * commits not in current branch), subsequent steps will be skipped. - * 2. If this is the first deploy of this project, create the production project with git repository. - * 3. Pull the production branch into the production project. + * In API 4.0+, all personal folders will be returned. * - * POST /projects/{project_id}/deploy_to_production -> String + * GET /folders -> [Folder] */ - public func deploy_to_production( + public func all_folders( /** - * @param {String} project_id Id of project + * @param {String} fields Requested fields. */ - _ project_id: String, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.post("/projects/\(path_project_id)/deploy_to_production", nil, nil, options) + let result: SDKResponse = self.get("/folders", + ["fields": fields], nil, options) return result } /** - * ### Reset a project to the revision of the project that is in production. + * ### Create a folder with specified information. * - * **DANGER** this will delete any changes that have not been pushed to a remote repository. + * Caller must have permission to edit the parent folder and to create folders, otherwise the request + * returns 404 Not Found. * - * POST /projects/{project_id}/reset_to_production -> String + * POST /folders -> Folder */ - public func reset_project_to_production( + public func create_folder( /** - * @param {String} project_id Id of project + * @param {CreateFolder} body */ - _ project_id: String, + _ body: CreateFolder, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.post("/projects/\(path_project_id)/reset_to_production", nil, nil, options) + let result: SDKResponse = self.post("/folders", nil, try! self.encode(body), options) return result } /** - * ### Reset a project development branch to the revision of the project that is on the remote. - * - * **DANGER** this will delete any changes that have not been pushed to a remote repository. + * ### Get the children of a folder. * - * POST /projects/{project_id}/reset_to_remote -> String + * GET /folders/{folder_id}/children -> [Folder] */ - public func reset_project_to_remote( + public func folder_children( /** - * @param {String} project_id Id of project + * @param {String} folder_id Id of folder */ - _ project_id: String, + _ folder_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + */ + page: Int64? = nil, + /** + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + */ + per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.post("/projects/\(path_project_id)/reset_to_remote", nil, nil, options) + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.get("/folders/\(path_folder_id)/children", + ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts], nil, options) return result } /** - * ### Get All Projects - * - * Returns all projects visible to the current user + * ### Search the children of a folder * - * GET /projects -> [Project] + * GET /folders/{folder_id}/children/search -> [Folder] */ - public func all_projects( + public func folder_children_search( /** - * @param {String} fields Requested fields + * @param {String} folder_id Id of folder + */ + _ folder_id: String, + /** + * @param {String} fields Requested fields. */ fields: String? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {String} name Match folder name. + */ + name: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/projects", - ["fields": fields], nil, options) + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.get("/folders/\(path_folder_id)/children/search", + ["fields": fields, "sorts": sorts, "name": name], nil, options) return result } /** - * ### Create A Project - * - * dev mode required. - * - Call `update_session` to select the 'dev' workspace. - * - * `name` is required. - * `git_remote_url` is not allowed. To configure Git for the newly created project, follow the instructions in `update_project`. + * ### Get the parent of a folder * - * POST /projects -> Project + * GET /folders/{folder_id}/parent -> Folder */ - public func create_project( + public func folder_parent( /** - * @param {WriteProject} body + * @param {String} folder_id Id of folder */ - _ body: WriteProject, + _ folder_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/projects", nil, try! self.encode(body), options) + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.get("/folders/\(path_folder_id)/parent", + ["fields": fields], nil, options) return result } /** - * ### Get A Project + * ### Get the ancestors of a folder * - * Returns the project with the given project id - * - * GET /projects/{project_id} -> Project + * GET /folders/{folder_id}/ancestors -> [Folder] */ - public func project( + public func folder_ancestors( /** - * @param {String} project_id Project Id + * @param {String} folder_id Id of folder */ - _ project_id: String, + _ folder_id: String, /** - * @param {String} fields Requested fields + * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.get("/projects/\(path_project_id)", + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.get("/folders/\(path_folder_id)/ancestors", ["fields": fields], nil, options) return result } /** - * ### Update Project Configuration - * - * Apply changes to a project's configuration. - * - * - * #### Configuring Git for a Project - * - * To set up a Looker project with a remote git repository, follow these steps: - * - * 1. Call `update_session` to select the 'dev' workspace. - * 1. Call `create_git_deploy_key` to create a new deploy key for the project - * 1. Copy the deploy key text into the remote git repository's ssh key configuration - * 1. Call `update_project` to set project's `git_remote_url` ()and `git_service_name`, if necessary). - * - * When you modify a project's `git_remote_url`, Looker connects to the remote repository to fetch - * metadata. The remote git repository MUST be configured with the Looker-generated deploy - * key for this project prior to setting the project's `git_remote_url`. - * - * To set up a Looker project with a git repository residing on the Looker server (a 'bare' git repo): - * - * 1. Call `update_session` to select the 'dev' workspace. - * 1. Call `update_project` setting `git_remote_url` to null and `git_service_name` to "bare". + * ### Get all looks in a folder. + * In API 3.x, this will return all looks in a folder, including looks in the trash. + * In API 4.0+, all looks in a folder will be returned, excluding looks in the trash. * - * PATCH /projects/{project_id} -> Project + * GET /folders/{folder_id}/looks -> [LookWithQuery] */ - public func update_project( - /** - * @param {String} project_id Project Id - */ - _ project_id: String, + public func folder_looks( /** - * @param {WriteProject} body + * @param {String} folder_id Id of folder */ - _ body: WriteProject, + _ folder_id: String, /** - * @param {String} fields Requested fields + * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.patch("/projects/\(path_project_id)", - ["fields": fields], try! self.encode(body), options) + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.get("/folders/\(path_folder_id)/looks", + ["fields": fields], nil, options) return result } /** - * ### Get A Projects Manifest object - * - * Returns the project with the given project id + * ### Get the dashboards in a folder * - * GET /projects/{project_id}/manifest -> Manifest + * GET /folders/{folder_id}/dashboards -> [Dashboard] */ - public func manifest( + public func folder_dashboards( /** - * @param {String} project_id Project Id + * @param {String} folder_id Id of folder */ - _ project_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.get("/projects/\(path_project_id)/manifest", nil, nil, options) - return result - } - - /** - * ### Git Deploy Key - * - * Returns the ssh public key previously created for a project's git repository. - * - * GET /projects/{project_id}/git/deploy_key -> String - */ - public func git_deploy_key( + _ folder_id: String, /** - * @param {String} project_id Project Id + * @param {String} fields Requested fields. */ - _ project_id: String, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.get("/projects/\(path_project_id)/git/deploy_key", nil, nil, options) + let path_folder_id = encodeParam(folder_id) + let result: SDKResponse = self.get("/folders/\(path_folder_id)/dashboards", + ["fields": fields], nil, options) return result } + + + // MARK Group: Manage Groups + /** - * ### Create Git Deploy Key - * - * Create a public/private key pair for authenticating ssh git requests from Looker to a remote git repository - * for a particular Looker project. - * - * Returns the public key of the generated ssh key pair. - * - * Copy this public key to your remote git repository's ssh keys configuration so that the remote git service can - * validate and accept git requests from the Looker server. + * ### Get information about all groups. * - * POST /projects/{project_id}/git/deploy_key -> String + * GET /groups -> [LkGroup] */ - public func create_git_deploy_key( + public func all_groups( /** - * @param {String} project_id Project Id + * @param {String} fields Requested fields. */ - _ project_id: String, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.post("/projects/\(path_project_id)/git/deploy_key", nil, nil, options) - return result - } - - /** - * ### Get Cached Project Validation Results - * - * Returns the cached results of a previous project validation calculation, if any. - * Returns http status 204 No Content if no validation results exist. - * - * Validating the content of all the files in a project can be computationally intensive - * for large projects. Use this API to simply fetch the results of the most recent - * project validation rather than revalidating the entire project from scratch. - * - * A value of `"stale": true` in the response indicates that the project has changed since - * the cached validation results were computed. The cached validation results may no longer - * reflect the current state of the project. - * - * GET /projects/{project_id}/validate -> ProjectValidationCache - */ - public func project_validation_results( + fields: String? = nil, /** - * @param {String} project_id Project Id + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ - _ project_id: String, + page: Int64? = nil, /** - * @param {String} fields Requested fields + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.get("/projects/\(path_project_id)/validate", - ["fields": fields], nil, options) - return result - } - - /** - * ### Validate Project - * - * Performs lint validation of all lookml files in the project. - * Returns a list of errors found, if any. - * - * Validating the content of all the files in a project can be computationally intensive - * for large projects. For best performance, call `validate_project(project_id)` only - * when you really want to recompute project validation. To quickly display the results of - * the most recent project validation (without recomputing), use `project_validation_results(project_id)` - * - * POST /projects/{project_id}/validate -> ProjectValidation - */ - public func validate_project( + per_page: Int64? = nil, /** - * @param {String} project_id Project Id + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) */ - _ project_id: String, + limit: Int64? = nil, /** - * @param {String} fields Requested fields + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.post("/projects/\(path_project_id)/validate", - ["fields": fields], nil, options) - return result - } - - /** - * ### Get Project Workspace - * - * Returns information about the state of the project files in the currently selected workspace - * - * GET /projects/{project_id}/current_workspace -> ProjectWorkspace - */ - public func project_workspace( + offset: Int64? = nil, /** - * @param {String} project_id Project Id + * @param {String} sorts Fields to sort by. */ - _ project_id: String, + sorts: String? = nil, /** - * @param {String} fields Requested fields + * @param {DelimArray} ids Optional of ids to get specific groups. */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.get("/projects/\(path_project_id)/current_workspace", - ["fields": fields], nil, options) - return result - } - - /** - * ### Get All Project Files - * - * Returns a list of the files in the project - * - * GET /projects/{project_id}/files -> [ProjectFile] - */ - public func all_project_files( + ids: DelimArray? = nil, /** - * @param {String} project_id Project Id + * @param {String} content_metadata_id Id of content metadata to which groups must have access. */ - _ project_id: String, + content_metadata_id: String? = nil, /** - * @param {String} fields Requested fields + * @param {Bool} can_add_to_content_metadata Select only groups that either can/cannot be given access to content. */ - fields: String? = nil, + can_add_to_content_metadata: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.get("/projects/\(path_project_id)/files", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/groups", + ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "ids": ids as Any?, "content_metadata_id": content_metadata_id, "can_add_to_content_metadata": can_add_to_content_metadata as Any?], nil, options) return result } /** - * ### Get Project File Info - * - * Returns information about a file in the project + * ### Creates a new group (admin only). * - * GET /projects/{project_id}/files/file -> ProjectFile + * POST /groups -> LkGroup */ - public func project_file( - /** - * @param {String} project_id Project Id - */ - _ project_id: String, + public func create_group( /** - * @param {String} file_id File Id + * @param {WriteGroup} body */ - _ file_id: String, + _ body: WriteGroup, /** - * @param {String} fields Requested fields + * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.get("/projects/\(path_project_id)/files/file", - ["file_id": file_id, "fields": fields], nil, options) + let result: SDKResponse = self.post("/groups", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Get All Git Connection Tests + * ### Search groups * - * dev mode required. - * - Call `update_session` to select the 'dev' workspace. + * Returns all group records that match the given search criteria. * - * Returns a list of tests which can be run against a project's (or the dependency project for the provided remote_url) git connection. Call [Run Git Connection Test](#!/Project/run_git_connection_test) to execute each test in sequence. + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. * - * Tests are ordered by increasing specificity. Tests should be run in the order returned because later tests require functionality tested by tests earlier in the test list. + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. * - * For example, a late-stage test for write access is meaningless if connecting to the git server (an early test) is failing. + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" * - * GET /projects/{project_id}/git_connection_tests -> [GitConnectionTest] + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /groups/search -> [LkGroup] */ - public func all_git_connection_tests( + public func search_groups( /** - * @param {String} project_id Project Id + * @param {String} fields Requested fields. */ - _ project_id: String, + fields: String? = nil, /** - * @param {String} remote_url (Optional: leave blank for root project) The remote url for remote dependency to test. + * @param {Int64} limit Number of results to return (used with `offset`). */ - remote_url: String? = nil, + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any (used with `limit`). + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + /** + * @param {String} id Match group id. + */ + id: String? = nil, + /** + * @param {String} name Match group name. + */ + name: String? = nil, + /** + * @param {String} external_group_id Match group external_group_id. + */ + external_group_id: String? = nil, + /** + * @param {Bool} externally_managed Match group externally_managed. + */ + externally_managed: Bool? = nil, + /** + * @param {Bool} externally_orphaned Match group externally_orphaned. + */ + externally_orphaned: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.get("/projects/\(path_project_id)/git_connection_tests", - ["remote_url": remote_url], nil, options) + let result: SDKResponse = self.get("/groups/search", + ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) return result } /** - * ### Run a git connection test + * ### Search groups include roles * - * Run the named test on the git service used by this project (or the dependency project for the provided remote_url) and return the result. This - * is intended to help debug git connections when things do not work properly, to give - * more helpful information about why a git url is not working with Looker. + * Returns all group records that match the given search criteria, and attaches any associated roles. * - * Tests should be run in the order they are returned by [Get All Git Connection Tests](#!/Project/all_git_connection_tests). + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. * - * GET /projects/{project_id}/git_connection_tests/{test_id} -> GitConnectionTestResult + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /groups/search/with_roles -> [GroupSearch] */ - public func run_git_connection_test( + public func search_groups_with_roles( /** - * @param {String} project_id Project Id + * @param {String} fields Requested fields. */ - _ project_id: String, + fields: String? = nil, /** - * @param {String} test_id Test Id + * @param {Int64} limit Number of results to return (used with `offset`). */ - _ test_id: String, + limit: Int64? = nil, /** - * @param {String} remote_url (Optional: leave blank for root project) The remote url for remote dependency to test. + * @param {Int64} offset Number of results to skip before returning any (used with `limit`). */ - remote_url: String? = nil, + offset: Int64? = nil, /** - * @param {String} use_production (Optional: leave blank for dev credentials) Whether to use git production credentials. + * @param {String} sorts Fields to sort by. */ - use_production: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let path_test_id = encodeParam(test_id) - let result: SDKResponse = self.get("/projects/\(path_project_id)/git_connection_tests/\(path_test_id)", - ["remote_url": remote_url, "use_production": use_production], nil, options) - return result - } - - /** - * ### Get All LookML Tests - * - * Returns a list of tests which can be run to validate a project's LookML code and/or the underlying data, - * optionally filtered by the file id. - * Call [Run LookML Test](#!/Project/run_lookml_test) to execute tests. - * - * GET /projects/{project_id}/lookml_tests -> [LookmlTest] - */ - public func all_lookml_tests( + sorts: String? = nil, /** - * @param {String} project_id Project Id + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression */ - _ project_id: String, + filter_or: Bool? = nil, /** - * @param {String} file_id File Id + * @param {String} id Match group id. */ - file_id: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.get("/projects/\(path_project_id)/lookml_tests", - ["file_id": file_id], nil, options) - return result - } - - /** - * ### Run LookML Tests - * - * Runs all tests in the project, optionally filtered by file, test, and/or model. - * - * GET /projects/{project_id}/lookml_tests/run -> [LookmlTestResult] - */ - public func run_lookml_test( + id: String? = nil, /** - * @param {String} project_id Project Id + * @param {String} name Match group name. */ - _ project_id: String, + name: String? = nil, /** - * @param {String} file_id File Name + * @param {String} external_group_id Match group external_group_id. */ - file_id: String? = nil, + external_group_id: String? = nil, /** - * @param {String} test Test Name + * @param {Bool} externally_managed Match group externally_managed. */ - test: String? = nil, + externally_managed: Bool? = nil, /** - * @param {String} model Model Name + * @param {Bool} externally_orphaned Match group externally_orphaned. */ - model: String? = nil, + externally_orphaned: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.get("/projects/\(path_project_id)/lookml_tests/run", - ["file_id": file_id, "test": test, "model": model], nil, options) + let result: SDKResponse = self.get("/groups/search/with_roles", + ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) return result } /** - * ### Creates a tag for the most recent commit, or a specific ref is a SHA is provided + * ### Search groups include hierarchy * - * This is an internal-only, undocumented route. + * Returns all group records that match the given search criteria, and attaches + * associated role_ids and parent group_ids. * - * POST /projects/{project_id}/tag -> Project + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /groups/search/with_hierarchy -> [GroupHierarchy] */ - public func tag_ref( + public func search_groups_with_hierarchy( /** - * @param {String} project_id Project Id + * @param {String} fields Requested fields. */ - _ project_id: String, + fields: String? = nil, /** - * @param {WriteProject} body + * @param {Int64} limit Number of results to return (used with `offset`). */ - _ body: WriteProject, + limit: Int64? = nil, /** - * @param {String} commit_sha (Optional): Commit Sha to Tag + * @param {Int64} offset Number of results to skip before returning any (used with `limit`). */ - commit_sha: String? = nil, + offset: Int64? = nil, /** - * @param {String} tag_name Tag Name + * @param {String} sorts Fields to sort by. */ - tag_name: String? = nil, + sorts: String? = nil, /** - * @param {String} tag_message (Optional): Tag Message + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression */ - tag_message: String? = nil, + filter_or: Bool? = nil, + /** + * @param {String} id Match group id. + */ + id: String? = nil, + /** + * @param {String} name Match group name. + */ + name: String? = nil, + /** + * @param {String} external_group_id Match group external_group_id. + */ + external_group_id: String? = nil, + /** + * @param {Bool} externally_managed Match group externally_managed. + */ + externally_managed: Bool? = nil, + /** + * @param {Bool} externally_orphaned Match group externally_orphaned. + */ + externally_orphaned: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_project_id = encodeParam(project_id) - let result: SDKResponse = self.post("/projects/\(path_project_id)/tag", - ["commit_sha": commit_sha, "tag_name": tag_name, "tag_message": tag_message], try! self.encode(body), options) + let result: SDKResponse = self.get("/groups/search/with_hierarchy", + ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed as Any?, "externally_orphaned": externally_orphaned as Any?], nil, options) return result } /** - * ### Configure Repository Credential for a remote dependency - * - * Admin required. - * - * `root_project_id` is required. - * `credential_id` is required. + * ### Get information about a group. * - * PUT /projects/{root_project_id}/credential/{credential_id} -> RepositoryCredential + * GET /groups/{group_id} -> LkGroup */ - public func update_repository_credential( + public func group( /** - * @param {String} root_project_id Root Project Id + * @param {String} group_id Id of group */ - _ root_project_id: String, + _ group_id: String, /** - * @param {String} credential_id Credential Id + * @param {String} fields Requested fields. */ - _ credential_id: String, - /** - * @param {WriteRepositoryCredential} body - */ - _ body: WriteRepositoryCredential, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_root_project_id = encodeParam(root_project_id) - let path_credential_id = encodeParam(credential_id) - let result: SDKResponse = self.put("/projects/\(path_root_project_id)/credential/\(path_credential_id)", nil, try! self.encode(body), options) + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.get("/groups/\(path_group_id)", + ["fields": fields], nil, options) return result } /** - * ### Repository Credential for a remote dependency - * - * Admin required. - * - * `root_project_id` is required. - * `credential_id` is required. + * ### Updates the a group (admin only). * - * DELETE /projects/{root_project_id}/credential/{credential_id} -> String + * PATCH /groups/{group_id} -> LkGroup */ - public func delete_repository_credential( + public func update_group( /** - * @param {String} root_project_id Root Project Id + * @param {String} group_id Id of group */ - _ root_project_id: String, + _ group_id: String, /** - * @param {String} credential_id Credential Id + * @param {WriteGroup} body */ - _ credential_id: String, + _ body: WriteGroup, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_root_project_id = encodeParam(root_project_id) - let path_credential_id = encodeParam(credential_id) - let result: SDKResponse = self.delete("/projects/\(path_root_project_id)/credential/\(path_credential_id)", nil, nil, options) + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.patch("/groups/\(path_group_id)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Get all Repository Credentials for a project - * - * `root_project_id` is required. + * ### Deletes a group (admin only). * - * GET /projects/{root_project_id}/credentials -> [RepositoryCredential] + * DELETE /groups/{group_id} -> String */ - public func get_all_repository_credentials( + public func delete_group( /** - * @param {String} root_project_id Root Project Id + * @param {String} group_id Id of group */ - _ root_project_id: String, + _ group_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_root_project_id = encodeParam(root_project_id) - let result: SDKResponse = self.get("/projects/\(path_root_project_id)/credentials", nil, nil, options) + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)", nil, nil, options) return result } - - - // MARK Query: Run and Manage Queries - /** - * ### Create an async query task - * - * Creates a query task (job) to run a previously created query asynchronously. Returns a Query Task ID. - * - * Use [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task. - * After the query task status reaches "Complete", use [query_task_results(query_task_id)](#!/Query/query_task_results) to fetch the results of the query. + * ### Get information about all the groups in a group * - * POST /query_tasks -> QueryTask + * GET /groups/{group_id}/groups -> [LkGroup] */ - public func create_query_task( - /** - * @param {WriteCreateQueryTask} body - */ - _ body: WriteCreateQueryTask, - /** - * @param {Int64} limit Row limit (may override the limit in the saved query). - */ - limit: Int64? = nil, - /** - * @param {Bool} apply_formatting Apply model-specified formatting to each result. - */ - apply_formatting: Bool? = nil, + public func all_group_groups( /** - * @param {Bool} apply_vis Apply visualization options to results. + * @param {String} group_id Id of group */ - apply_vis: Bool? = nil, + _ group_id: String, /** - * @param {Bool} cache Get results from cache if available. + * @param {String} fields Requested fields. */ - cache: Bool? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.get("/groups/\(path_group_id)/groups", + ["fields": fields], nil, options) + return result + } + + /** + * ### Adds a new group to a group. + * + * POST /groups/{group_id}/groups -> LkGroup + */ + public func add_group_group( /** - * @param {Bool} generate_drill_links Generate drill links (only applicable to 'json_detail' format. + * @param {String} group_id Id of group */ - generate_drill_links: Bool? = nil, + _ group_id: String, /** - * @param {Bool} force_production Force use of production models even if the user is in development mode. Note that this flag being false does not guarantee development models will be used. + * @param {GroupIdForGroupInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH */ - force_production: Bool? = nil, + _ body: GroupIdForGroupInclusion, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.post("/groups/\(path_group_id)/groups", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get information about all the users directly included in a group. + * + * GET /groups/{group_id}/users -> [User] + */ + public func all_group_users( /** - * @param {Bool} cache_only Retrieve any results from cache even if the results have expired. + * @param {String} group_id Id of group */ - cache_only: Bool? = nil, + _ group_id: String, /** - * @param {String} path_prefix Prefix to use for drill links (url encoded). + * @param {String} fields Requested fields. */ - path_prefix: String? = nil, + fields: String? = nil, /** - * @param {Bool} rebuild_pdts Rebuild PDTS used in query. + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ - rebuild_pdts: Bool? = nil, + page: Int64? = nil, /** - * @param {Bool} server_table_calcs Perform table calculations on query results + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ - server_table_calcs: Bool? = nil, + per_page: Int64? = nil, /** - * @param {Int64} image_width Render width for image formats. + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) */ - image_width: Int64? = nil, + limit: Int64? = nil, /** - * @param {Int64} image_height Render height for image formats. + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) */ - image_height: Int64? = nil, + offset: Int64? = nil, /** - * @param {String} fields Requested fields + * @param {String} sorts Fields to sort by. */ - fields: String? = nil, + sorts: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/query_tasks", - ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?, "image_width": image_width, "image_height": image_height, "fields": fields], try! self.encode(body), options) + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.get("/groups/\(path_group_id)/users", + ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts], nil, options) return result } /** - * ### Fetch results of multiple async queries - * - * Returns the results of multiple async queries in one request. - * - * For Query Tasks that are not completed, the response will include the execution status of the Query Task but will not include query results. - * Query Tasks whose results have expired will have a status of 'expired'. - * If the user making the API request does not have sufficient privileges to view a Query Task result, the result will have a status of 'missing' + * ### Adds a new user to a group. * - * GET /query_tasks/multi_results -> StringDictionary + * POST /groups/{group_id}/users -> User */ - public func query_task_multi_results( + public func add_group_user( /** - * @param {DelimArray} query_task_ids List of Query Task IDs + * @param {String} group_id Id of group */ - _ query_task_ids: DelimArray, + _ group_id: String, + /** + * @param {GroupIdForGroupUserInclusion} body WARNING: no writeable properties found for POST, PUT, or PATCH + */ + _ body: GroupIdForGroupUserInclusion, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/query_tasks/multi_results", - ["query_task_ids": query_task_ids as Any?], nil, options) + let path_group_id = encodeParam(group_id) + let result: SDKResponse = self.post("/groups/\(path_group_id)/users", nil, try! self.encode(body), options) return result } /** - * ### Get Query Task details - * - * Use this function to check the status of an async query task. After the status - * reaches "Complete", you can call [query_task_results(query_task_id)](#!/Query/query_task_results) to - * retrieve the results of the query. - * - * Use [create_query_task()](#!/Query/create_query_task) to create an async query task. + * ### Removes a user from a group. * - * GET /query_tasks/{query_task_id} -> QueryTask + * DELETE /groups/{group_id}/users/{user_id} -> Voidable */ - public func query_task( + public func delete_group_user( /** - * @param {String} query_task_id ID of the Query Task + * @param {String} group_id Id of group */ - _ query_task_id: String, + _ group_id: String, /** - * @param {String} fields Requested fields. + * @param {String} user_id Id of user to remove from group */ - fields: String? = nil, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_query_task_id = encodeParam(query_task_id) - let result: SDKResponse = self.get("/query_tasks/\(path_query_task_id)", - ["fields": fields], nil, options) + let path_group_id = encodeParam(group_id) + let path_user_id = encodeParam(user_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)/users/\(path_user_id)", nil, nil, options) return result } /** - * ### Get Async Query Results - * - * Returns the results of an async query task if the query has completed. - * - * If the query task is still running or waiting to run, this function returns 204 No Content. - * - * If the query task ID is invalid or the cached results of the query task have expired, this function returns 404 Not Found. - * - * Use [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task - * Call query_task_results only after the query task status reaches "Complete". - * - * You can also use [query_task_multi_results()](#!/Query/query_task_multi_results) retrieve the - * results of multiple async query tasks at the same time. - * - * #### SQL Error Handling: - * If the query fails due to a SQL db error, how this is communicated depends on the result_format you requested in `create_query_task()`. - * - * For `json_detail` result_format: `query_task_results()` will respond with HTTP status '200 OK' and db SQL error info - * will be in the `errors` property of the response object. The 'data' property will be empty. - * - * For all other result formats: `query_task_results()` will respond with HTTP status `400 Bad Request` and some db SQL error info - * will be in the message of the 400 error response, but not as detailed as expressed in `json_detail.errors`. - * These data formats can only carry row data, and error info is not row data. + * ### Removes a group from a group. * - * GET /query_tasks/{query_task_id}/results -> String + * DELETE /groups/{group_id}/groups/{deleting_group_id} -> Voidable */ - public func query_task_results( + public func delete_group_from_group( /** - * @param {String} query_task_id ID of the Query Task + * @param {String} group_id Id of group */ - _ query_task_id: String, + _ group_id: String, + /** + * @param {String} deleting_group_id Id of group to delete + */ + _ deleting_group_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_query_task_id = encodeParam(query_task_id) - let result: SDKResponse = self.get("/query_tasks/\(path_query_task_id)/results", nil, nil, options) + let path_group_id = encodeParam(group_id) + let path_deleting_group_id = encodeParam(deleting_group_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)/groups/\(path_deleting_group_id)", nil, nil, options) return result } /** - * ### Get a previously created query by id. - * - * A Looker query object includes the various parameters that define a database query that has been run or - * could be run in the future. These parameters include: model, view, fields, filters, pivots, etc. - * Query *results* are not part of the query object. - * - * Query objects are unique and immutable. Query objects are created automatically in Looker as users explore data. - * Looker does not delete them; they become part of the query history. When asked to create a query for - * any given set of parameters, Looker will first try to find an existing query object with matching - * parameters and will only create a new object when an appropriate object can not be found. - * - * This 'get' method is used to get the details about a query for a given id. See the other methods here - * to 'create' and 'run' queries. + * ### Set the value of a user attribute for a group. * - * Note that some fields like 'filter_config' and 'vis_config' etc are specific to how the Looker UI - * builds queries and visualizations and are not generally useful for API use. They are not required when - * creating new queries and can usually just be ignored. + * For information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values). * - * GET /queries/{query_id} -> Query + * PATCH /groups/{group_id}/attribute_values/{user_attribute_id} -> UserAttributeGroupValue */ - public func query( + public func update_user_attribute_group_value( /** - * @param {Int64} query_id Id of query + * @param {String} group_id Id of group */ - _ query_id: Int64, + _ group_id: String, /** - * @param {String} fields Requested fields. + * @param {String} user_attribute_id Id of user attribute */ - fields: String? = nil, + _ user_attribute_id: String, + /** + * @param {UserAttributeGroupValue} body WARNING: no writeable properties found for POST, PUT, or PATCH + */ + _ body: UserAttributeGroupValue, options: ITransportSettings? = nil ) -> SDKResponse { - let path_query_id = encodeParam(query_id) - let result: SDKResponse = self.get("/queries/\(path_query_id)", - ["fields": fields], nil, options) + let path_group_id = encodeParam(group_id) + let path_user_attribute_id = encodeParam(user_attribute_id) + let result: SDKResponse = self.patch("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, try! self.encode(body), options) return result } /** - * ### Get the query for a given query slug. - * - * This returns the query for the 'slug' in a query share URL. - * - * The 'slug' is a randomly chosen short string that is used as an alternative to the query's id value - * for use in URLs etc. This method exists as a convenience to help you use the API to 'find' queries that - * have been created using the Looker UI. - * - * You can use the Looker explore page to build a query and then choose the 'Share' option to - * show the share url for the query. Share urls generally look something like 'https://looker.yourcompany/x/vwGSbfc'. - * The trailing 'vwGSbfc' is the share slug. You can pass that string to this api method to get details about the query. - * Those details include the 'id' that you can use to run the query. Or, you can copy the query body - * (perhaps with your own modification) and use that as the basis to make/run new queries. - * - * This will also work with slugs from Looker explore urls like - * 'https://looker.yourcompany/explore/ecommerce/orders?qid=aogBgL6o3cKK1jN3RoZl5s'. In this case - * 'aogBgL6o3cKK1jN3RoZl5s' is the slug. + * ### Remove a user attribute value from a group. * - * GET /queries/slug/{slug} -> Query + * DELETE /groups/{group_id}/attribute_values/{user_attribute_id} -> Voidable */ - public func query_for_slug( + public func delete_user_attribute_group_value( /** - * @param {String} slug Slug of query + * @param {String} group_id Id of group */ - _ slug: String, + _ group_id: String, + /** + * @param {String} user_attribute_id Id of user attribute + */ + _ user_attribute_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_group_id = encodeParam(group_id) + let path_user_attribute_id = encodeParam(user_attribute_id) + let result: SDKResponse = self.delete("/groups/\(path_group_id)/attribute_values/\(path_user_attribute_id)", nil, nil, options) + return result + } + + + + // MARK Homepage: Manage Homepage + + /** + * ### Get information about the primary homepage's sections. + * + * GET /primary_homepage_sections -> [HomepageSection] + */ + public func all_primary_homepage_sections( /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_slug = encodeParam(slug) - let result: SDKResponse = self.get("/queries/slug/\(path_slug)", + let result: SDKResponse = self.get("/primary_homepage_sections", ["fields": fields], nil, options) return result } + + + // MARK Integration: Manage Integrations + /** - * ### Create a query. + * ### Get information about all Integration Hubs. * - * This allows you to create a new query that you can later run. Looker queries are immutable once created - * and are not deleted. If you create a query that is exactly like an existing query then the existing query - * will be returned and no new query will be created. Whether a new query is created or not, you can use - * the 'id' in the returned query with the 'run' method. + * GET /integration_hubs -> [IntegrationHub] + */ + public func all_integration_hubs( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/integration_hubs", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create a new Integration Hub. * - * The query parameters are passed as json in the body of the request. + * This API is rate limited to prevent it from being used for SSRF attacks * - * POST /queries -> Query + * POST /integration_hubs -> IntegrationHub */ - public func create_query( + public func create_integration_hub( /** - * @param {WriteQuery} body + * @param {WriteIntegrationHub} body */ - _ body: WriteQuery, + _ body: WriteIntegrationHub, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/queries", + let result: SDKResponse = self.post("/integration_hubs", ["fields": fields], try! self.encode(body), options) return result } /** - * ### Run a saved query. - * - * This runs a previously saved query. You can use this on a query that was generated in the Looker UI - * or one that you have explicitly created using the API. You can also use a query 'id' from a saved 'Look'. - * - * The 'result_format' parameter specifies the desired structure and format of the response. - * - * Supported formats: - * - * | result_format | Description - * | :-----------: | :--- | - * | json | Plain json - * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query - * | csv | Comma separated values with a header - * | txt | Tab separated values with a header - * | html | Simple html - * | md | Simple markdown - * | xlsx | MS Excel spreadsheet - * | sql | Returns the generated SQL rather than running the query - * | png | A PNG image of the visualization of the query - * | jpg | A JPG image of the visualization of the query - * - * GET /queries/{query_id}/run/{result_format} -> String + * ### Get information about a Integration Hub. * - * **Note**: Binary content may be returned by this method. + * GET /integration_hubs/{integration_hub_id} -> IntegrationHub */ - public func run_query( + public func integration_hub( /** - * @param {Int64} query_id Id of query + * @param {String} integration_hub_id Id of integration_hub */ - _ query_id: Int64, + _ integration_hub_id: String, /** - * @param {String} result_format Format of result + * @param {String} fields Requested fields. */ - _ result_format: String, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_integration_hub_id = encodeParam(integration_hub_id) + let result: SDKResponse = self.get("/integration_hubs/\(path_integration_hub_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update a Integration Hub definition. + * + * This API is rate limited to prevent it from being used for SSRF attacks + * + * PATCH /integration_hubs/{integration_hub_id} -> IntegrationHub + */ + public func update_integration_hub( /** - * @param {Int64} limit Row limit (may override the limit in the saved query). + * @param {String} integration_hub_id Id of integration_hub */ - limit: Int64? = nil, + _ integration_hub_id: String, /** - * @param {Bool} apply_formatting Apply model-specified formatting to each result. + * @param {WriteIntegrationHub} body */ - apply_formatting: Bool? = nil, + _ body: WriteIntegrationHub, /** - * @param {Bool} apply_vis Apply visualization options to results. + * @param {String} fields Requested fields. */ - apply_vis: Bool? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_integration_hub_id = encodeParam(integration_hub_id) + let result: SDKResponse = self.patch("/integration_hubs/\(path_integration_hub_id)", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Delete a Integration Hub. + * + * DELETE /integration_hubs/{integration_hub_id} -> String + */ + public func delete_integration_hub( /** - * @param {Bool} cache Get results from cache if available. + * @param {String} integration_hub_id Id of integration_hub */ - cache: Bool? = nil, + _ integration_hub_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_integration_hub_id = encodeParam(integration_hub_id) + let result: SDKResponse = self.delete("/integration_hubs/\(path_integration_hub_id)", nil, nil, options) + return result + } + + /** + * Accepts the legal agreement for a given integration hub. This only works for integration hubs that have legal_agreement_required set to true and legal_agreement_signed set to false. + * + * POST /integration_hubs/{integration_hub_id}/accept_legal_agreement -> IntegrationHub + */ + public func accept_integration_hub_legal_agreement( /** - * @param {Int64} image_width Render width for image formats. + * @param {String} integration_hub_id Id of integration_hub */ - image_width: Int64? = nil, + _ integration_hub_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_integration_hub_id = encodeParam(integration_hub_id) + let result: SDKResponse = self.post("/integration_hubs/\(path_integration_hub_id)/accept_legal_agreement", nil, nil, options) + return result + } + + /** + * ### Get information about all Integrations. + * + * GET /integrations -> [Integration] + */ + public func all_integrations( /** - * @param {Int64} image_height Render height for image formats. + * @param {String} fields Requested fields. */ - image_height: Int64? = nil, + fields: String? = nil, /** - * @param {Bool} generate_drill_links Generate drill links (only applicable to 'json_detail' format. + * @param {String} integration_hub_id Filter to a specific provider */ - generate_drill_links: Bool? = nil, + integration_hub_id: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/integrations", + ["fields": fields, "integration_hub_id": integration_hub_id], nil, options) + return result + } + + /** + * ### Get information about a Integration. + * + * GET /integrations/{integration_id} -> Integration + */ + public func integration( /** - * @param {Bool} force_production Force use of production models even if the user is in development mode. Note that this flag being false does not guarantee development models will be used. + * @param {String} integration_id Id of integration */ - force_production: Bool? = nil, + _ integration_id: String, /** - * @param {Bool} cache_only Retrieve any results from cache even if the results have expired. + * @param {String} fields Requested fields. */ - cache_only: Bool? = nil, + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_integration_id = encodeParam(integration_id) + let result: SDKResponse = self.get("/integrations/\(path_integration_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update parameters on a Integration. + * + * PATCH /integrations/{integration_id} -> Integration + */ + public func update_integration( /** - * @param {String} path_prefix Prefix to use for drill links (url encoded). + * @param {String} integration_id Id of integration */ - path_prefix: String? = nil, + _ integration_id: String, /** - * @param {Bool} rebuild_pdts Rebuild PDTS used in query. + * @param {WriteIntegration} body */ - rebuild_pdts: Bool? = nil, + _ body: WriteIntegration, /** - * @param {Bool} server_table_calcs Perform table calculations on query results + * @param {String} fields Requested fields. */ - server_table_calcs: Bool? = nil, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_query_id = encodeParam(query_id) - let path_result_format = encodeParam(result_format) - let result: SDKResponse = self.get("/queries/\(path_query_id)/run/\(path_result_format)", - ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?], nil, options) + let path_integration_id = encodeParam(integration_id) + let result: SDKResponse = self.patch("/integrations/\(path_integration_id)", + ["fields": fields], try! self.encode(body), options) return result } /** - * ### Run the query that is specified inline in the posted body. + * Returns the Integration form for presentation to the user. + * + * POST /integrations/{integration_id}/form -> DataActionForm + */ + public func fetch_integration_form( + /** + * @param {String} integration_id Id of integration + */ + _ integration_id: String, + /** + * @param {StringDictionary} body + */ + body: StringDictionary? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_integration_id = encodeParam(integration_id) + let result: SDKResponse = self.post("/integrations/\(path_integration_id)/form", nil, try! self.encode(body), options) + return result + } + + /** + * Tests the integration to make sure all the settings are working. + * + * POST /integrations/{integration_id}/test -> IntegrationTestResult + */ + public func test_integration( + /** + * @param {String} integration_id Id of integration + */ + _ integration_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_integration_id = encodeParam(integration_id) + let result: SDKResponse = self.post("/integrations/\(path_integration_id)/test", nil, nil, options) + return result + } + + + + // MARK JdbcInterface: LookML Model metadata for JDBC Clients + + /** + * ### Handle Avatica RPC Requests + * + * GET /__jdbc_interface__ -> JdbcInterface + */ + public func jdbc_interface( + /** + * @param {String} avatica_request Avatica RPC request + */ + avatica_request: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/__jdbc_interface__", + ["avatica_request": avatica_request], nil, options) + return result + } + + + + // MARK Look: Run and Manage Looks + + /** + * ### Get information about all active Looks + * + * Returns an array of **abbreviated Look objects** describing all the looks that the caller has access to. Soft-deleted Looks are **not** included. + * + * Get the **full details** of a specific look by id with [look(id)](#!/Look/look) + * + * Find **soft-deleted looks** with [search_looks()](#!/Look/search_looks) + * + * GET /looks -> [Look] + */ + public func all_looks( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/looks", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create a Look + * + * To create a look to display query data, first create the query with [create_query()](#!/Query/create_query) + * then assign the query's id to the `query_id` property in the call to `create_look()`. + * + * To place the look into a particular space, assign the space's id to the `space_id` property + * in the call to `create_look()`. + * + * POST /looks -> LookWithQuery + */ + public func create_look( + /** + * @param {WriteLookWithQuery} body + */ + _ body: WriteLookWithQuery, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/looks", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Search Looks + * + * Returns an **array of Look objects** that match the specified search criteria. + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * + * Get a **single look** by id with [look(id)](#!/Look/look) + * + * GET /looks/search -> [Look] + */ + public func search_looks( + /** + * @param {String} id Match look id. + */ + id: String? = nil, + /** + * @param {String} title Match Look title. + */ + title: String? = nil, + /** + * @param {String} description Match Look description. + */ + description: String? = nil, + /** + * @param {String} content_favorite_id Select looks with a particular content favorite id + */ + content_favorite_id: String? = nil, + /** + * @param {String} folder_id Select looks in a particular folder. + */ + folder_id: String? = nil, + /** + * @param {String} user_id Select looks created by a particular user. + */ + user_id: String? = nil, + /** + * @param {String} view_count Select looks with particular view_count value + */ + view_count: String? = nil, + /** + * @param {Bool} deleted Select soft-deleted looks + */ + deleted: Bool? = nil, + /** + * @param {String} query_id Select looks that reference a particular query by query_id + */ + query_id: String? = nil, + /** + * @param {Bool} curate Exclude items that exist only in personal spaces other than the users + */ + curate: Bool? = nil, + /** + * @param {String} last_viewed_at Select looks based on when they were last viewed + */ + last_viewed_at: String? = nil, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results + */ + page: Int64? = nil, + /** + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page + */ + per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, + /** + * @param {String} sorts One or more fields to sort results by. Sortable fields: [:title, :user_id, :id, :created_at, :space_id, :folder_id, :description, :updated_at, :last_updater_id, :view_count, :favorite_count, :content_favorite_id, :deleted, :deleted_at, :last_viewed_at, :last_accessed_at, :query_id] + */ + sorts: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression + */ + filter_or: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/looks/search", + ["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 as Any?, "query_id": query_id, "curate": curate as Any?, "last_viewed_at": last_viewed_at, "fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or as Any?], nil, options) + return result + } + + /** + * ### Get a Look. + * + * Returns detailed information about a Look and its associated Query. + * + * GET /looks/{look_id} -> LookWithQuery + */ + public func look( + /** + * @param {String} look_id Id of look + */ + _ look_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_look_id = encodeParam(look_id) + let result: SDKResponse = self.get("/looks/\(path_look_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Modify a Look + * + * Use this function to modify parts of a look. Property values given in a call to `update_look` are + * applied to the existing look, so there's no need to include properties whose values are not changing. + * It's best to specify only the properties you want to change and leave everything else out + * of your `update_look` call. **Look properties marked 'read-only' will be ignored.** + * + * When a user deletes a look in the Looker UI, the look data remains in the database but is + * marked with a deleted flag ("soft-deleted"). Soft-deleted looks can be undeleted (by an admin) + * if the delete was in error. + * + * To soft-delete a look via the API, use [update_look()](#!/Look/update_look) to change the look's `deleted` property to `true`. + * You can undelete a look by calling `update_look` to change the look's `deleted` property to `false`. + * + * Soft-deleted looks are excluded from the results of [all_looks()](#!/Look/all_looks) and [search_looks()](#!/Look/search_looks), so they + * essentially disappear from view even though they still reside in the db. + * In API 3.1 and later, you can pass `deleted: true` as a parameter to [search_looks()](#!/3.1/Look/search_looks) to list soft-deleted looks. + * + * NOTE: [delete_look()](#!/Look/delete_look) performs a "hard delete" - the look data is removed from the Looker + * database and destroyed. There is no "undo" for `delete_look()`. + * + * PATCH /looks/{look_id} -> LookWithQuery + */ + public func update_look( + /** + * @param {String} look_id Id of look + */ + _ look_id: String, + /** + * @param {WriteLookWithQuery} body + */ + _ body: WriteLookWithQuery, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_look_id = encodeParam(look_id) + let result: SDKResponse = self.patch("/looks/\(path_look_id)", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Permanently Delete a Look + * + * This operation **permanently** removes a look from the Looker database. + * + * NOTE: There is no "undo" for this kind of delete. + * + * For information about soft-delete (which can be undone) see [update_look()](#!/Look/update_look). + * + * DELETE /looks/{look_id} -> String + */ + public func delete_look( + /** + * @param {String} look_id Id of look + */ + _ look_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_look_id = encodeParam(look_id) + let result: SDKResponse = self.delete("/looks/\(path_look_id)", nil, nil, options) + return result + } + + /** + * ### Run a Look + * + * Runs a given look's query and returns the results in the requested format. + * + * Supported formats: + * + * | result_format | Description + * | :-----------: | :--- | + * | json | Plain json + * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query + * | csv | Comma separated values with a header + * | txt | Tab separated values with a header + * | html | Simple html + * | md | Simple markdown + * | xlsx | MS Excel spreadsheet + * | sql | Returns the generated SQL rather than running the query + * | png | A PNG image of the visualization of the query + * | jpg | A JPG image of the visualization of the query + * + * GET /looks/{look_id}/run/{result_format} -> String + * + * **Note**: Binary content may be returned by this method. + */ + public func run_look( + /** + * @param {String} look_id Id of look + */ + _ look_id: String, + /** + * @param {String} result_format Format of result + */ + _ result_format: String, + /** + * @param {Int64} limit Row limit (may override the limit in the saved query). + */ + limit: Int64? = nil, + /** + * @param {Bool} apply_formatting Apply model-specified formatting to each result. + */ + apply_formatting: Bool? = nil, + /** + * @param {Bool} apply_vis Apply visualization options to results. + */ + apply_vis: Bool? = nil, + /** + * @param {Bool} cache Get results from cache if available. + */ + cache: Bool? = nil, + /** + * @param {Int64} image_width Render width for image formats. + */ + image_width: Int64? = nil, + /** + * @param {Int64} image_height Render height for image formats. + */ + image_height: Int64? = nil, + /** + * @param {Bool} generate_drill_links Generate drill links (only applicable to 'json_detail' format. + */ + generate_drill_links: Bool? = nil, + /** + * @param {Bool} force_production Force use of production models even if the user is in development mode. Note that this flag being false does not guarantee development models will be used. + */ + force_production: Bool? = nil, + /** + * @param {Bool} cache_only Retrieve any results from cache even if the results have expired. + */ + cache_only: Bool? = nil, + /** + * @param {String} path_prefix Prefix to use for drill links (url encoded). + */ + path_prefix: String? = nil, + /** + * @param {Bool} rebuild_pdts Rebuild PDTS used in query. + */ + rebuild_pdts: Bool? = nil, + /** + * @param {Bool} server_table_calcs Perform table calculations on query results + */ + server_table_calcs: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_look_id = encodeParam(look_id) + let path_result_format = encodeParam(result_format) + let result: SDKResponse = self.get("/looks/\(path_look_id)/run/\(path_result_format)", + ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?], nil, options) + return result + } + + /** + * ### Copy an existing look + * + * Creates a copy of an existing look, in a specified folder, and returns the copied look. + * + * `look_id` and `folder_id` are required. + * + * `look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard. + * + * POST /looks/{look_id}/copy -> LookWithQuery + */ + public func copy_look( + /** + * @param {String} look_id Look id to copy. + */ + _ look_id: String, + /** + * @param {String} folder_id Folder id to copy to. + */ + folder_id: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_look_id = encodeParam(look_id) + let result: SDKResponse = self.post("/looks/\(path_look_id)/copy", + ["folder_id": folder_id], nil, options) + return result + } + + /** + * ### Move an existing look + * + * Moves a look to a specified folder, and returns the moved look. + * + * `look_id` and `folder_id` are required. + * `look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard. + * + * PATCH /looks/{look_id}/move -> LookWithQuery + */ + public func move_look( + /** + * @param {String} look_id Look id to move. + */ + _ look_id: String, + /** + * @param {String} folder_id Folder id to move to. + */ + _ folder_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_look_id = encodeParam(look_id) + let result: SDKResponse = self.patch("/looks/\(path_look_id)/move", + ["folder_id": folder_id], nil, options) + return result + } + + + + // MARK LookmlModel: Manage LookML Models + + /** + * ### Get information about all lookml models. + * + * GET /lookml_models -> [LookmlModel] + */ + public func all_lookml_models( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Int64} limit Number of results to return. (can be used with offset) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (Defaults to 0 if not set when limit is used) + */ + offset: Int64? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/lookml_models", + ["fields": fields, "limit": limit, "offset": offset], nil, options) + return result + } + + /** + * ### Create a lookml model using the specified configuration. + * + * POST /lookml_models -> LookmlModel + */ + public func create_lookml_model( + /** + * @param {WriteLookmlModel} body + */ + _ body: WriteLookmlModel, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/lookml_models", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get information about a lookml model. + * + * GET /lookml_models/{lookml_model_name} -> LookmlModel + */ + public func lookml_model( + /** + * @param {String} lookml_model_name Name of lookml model. + */ + _ lookml_model_name: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_lookml_model_name = encodeParam(lookml_model_name) + let result: SDKResponse = self.get("/lookml_models/\(path_lookml_model_name)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update a lookml model using the specified configuration. + * + * PATCH /lookml_models/{lookml_model_name} -> LookmlModel + */ + public func update_lookml_model( + /** + * @param {String} lookml_model_name Name of lookml model. + */ + _ lookml_model_name: String, + /** + * @param {WriteLookmlModel} body + */ + _ body: WriteLookmlModel, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_lookml_model_name = encodeParam(lookml_model_name) + let result: SDKResponse = self.patch("/lookml_models/\(path_lookml_model_name)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Delete a lookml model. + * + * DELETE /lookml_models/{lookml_model_name} -> String + */ + public func delete_lookml_model( + /** + * @param {String} lookml_model_name Name of lookml model. + */ + _ lookml_model_name: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_lookml_model_name = encodeParam(lookml_model_name) + let result: SDKResponse = self.delete("/lookml_models/\(path_lookml_model_name)", nil, nil, options) + return result + } + + /** + * ### Get information about a lookml model explore. + * + * GET /lookml_models/{lookml_model_name}/explores/{explore_name} -> LookmlModelExplore + */ + public func lookml_model_explore( + /** + * @param {String} lookml_model_name Name of lookml model. + */ + _ lookml_model_name: String, + /** + * @param {String} explore_name Name of explore. + */ + _ explore_name: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_lookml_model_name = encodeParam(lookml_model_name) + let path_explore_name = encodeParam(explore_name) + let result: SDKResponse = self.get("/lookml_models/\(path_lookml_model_name)/explores/\(path_explore_name)", + ["fields": fields], nil, options) + return result + } + + + + // MARK Metadata: Connection Metadata Features + + /** + * ### Field name suggestions for a model and view + * + * `filters` is a string hash of values, with the key as the field name and the string value as the filter expression: + * + * ```ruby + * {'users.age': '>=60'} + * ``` + * + * or + * + * ```ruby + * {'users.age': '<30'} + * ``` + * + * or + * + * ```ruby + * {'users.age': '=50'} + * ``` + * + * GET /models/{model_name}/views/{view_name}/fields/{field_name}/suggestions -> ModelFieldSuggestions + */ + public func model_fieldname_suggestions( + /** + * @param {String} model_name Name of model + */ + _ model_name: String, + /** + * @param {String} view_name Name of view + */ + _ view_name: String, + /** + * @param {String} field_name Name of field to use for suggestions + */ + _ field_name: String, + /** + * @param {String} term Search term pattern (evaluated as as `%term%`) + */ + term: String? = nil, + /** + * @param {Any} filters Suggestion filters with field name keys and comparison expressions + */ + filters: Any? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_model_name = encodeParam(model_name) + let path_view_name = encodeParam(view_name) + let path_field_name = encodeParam(field_name) + let result: SDKResponse = self.get("/models/\(path_model_name)/views/\(path_view_name)/fields/\(path_field_name)/suggestions", + ["term": term, "filters": filters], nil, options) + return result + } + + /** + * ### Get a single model + * + * GET /models/{model_name} -> Model + */ + public func get_model( + /** + * @param {String} model_name Name of model + */ + _ model_name: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_model_name = encodeParam(model_name) + let result: SDKResponse = self.get("/models/\(path_model_name)", nil, nil, options) + return result + } + + /** + * ### List databases available to this connection + * + * Certain dialects can support multiple databases per single connection. + * If this connection supports multiple databases, the database names will be returned in an array. + * + * Connections using dialects that do not support multiple databases will return an empty array. + * + * **Note**: [Connection Features](#!/Metadata/connection_features) can be used to determine if a connection supports + * multiple databases. + * + * GET /connections/{connection_name}/databases -> [String] + */ + public func connection_databases( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.get("/connections/\(path_connection_name)/databases", nil, nil, options) + return result + } + + /** + * ### Retrieve metadata features for this connection + * + * Returns a list of feature names with `true` (available) or `false` (not available) + * + * GET /connections/{connection_name}/features -> ConnectionFeatures + */ + public func connection_features( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.get("/connections/\(path_connection_name)/features", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get the list of schemas and tables for a connection + * + * GET /connections/{connection_name}/schemas -> [Schema] + */ + public func connection_schemas( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {String} database For dialects that support multiple databases, optionally identify which to use + */ + database: String? = nil, + /** + * @param {Bool} cache True to use fetch from cache, false to load fresh + */ + cache: Bool? = nil, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.get("/connections/\(path_connection_name)/schemas", + ["database": database, "cache": cache as Any?, "fields": fields], nil, options) + return result + } + + /** + * ### Get the list of tables for a schema + * + * For dialects that support multiple databases, optionally identify which to use. If not provided, the default + * database for the connection will be used. + * + * For dialects that do **not** support multiple databases, **do not use** the database parameter + * + * GET /connections/{connection_name}/tables -> [SchemaTables] + */ + public func connection_tables( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {String} database Optional. Name of database to use for the query, only if applicable + */ + database: String? = nil, + /** + * @param {String} schema_name Optional. Return only tables for this schema + */ + schema_name: String? = nil, + /** + * @param {Bool} cache True to fetch from cache, false to load fresh + */ + cache: Bool? = nil, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {String} table_filter Optional. Return tables with names that contain this value + */ + table_filter: String? = nil, + /** + * @param {Int64} table_limit Optional. Return tables up to the table_limit + */ + table_limit: Int64? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.get("/connections/\(path_connection_name)/tables", + ["database": database, "schema_name": schema_name, "cache": cache as Any?, "fields": fields, "table_filter": table_filter, "table_limit": table_limit], nil, options) + return result + } + + /** + * ### Get the columns (and therefore also the tables) in a specific schema + * + * GET /connections/{connection_name}/columns -> [SchemaColumns] + */ + public func connection_columns( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {String} database For dialects that support multiple databases, optionally identify which to use + */ + database: String? = nil, + /** + * @param {String} schema_name Name of schema to use. + */ + schema_name: String? = nil, + /** + * @param {Bool} cache True to fetch from cache, false to load fresh + */ + cache: Bool? = nil, + /** + * @param {Int64} table_limit limits the tables per schema returned + */ + table_limit: Int64? = nil, + /** + * @param {String} table_names only fetch columns for a given (comma-separated) list of tables + */ + table_names: String? = nil, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.get("/connections/\(path_connection_name)/columns", + ["database": database, "schema_name": schema_name, "cache": cache as Any?, "table_limit": table_limit, "table_names": table_names, "fields": fields], nil, options) + return result + } + + /** + * ### Search a connection for columns matching the specified name + * + * **Note**: `column_name` must be a valid column name. It is not a search pattern. + * + * GET /connections/{connection_name}/search_columns -> [ColumnSearch] + */ + public func connection_search_columns( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {String} column_name Column name to find + */ + column_name: String? = nil, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.get("/connections/\(path_connection_name)/search_columns", + ["column_name": column_name, "fields": fields], nil, options) + return result + } + + /** + * ### Connection cost estimating + * + * Assign a `sql` statement to the body of the request. e.g., for Ruby, `{sql: 'select * from users'}` + * + * **Note**: If the connection's dialect has no support for cost estimates, an error will be returned + * + * POST /connections/{connection_name}/cost_estimate -> CostEstimate + */ + public func connection_cost_estimate( + /** + * @param {String} connection_name Name of connection + */ + _ connection_name: String, + /** + * @param {CreateCostEstimate} body WARNING: no writeable properties found for POST, PUT, or PATCH + */ + _ body: CreateCostEstimate, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_connection_name = encodeParam(connection_name) + let result: SDKResponse = self.post("/connections/\(path_connection_name)/cost_estimate", + ["fields": fields], try! self.encode(body), options) + return result + } + + + + // MARK Project: Manage Projects + + /** + * ### Generate Lockfile for All LookML Dependencies + * + * Git must have been configured, must be in dev mode and deploy permission required + * + * Install_all is a two step process + * 1. For each remote_dependency in a project the dependency manager will resolve any ambiguous ref. + * 2. The project will then write out a lockfile including each remote_dependency with its resolved ref. + * + * POST /projects/{project_id}/manifest/lock_all -> String + */ + public func lock_all( + /** + * @param {String} project_id Id of project + */ + _ project_id: String, + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/manifest/lock_all", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get All Git Branches + * + * Returns a list of git branches in the project repository + * + * GET /projects/{project_id}/git_branches -> [GitBranch] + */ + public func all_git_branches( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/git_branches", nil, nil, options) + return result + } + + /** + * ### Get the Current Git Branch + * + * Returns the git branch currently checked out in the given project repository + * + * GET /projects/{project_id}/git_branch -> GitBranch + */ + public func git_branch( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/git_branch", nil, nil, options) + return result + } + + /** + * ### Checkout and/or reset --hard an existing Git Branch + * + * Only allowed in development mode + * - Call `update_session` to select the 'dev' workspace. + * + * Checkout an existing branch if name field is different from the name of the currently checked out branch. + * + * Optionally specify a branch name, tag name or commit SHA to which the branch should be reset. + * **DANGER** hard reset will be force pushed to the remote. Unsaved changes and commits may be permanently lost. + * + * PUT /projects/{project_id}/git_branch -> GitBranch + */ + public func update_git_branch( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {WriteGitBranch} body + */ + _ body: WriteGitBranch, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.put("/projects/\(path_project_id)/git_branch", nil, try! self.encode(body), options) + return result + } + + /** + * ### Create and Checkout a Git Branch + * + * Creates and checks out a new branch in the given project repository + * Only allowed in development mode + * - Call `update_session` to select the 'dev' workspace. + * + * Optionally specify a branch name, tag name or commit SHA as the start point in the ref field. + * If no ref is specified, HEAD of the current branch will be used as the start point for the new branch. + * + * POST /projects/{project_id}/git_branch -> GitBranch + */ + public func create_git_branch( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {WriteGitBranch} body + */ + _ body: WriteGitBranch, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/git_branch", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get the specified Git Branch + * + * Returns the git branch specified in branch_name path param if it exists in the given project repository + * + * GET /projects/{project_id}/git_branch/{branch_name} -> GitBranch + */ + public func find_git_branch( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {String} branch_name Branch Name + */ + _ branch_name: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let path_branch_name = encodeParam(branch_name) + let result: SDKResponse = self.get("/projects/\(path_project_id)/git_branch/\(path_branch_name)", nil, nil, options) + return result + } + + /** + * ### Delete the specified Git Branch + * + * Delete git branch specified in branch_name path param from local and remote of specified project repository + * + * DELETE /projects/{project_id}/git_branch/{branch_name} -> String + */ + public func delete_git_branch( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {String} branch_name Branch Name + */ + _ branch_name: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let path_branch_name = encodeParam(branch_name) + let result: SDKResponse = self.delete("/projects/\(path_project_id)/git_branch/\(path_branch_name)", nil, nil, options) + return result + } + + /** + * ### Deploy a Remote Branch or Ref to Production + * + * Git must have been configured and deploy permission required. + * + * Deploy is a one/two step process + * 1. If this is the first deploy of this project, create the production project with git repository. + * 2. Pull the branch or ref into the production project. + * + * Can only specify either a branch or a ref. + * + * POST /projects/{project_id}/deploy_ref_to_production -> String + */ + public func deploy_ref_to_production( + /** + * @param {String} project_id Id of project + */ + _ project_id: String, + /** + * @param {String} branch Branch to deploy to production + */ + branch: String? = nil, + /** + * @param {String} ref Ref to deploy to production + */ + ref: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/deploy_ref_to_production", + ["branch": branch, "ref": ref], nil, options) + return result + } + + /** + * ### Deploy LookML from this Development Mode Project to Production + * + * Git must have been configured, must be in dev mode and deploy permission required + * + * Deploy is a two / three step process: + * + * 1. Push commits in current branch of dev mode project to the production branch (origin/master). + * Note a. This step is skipped in read-only projects. + * Note b. If this step is unsuccessful for any reason (e.g. rejected non-fastforward because production branch has + * commits not in current branch), subsequent steps will be skipped. + * 2. If this is the first deploy of this project, create the production project with git repository. + * 3. Pull the production branch into the production project. + * + * POST /projects/{project_id}/deploy_to_production -> String + */ + public func deploy_to_production( + /** + * @param {String} project_id Id of project + */ + _ project_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/deploy_to_production", nil, nil, options) + return result + } + + /** + * ### Reset a project to the revision of the project that is in production. + * + * **DANGER** this will delete any changes that have not been pushed to a remote repository. + * + * POST /projects/{project_id}/reset_to_production -> String + */ + public func reset_project_to_production( + /** + * @param {String} project_id Id of project + */ + _ project_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/reset_to_production", nil, nil, options) + return result + } + + /** + * ### Reset a project development branch to the revision of the project that is on the remote. + * + * **DANGER** this will delete any changes that have not been pushed to a remote repository. + * + * POST /projects/{project_id}/reset_to_remote -> String + */ + public func reset_project_to_remote( + /** + * @param {String} project_id Id of project + */ + _ project_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/reset_to_remote", nil, nil, options) + return result + } + + /** + * ### Get All Projects + * + * Returns all projects visible to the current user + * + * GET /projects -> [Project] + */ + public func all_projects( + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/projects", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create A Project + * + * dev mode required. + * - Call `update_session` to select the 'dev' workspace. + * + * `name` is required. + * `git_remote_url` is not allowed. To configure Git for the newly created project, follow the instructions in `update_project`. + * + * POST /projects -> Project + */ + public func create_project( + /** + * @param {WriteProject} body + */ + _ body: WriteProject, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/projects", nil, try! self.encode(body), options) + return result + } + + /** + * ### Get A Project + * + * Returns the project with the given project id + * + * GET /projects/{project_id} -> Project + */ + public func project( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Update Project Configuration + * + * Apply changes to a project's configuration. + * + * + * #### Configuring Git for a Project + * + * To set up a Looker project with a remote git repository, follow these steps: + * + * 1. Call `update_session` to select the 'dev' workspace. + * 1. Call `create_git_deploy_key` to create a new deploy key for the project + * 1. Copy the deploy key text into the remote git repository's ssh key configuration + * 1. Call `update_project` to set project's `git_remote_url` ()and `git_service_name`, if necessary). + * + * When you modify a project's `git_remote_url`, Looker connects to the remote repository to fetch + * metadata. The remote git repository MUST be configured with the Looker-generated deploy + * key for this project prior to setting the project's `git_remote_url`. + * + * To set up a Looker project with a git repository residing on the Looker server (a 'bare' git repo): + * + * 1. Call `update_session` to select the 'dev' workspace. + * 1. Call `update_project` setting `git_remote_url` to null and `git_service_name` to "bare". + * + * PATCH /projects/{project_id} -> Project + */ + public func update_project( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {WriteProject} body + */ + _ body: WriteProject, + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.patch("/projects/\(path_project_id)", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Get A Projects Manifest object + * + * Returns the project with the given project id + * + * GET /projects/{project_id}/manifest -> Manifest + */ + public func manifest( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/manifest", nil, nil, options) + return result + } + + /** + * ### Git Deploy Key + * + * Returns the ssh public key previously created for a project's git repository. + * + * GET /projects/{project_id}/git/deploy_key -> String + */ + public func git_deploy_key( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/git/deploy_key", nil, nil, options) + return result + } + + /** + * ### Create Git Deploy Key + * + * Create a public/private key pair for authenticating ssh git requests from Looker to a remote git repository + * for a particular Looker project. + * + * Returns the public key of the generated ssh key pair. + * + * Copy this public key to your remote git repository's ssh keys configuration so that the remote git service can + * validate and accept git requests from the Looker server. + * + * POST /projects/{project_id}/git/deploy_key -> String + */ + public func create_git_deploy_key( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/git/deploy_key", nil, nil, options) + return result + } + + /** + * ### Get Cached Project Validation Results + * + * Returns the cached results of a previous project validation calculation, if any. + * Returns http status 204 No Content if no validation results exist. + * + * Validating the content of all the files in a project can be computationally intensive + * for large projects. Use this API to simply fetch the results of the most recent + * project validation rather than revalidating the entire project from scratch. + * + * A value of `"stale": true` in the response indicates that the project has changed since + * the cached validation results were computed. The cached validation results may no longer + * reflect the current state of the project. + * + * GET /projects/{project_id}/validate -> ProjectValidationCache + */ + public func project_validation_results( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/validate", + ["fields": fields], nil, options) + return result + } + + /** + * ### Validate Project + * + * Performs lint validation of all lookml files in the project. + * Returns a list of errors found, if any. + * + * Validating the content of all the files in a project can be computationally intensive + * for large projects. For best performance, call `validate_project(project_id)` only + * when you really want to recompute project validation. To quickly display the results of + * the most recent project validation (without recomputing), use `project_validation_results(project_id)` + * + * POST /projects/{project_id}/validate -> ProjectValidation + */ + public func validate_project( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/validate", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get Project Workspace + * + * Returns information about the state of the project files in the currently selected workspace + * + * GET /projects/{project_id}/current_workspace -> ProjectWorkspace + */ + public func project_workspace( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/current_workspace", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get All Project Files + * + * Returns a list of the files in the project + * + * GET /projects/{project_id}/files -> [ProjectFile] + */ + public func all_project_files( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/files", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get Project File Info + * + * Returns information about a file in the project + * + * GET /projects/{project_id}/files/file -> ProjectFile + */ + public func project_file( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {String} file_id File Id + */ + _ file_id: String, + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/files/file", + ["file_id": file_id, "fields": fields], nil, options) + return result + } + + /** + * ### Get All Git Connection Tests + * + * dev mode required. + * - Call `update_session` to select the 'dev' workspace. + * + * Returns a list of tests which can be run against a project's (or the dependency project for the provided remote_url) git connection. Call [Run Git Connection Test](#!/Project/run_git_connection_test) to execute each test in sequence. + * + * Tests are ordered by increasing specificity. Tests should be run in the order returned because later tests require functionality tested by tests earlier in the test list. + * + * For example, a late-stage test for write access is meaningless if connecting to the git server (an early test) is failing. + * + * GET /projects/{project_id}/git_connection_tests -> [GitConnectionTest] + */ + public func all_git_connection_tests( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {String} remote_url (Optional: leave blank for root project) The remote url for remote dependency to test. + */ + remote_url: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/git_connection_tests", + ["remote_url": remote_url], nil, options) + return result + } + + /** + * ### Run a git connection test + * + * Run the named test on the git service used by this project (or the dependency project for the provided remote_url) and return the result. This + * is intended to help debug git connections when things do not work properly, to give + * more helpful information about why a git url is not working with Looker. + * + * Tests should be run in the order they are returned by [Get All Git Connection Tests](#!/Project/all_git_connection_tests). + * + * GET /projects/{project_id}/git_connection_tests/{test_id} -> GitConnectionTestResult + */ + public func run_git_connection_test( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {String} test_id Test Id + */ + _ test_id: String, + /** + * @param {String} remote_url (Optional: leave blank for root project) The remote url for remote dependency to test. + */ + remote_url: String? = nil, + /** + * @param {String} use_production (Optional: leave blank for dev credentials) Whether to use git production credentials. + */ + use_production: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let path_test_id = encodeParam(test_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/git_connection_tests/\(path_test_id)", + ["remote_url": remote_url, "use_production": use_production], nil, options) + return result + } + + /** + * ### Get All LookML Tests + * + * Returns a list of tests which can be run to validate a project's LookML code and/or the underlying data, + * optionally filtered by the file id. + * Call [Run LookML Test](#!/Project/run_lookml_test) to execute tests. + * + * GET /projects/{project_id}/lookml_tests -> [LookmlTest] + */ + public func all_lookml_tests( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {String} file_id File Id + */ + file_id: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/lookml_tests", + ["file_id": file_id], nil, options) + return result + } + + /** + * ### Run LookML Tests + * + * Runs all tests in the project, optionally filtered by file, test, and/or model. + * + * GET /projects/{project_id}/lookml_tests/run -> [LookmlTestResult] + */ + public func run_lookml_test( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {String} file_id File Name + */ + file_id: String? = nil, + /** + * @param {String} test Test Name + */ + test: String? = nil, + /** + * @param {String} model Model Name + */ + model: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/lookml_tests/run", + ["file_id": file_id, "test": test, "model": model], nil, options) + return result + } + + /** + * ### Creates a tag for the most recent commit, or a specific ref is a SHA is provided + * + * This is an internal-only, undocumented route. + * + * POST /projects/{project_id}/tag -> Project + */ + public func tag_ref( + /** + * @param {String} project_id Project Id + */ + _ project_id: String, + /** + * @param {WriteProject} body + */ + _ body: WriteProject, + /** + * @param {String} commit_sha (Optional): Commit Sha to Tag + */ + commit_sha: String? = nil, + /** + * @param {String} tag_name Tag Name + */ + tag_name: String? = nil, + /** + * @param {String} tag_message (Optional): Tag Message + */ + tag_message: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/tag", + ["commit_sha": commit_sha, "tag_name": tag_name, "tag_message": tag_message], try! self.encode(body), options) + return result + } + + /** + * ### Configure Repository Credential for a remote dependency + * + * Admin required. + * + * `root_project_id` is required. + * `credential_id` is required. + * + * PUT /projects/{root_project_id}/credential/{credential_id} -> RepositoryCredential + */ + public func update_repository_credential( + /** + * @param {String} root_project_id Root Project Id + */ + _ root_project_id: String, + /** + * @param {String} credential_id Credential Id + */ + _ credential_id: String, + /** + * @param {WriteRepositoryCredential} body + */ + _ body: WriteRepositoryCredential, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_root_project_id = encodeParam(root_project_id) + let path_credential_id = encodeParam(credential_id) + let result: SDKResponse = self.put("/projects/\(path_root_project_id)/credential/\(path_credential_id)", nil, try! self.encode(body), options) + return result + } + + /** + * ### Repository Credential for a remote dependency + * + * Admin required. + * + * `root_project_id` is required. + * `credential_id` is required. + * + * DELETE /projects/{root_project_id}/credential/{credential_id} -> String + */ + public func delete_repository_credential( + /** + * @param {String} root_project_id Root Project Id + */ + _ root_project_id: String, + /** + * @param {String} credential_id Credential Id + */ + _ credential_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_root_project_id = encodeParam(root_project_id) + let path_credential_id = encodeParam(credential_id) + let result: SDKResponse = self.delete("/projects/\(path_root_project_id)/credential/\(path_credential_id)", nil, nil, options) + return result + } + + /** + * ### Get all Repository Credentials for a project + * + * `root_project_id` is required. + * + * GET /projects/{root_project_id}/credentials -> [RepositoryCredential] + */ + public func get_all_repository_credentials( + /** + * @param {String} root_project_id Root Project Id + */ + _ root_project_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_root_project_id = encodeParam(root_project_id) + let result: SDKResponse = self.get("/projects/\(path_root_project_id)/credentials", nil, nil, options) + return result + } + + + + // MARK Query: Run and Manage Queries + + /** + * ### Create an async query task + * + * Creates a query task (job) to run a previously created query asynchronously. Returns a Query Task ID. + * + * Use [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task. + * After the query task status reaches "Complete", use [query_task_results(query_task_id)](#!/Query/query_task_results) to fetch the results of the query. + * + * POST /query_tasks -> QueryTask + */ + public func create_query_task( + /** + * @param {WriteCreateQueryTask} body + */ + _ body: WriteCreateQueryTask, + /** + * @param {Int64} limit Row limit (may override the limit in the saved query). + */ + limit: Int64? = nil, + /** + * @param {Bool} apply_formatting Apply model-specified formatting to each result. + */ + apply_formatting: Bool? = nil, + /** + * @param {Bool} apply_vis Apply visualization options to results. + */ + apply_vis: Bool? = nil, + /** + * @param {Bool} cache Get results from cache if available. + */ + cache: Bool? = nil, + /** + * @param {Bool} generate_drill_links Generate drill links (only applicable to 'json_detail' format. + */ + generate_drill_links: Bool? = nil, + /** + * @param {Bool} force_production Force use of production models even if the user is in development mode. Note that this flag being false does not guarantee development models will be used. + */ + force_production: Bool? = nil, + /** + * @param {Bool} cache_only Retrieve any results from cache even if the results have expired. + */ + cache_only: Bool? = nil, + /** + * @param {String} path_prefix Prefix to use for drill links (url encoded). + */ + path_prefix: String? = nil, + /** + * @param {Bool} rebuild_pdts Rebuild PDTS used in query. + */ + rebuild_pdts: Bool? = nil, + /** + * @param {Bool} server_table_calcs Perform table calculations on query results + */ + server_table_calcs: Bool? = nil, + /** + * @param {Int64} image_width DEPRECATED. Render width for image formats. Note that this parameter is always ignored by this method. + */ + image_width: Int64? = nil, + /** + * @param {Int64} image_height DEPRECATED. Render height for image formats. Note that this parameter is always ignored by this method. + */ + image_height: Int64? = nil, + /** + * @param {String} fields Requested fields + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/query_tasks", + ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?, "image_width": image_width, "image_height": image_height, "fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Fetch results of multiple async queries + * + * Returns the results of multiple async queries in one request. + * + * For Query Tasks that are not completed, the response will include the execution status of the Query Task but will not include query results. + * Query Tasks whose results have expired will have a status of 'expired'. + * If the user making the API request does not have sufficient privileges to view a Query Task result, the result will have a status of 'missing' + * + * GET /query_tasks/multi_results -> StringDictionary + */ + public func query_task_multi_results( + /** + * @param {DelimArray} query_task_ids List of Query Task IDs + */ + _ query_task_ids: DelimArray, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/query_tasks/multi_results", + ["query_task_ids": query_task_ids as Any?], nil, options) + return result + } + + /** + * ### Get Query Task details + * + * Use this function to check the status of an async query task. After the status + * reaches "Complete", you can call [query_task_results(query_task_id)](#!/Query/query_task_results) to + * retrieve the results of the query. + * + * Use [create_query_task()](#!/Query/create_query_task) to create an async query task. + * + * GET /query_tasks/{query_task_id} -> QueryTask + */ + public func query_task( + /** + * @param {String} query_task_id ID of the Query Task + */ + _ query_task_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_query_task_id = encodeParam(query_task_id) + let result: SDKResponse = self.get("/query_tasks/\(path_query_task_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get Async Query Results + * + * Returns the results of an async query task if the query has completed. + * + * If the query task is still running or waiting to run, this function returns 204 No Content. + * + * If the query task ID is invalid or the cached results of the query task have expired, this function returns 404 Not Found. + * + * Use [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task + * Call query_task_results only after the query task status reaches "Complete". + * + * You can also use [query_task_multi_results()](#!/Query/query_task_multi_results) retrieve the + * results of multiple async query tasks at the same time. + * + * #### SQL Error Handling: + * If the query fails due to a SQL db error, how this is communicated depends on the result_format you requested in `create_query_task()`. + * + * For `json_detail` result_format: `query_task_results()` will respond with HTTP status '200 OK' and db SQL error info + * will be in the `errors` property of the response object. The 'data' property will be empty. + * + * For all other result formats: `query_task_results()` will respond with HTTP status `400 Bad Request` and some db SQL error info + * will be in the message of the 400 error response, but not as detailed as expressed in `json_detail.errors`. + * These data formats can only carry row data, and error info is not row data. + * + * GET /query_tasks/{query_task_id}/results -> String + */ + public func query_task_results( + /** + * @param {String} query_task_id ID of the Query Task + */ + _ query_task_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_query_task_id = encodeParam(query_task_id) + let result: SDKResponse = self.get("/query_tasks/\(path_query_task_id)/results", nil, nil, options) + return result + } + + /** + * ### Get a previously created query by id. + * + * A Looker query object includes the various parameters that define a database query that has been run or + * could be run in the future. These parameters include: model, view, fields, filters, pivots, etc. + * Query *results* are not part of the query object. + * + * Query objects are unique and immutable. Query objects are created automatically in Looker as users explore data. + * Looker does not delete them; they become part of the query history. When asked to create a query for + * any given set of parameters, Looker will first try to find an existing query object with matching + * parameters and will only create a new object when an appropriate object can not be found. + * + * This 'get' method is used to get the details about a query for a given id. See the other methods here + * to 'create' and 'run' queries. + * + * Note that some fields like 'filter_config' and 'vis_config' etc are specific to how the Looker UI + * builds queries and visualizations and are not generally useful for API use. They are not required when + * creating new queries and can usually just be ignored. + * + * GET /queries/{query_id} -> Query + */ + public func query( + /** + * @param {String} query_id Id of query + */ + _ query_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_query_id = encodeParam(query_id) + let result: SDKResponse = self.get("/queries/\(path_query_id)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Get the query for a given query slug. + * + * This returns the query for the 'slug' in a query share URL. + * + * The 'slug' is a randomly chosen short string that is used as an alternative to the query's id value + * for use in URLs etc. This method exists as a convenience to help you use the API to 'find' queries that + * have been created using the Looker UI. + * + * You can use the Looker explore page to build a query and then choose the 'Share' option to + * show the share url for the query. Share urls generally look something like 'https://looker.yourcompany/x/vwGSbfc'. + * The trailing 'vwGSbfc' is the share slug. You can pass that string to this api method to get details about the query. + * Those details include the 'id' that you can use to run the query. Or, you can copy the query body + * (perhaps with your own modification) and use that as the basis to make/run new queries. + * + * This will also work with slugs from Looker explore urls like + * 'https://looker.yourcompany/explore/ecommerce/orders?qid=aogBgL6o3cKK1jN3RoZl5s'. In this case + * 'aogBgL6o3cKK1jN3RoZl5s' is the slug. + * + * GET /queries/slug/{slug} -> Query + */ + public func query_for_slug( + /** + * @param {String} slug Slug of query + */ + _ slug: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_slug = encodeParam(slug) + let result: SDKResponse = self.get("/queries/slug/\(path_slug)", + ["fields": fields], nil, options) + return result + } + + /** + * ### Create a query. + * + * This allows you to create a new query that you can later run. Looker queries are immutable once created + * and are not deleted. If you create a query that is exactly like an existing query then the existing query + * will be returned and no new query will be created. Whether a new query is created or not, you can use + * the 'id' in the returned query with the 'run' method. + * + * The query parameters are passed as json in the body of the request. + * + * POST /queries -> Query + */ + public func create_query( + /** + * @param {WriteQuery} body + */ + _ body: WriteQuery, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/queries", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * ### Run a saved query. + * + * This runs a previously saved query. You can use this on a query that was generated in the Looker UI + * or one that you have explicitly created using the API. You can also use a query 'id' from a saved 'Look'. + * + * The 'result_format' parameter specifies the desired structure and format of the response. + * + * Supported formats: + * + * | result_format | Description + * | :-----------: | :--- | + * | json | Plain json + * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query + * | csv | Comma separated values with a header + * | txt | Tab separated values with a header + * | html | Simple html + * | md | Simple markdown + * | xlsx | MS Excel spreadsheet + * | sql | Returns the generated SQL rather than running the query + * | png | A PNG image of the visualization of the query + * | jpg | A JPG image of the visualization of the query + * + * GET /queries/{query_id}/run/{result_format} -> String + * + * **Note**: Binary content may be returned by this method. + */ + public func run_query( + /** + * @param {String} query_id Id of query + */ + _ query_id: String, + /** + * @param {String} result_format Format of result + */ + _ result_format: String, + /** + * @param {Int64} limit Row limit (may override the limit in the saved query). + */ + limit: Int64? = nil, + /** + * @param {Bool} apply_formatting Apply model-specified formatting to each result. + */ + apply_formatting: Bool? = nil, + /** + * @param {Bool} apply_vis Apply visualization options to results. + */ + apply_vis: Bool? = nil, + /** + * @param {Bool} cache Get results from cache if available. + */ + cache: Bool? = nil, + /** + * @param {Int64} image_width Render width for image formats. + */ + image_width: Int64? = nil, + /** + * @param {Int64} image_height Render height for image formats. + */ + image_height: Int64? = nil, + /** + * @param {Bool} generate_drill_links Generate drill links (only applicable to 'json_detail' format. + */ + generate_drill_links: Bool? = nil, + /** + * @param {Bool} force_production Force use of production models even if the user is in development mode. Note that this flag being false does not guarantee development models will be used. + */ + force_production: Bool? = nil, + /** + * @param {Bool} cache_only Retrieve any results from cache even if the results have expired. + */ + cache_only: Bool? = nil, + /** + * @param {String} path_prefix Prefix to use for drill links (url encoded). + */ + path_prefix: String? = nil, + /** + * @param {Bool} rebuild_pdts Rebuild PDTS used in query. + */ + rebuild_pdts: Bool? = nil, + /** + * @param {Bool} server_table_calcs Perform table calculations on query results + */ + server_table_calcs: Bool? = nil, + /** + * @param {String} source Specifies the source of this call. + */ + source: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_query_id = encodeParam(query_id) + let path_result_format = encodeParam(result_format) + let result: SDKResponse = self.get("/queries/\(path_query_id)/run/\(path_result_format)", + ["limit": limit, "apply_formatting": apply_formatting as Any?, "apply_vis": apply_vis as Any?, "cache": cache as Any?, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links as Any?, "force_production": force_production as Any?, "cache_only": cache_only as Any?, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts as Any?, "server_table_calcs": server_table_calcs as Any?, "source": source], nil, options) + return result + } + + /** + * ### Run the query that is specified inline in the posted body. * * This allows running a query as defined in json in the posted body. This combines * the two actions of posting & running a query into one step. @@ -6444,60 +8741,6 @@ open class LookerSDKStream: APIMethods { // MARK RenderTask: Manage Render Tasks - /** - * ### Create a new task to render a lookml dashboard to a document or image. - * - * # DEPRECATED: Use [create_dashboard_render_task()](#!/RenderTask/create_dashboard_render_task) in API 4.0+ - * - * Returns a render task object. - * To check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task). - * Once the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results). - * - * POST /render_tasks/lookml_dashboards/{dashboard_id}/{result_format} -> RenderTask - */ - @available(*, deprecated) - public func create_lookml_dashboard_render_task( - /** - * @param {String} dashboard_id Id of lookml dashboard to render - */ - _ dashboard_id: String, - /** - * @param {String} result_format Output type: pdf, png, or jpg - */ - _ result_format: String, - /** - * @param {CreateDashboardRenderTask} body - */ - _ body: CreateDashboardRenderTask, - /** - * @param {Int64} width Output width in pixels - */ - _ width: Int64, - /** - * @param {Int64} height Output height in pixels - */ - _ height: Int64, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {String} pdf_paper_size Paper size for pdf. Value can be one of: ["letter","legal","tabloid","a0","a1","a2","a3","a4","a5"] - */ - pdf_paper_size: String? = nil, - /** - * @param {Bool} pdf_landscape Whether to render pdf in landscape - */ - pdf_landscape: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let path_result_format = encodeParam(result_format) - let result: SDKResponse = self.post("/render_tasks/lookml_dashboards/\(path_dashboard_id)/\(path_result_format)", - ["width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape as Any?], try! self.encode(body), options) - return result - } - /** * ### Create a new task to render a look to an image. * @@ -6509,9 +8752,9 @@ open class LookerSDKStream: APIMethods { */ public func create_look_render_task( /** - * @param {Int64} look_id Id of look to render + * @param {String} look_id Id of look to render */ - _ look_id: Int64, + _ look_id: String, /** * @param {String} result_format Output type: png, or jpg */ @@ -6548,9 +8791,9 @@ open class LookerSDKStream: APIMethods { */ public func create_query_render_task( /** - * @param {Int64} query_id Id of the query to render + * @param {String} query_id Id of the query to render */ - _ query_id: Int64, + _ query_id: String, /** * @param {String} result_format Output type: png or jpg */ @@ -6587,9 +8830,9 @@ open class LookerSDKStream: APIMethods { */ public func create_dashboard_render_task( /** - * @param {Int64} dashboard_id Id of dashboard to render + * @param {String} dashboard_id Id of dashboard to render. The ID can be a LookML dashboard also. */ - _ dashboard_id: Int64, + _ dashboard_id: String, /** * @param {String} result_format Output type: pdf, png, or jpg */ @@ -6618,12 +8861,16 @@ open class LookerSDKStream: APIMethods { * @param {Bool} pdf_landscape Whether to render pdf in landscape paper orientation */ pdf_landscape: Bool? = nil, + /** + * @param {Bool} long_tables Whether or not to expand table vis to full length + */ + long_tables: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let path_dashboard_id = encodeParam(dashboard_id) let path_result_format = encodeParam(result_format) let result: SDKResponse = self.post("/render_tasks/dashboards/\(path_dashboard_id)/\(path_result_format)", - ["width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape as Any?], try! self.encode(body), options) + ["width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape as Any?, "long_tables": long_tables as Any?], try! self.encode(body), options) return result } @@ -6689,6 +8936,45 @@ open class LookerSDKStream: APIMethods { return result } + /** + * ### Create a new task to render a dashboard element to an image. + * + * Returns a render task object. + * To check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task). + * Once the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results). + * + * POST /render_tasks/dashboard_elements/{dashboard_element_id}/{result_format} -> RenderTask + */ + public func create_dashboard_element_render_task( + /** + * @param {String} dashboard_element_id Id of dashboard element to render: UDD dashboard element would be numeric and LookML dashboard element would be model_name::dashboard_title::lookml_link_id + */ + _ dashboard_element_id: String, + /** + * @param {String} result_format Output type: png or jpg + */ + _ result_format: String, + /** + * @param {Int64} width Output width in pixels + */ + _ width: Int64, + /** + * @param {Int64} height Output height in pixels + */ + _ height: Int64, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_dashboard_element_id = encodeParam(dashboard_element_id) + let path_result_format = encodeParam(result_format) + let result: SDKResponse = self.post("/render_tasks/dashboard_elements/\(path_dashboard_element_id)/\(path_result_format)", + ["width": width, "height": height, "fields": fields], nil, options) + return result + } + // MARK Role: Manage Roles @@ -6737,9 +9023,9 @@ open class LookerSDKStream: APIMethods { */ sorts: String? = nil, /** - * @param {Int64} id Match model set id. + * @param {String} id Match model set id. */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} name Match model set name. */ @@ -6770,9 +9056,9 @@ open class LookerSDKStream: APIMethods { */ public func model_set( /** - * @param {Int64} model_set_id Id of model set + * @param {String} model_set_id Id of model set */ - _ model_set_id: Int64, + _ model_set_id: String, /** * @param {String} fields Requested fields. */ @@ -6792,9 +9078,9 @@ open class LookerSDKStream: APIMethods { */ public func update_model_set( /** - * @param {Int64} model_set_id id of model set + * @param {String} model_set_id id of model set */ - _ model_set_id: Int64, + _ model_set_id: String, /** * @param {WriteModelSet} body */ @@ -6813,9 +9099,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_model_set( /** - * @param {Int64} model_set_id id of model set + * @param {String} model_set_id id of model set */ - _ model_set_id: Int64, + _ model_set_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_model_set_id = encodeParam(model_set_id) @@ -6912,9 +9198,9 @@ open class LookerSDKStream: APIMethods { */ sorts: String? = nil, /** - * @param {Int64} id Match permission set id. + * @param {String} id Match permission set id. */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} name Match permission set name. */ @@ -6945,9 +9231,9 @@ open class LookerSDKStream: APIMethods { */ public func permission_set( /** - * @param {Int64} permission_set_id Id of permission set + * @param {String} permission_set_id Id of permission set */ - _ permission_set_id: Int64, + _ permission_set_id: String, /** * @param {String} fields Requested fields. */ @@ -6967,9 +9253,9 @@ open class LookerSDKStream: APIMethods { */ public func update_permission_set( /** - * @param {Int64} permission_set_id Id of permission set + * @param {String} permission_set_id Id of permission set */ - _ permission_set_id: Int64, + _ permission_set_id: String, /** * @param {WritePermissionSet} body */ @@ -6988,9 +9274,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_permission_set( /** - * @param {Int64} permission_set_id Id of permission set + * @param {String} permission_set_id Id of permission set */ - _ permission_set_id: Int64, + _ permission_set_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_permission_set_id = encodeParam(permission_set_id) @@ -7042,9 +9328,9 @@ open class LookerSDKStream: APIMethods { */ fields: String? = nil, /** - * @param {DelimArray} ids Optional list of ids to get specific roles. + * @param {DelimArray} ids Optional list of ids to get specific roles. */ - ids: DelimArray? = nil, + ids: DelimArray? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let result: SDKResponse = self.get("/roles", @@ -7114,9 +9400,9 @@ open class LookerSDKStream: APIMethods { */ sorts: String? = nil, /** - * @param {Int64} id Match role id. + * @param {String} id Match role id. */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} name Match role name. */ @@ -7137,583 +9423,288 @@ open class LookerSDKStream: APIMethods { } /** - * ### Get information about the role with a specific id. + * ### Search roles include user count * - * GET /roles/{role_id} -> Role - */ - public func role( - /** - * @param {Int64} role_id id of role - */ - _ role_id: Int64, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.get("/roles/\(path_role_id)", nil, nil, options) - return result - } - - /** - * ### Update information about the role with a specific id. + * Returns all role records that match the given search criteria, and attaches + * associated user counts. * - * PATCH /roles/{role_id} -> Role - */ - public func update_role( - /** - * @param {Int64} role_id id of role - */ - _ role_id: Int64, - /** - * @param {WriteRole} body - */ - _ body: WriteRole, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.patch("/roles/\(path_role_id)", nil, try! self.encode(body), options) - return result - } - - /** - * ### Delete the role with a specific id. + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. * - * DELETE /roles/{role_id} -> String - */ - public func delete_role( - /** - * @param {Int64} role_id id of role - */ - _ role_id: Int64, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.delete("/roles/\(path_role_id)", nil, nil, options) - return result - } - - /** - * ### Get information about all the groups with the role that has a specific id. + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. * - * GET /roles/{role_id}/groups -> [LkGroup] - */ - public func role_groups( - /** - * @param {Int64} role_id id of role - */ - _ role_id: Int64, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.get("/roles/\(path_role_id)/groups", - ["fields": fields], nil, options) - return result - } - - /** - * ### Set all groups for a role, removing all existing group associations from that role. + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" * - * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. * - * PUT /roles/{role_id}/groups -> [LkGroup] + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * GET /roles/search/with_user_count -> [RoleSearch] */ - public func set_role_groups( - /** - * @param {Int64} role_id id of role - */ - _ role_id: Int64, + public func search_roles_with_user_count( /** - * @param {[String]} body + * @param {String} fields Requested fields. */ - _ body: [String], - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.put("/roles/\(path_role_id)/groups", nil, try! self.encode(body), options) - return result - } - - /** - * ### Get information about all the users with the role that has a specific id. - * - * GET /roles/{role_id}/users -> [User] - */ - public func role_users( + fields: String? = nil, /** - * @param {Int64} role_id id of role + * @param {Int64} limit Number of results to return (used with `offset`). */ - _ role_id: Int64, + limit: Int64? = nil, /** - * @param {String} fields Requested fields. + * @param {Int64} offset Number of results to skip before returning any (used with `limit`). */ - fields: String? = nil, + offset: Int64? = nil, /** - * @param {Bool} direct_association_only Get only users associated directly with the role: exclude those only associated through groups. + * @param {String} sorts Fields to sort by. */ - direct_association_only: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.get("/roles/\(path_role_id)/users", - ["fields": fields, "direct_association_only": direct_association_only as Any?], nil, options) - return result - } - - /** - * ### Set all the users of the role with a specific id. - * - * PUT /roles/{role_id}/users -> [User] - */ - public func set_role_users( + sorts: String? = nil, /** - * @param {Int64} role_id id of role + * @param {String} id Match role id. */ - _ role_id: Int64, + id: String? = nil, /** - * @param {[String]} body + * @param {String} name Match role name. */ - _ body: [String], - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_role_id = encodeParam(role_id) - let result: SDKResponse = self.put("/roles/\(path_role_id)/users", nil, try! self.encode(body), options) - return result - } - - - - // MARK ScheduledPlan: Manage Scheduled Plans - - /** - * ### Get Scheduled Plans for a Space - * - * Returns scheduled plans owned by the caller for a given space id. - * - * GET /scheduled_plans/space/{space_id} -> [ScheduledPlan] - */ - public func scheduled_plans_for_space( + name: String? = nil, /** - * @param {Int64} space_id Space Id + * @param {Bool} built_in Match roles by built_in status. */ - _ space_id: Int64, + built_in: Bool? = nil, /** - * @param {String} fields Requested fields. + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression. */ - fields: String? = nil, + filter_or: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.get("/scheduled_plans/space/\(path_space_id)", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/roles/search/with_user_count", + ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "name": name, "built_in": built_in as Any?, "filter_or": filter_or as Any?], nil, options) return result } /** - * ### Get Information About a Scheduled Plan - * - * Admins can fetch information about other users' Scheduled Plans. + * ### Get information about the role with a specific id. * - * GET /scheduled_plans/{scheduled_plan_id} -> ScheduledPlan + * GET /roles/{role_id} -> Role */ - public func scheduled_plan( - /** - * @param {Int64} scheduled_plan_id Scheduled Plan Id - */ - _ scheduled_plan_id: Int64, + public func role( /** - * @param {String} fields Requested fields. + * @param {String} role_id id of role */ - fields: String? = nil, + _ role_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_scheduled_plan_id = encodeParam(scheduled_plan_id) - let result: SDKResponse = self.get("/scheduled_plans/\(path_scheduled_plan_id)", - ["fields": fields], nil, options) + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.get("/roles/\(path_role_id)", nil, nil, options) return result } /** - * ### Update a Scheduled Plan - * - * Admins can update other users' Scheduled Plans. - * - * Note: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations - * currently defined for the scheduled plan. - * - * For Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan - * specifying only B in the destinations, then destinations A and C will be deleted by the update. - * - * Updating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination. - * - * If you omit the scheduled_plan_destinations property from the object passed to update, then the destinations - * defined on the original scheduled plan will remain unchanged. - * - * #### Email Permissions: - * - * For details about permissions required to schedule delivery to email and the safeguards - * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). - * - * - * #### Scheduled Plan Destination Formats - * - * Scheduled plan destinations must specify the data format to produce and send to the destination. - * - * Formats: - * - * | format | Description - * | :-----------: | :--- | - * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. - * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query - * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. - * | csv | Comma separated values with a header - * | txt | Tab separated values with a header - * | html | Simple html - * | xlsx | MS Excel spreadsheet - * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document - * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document - * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image - * || - * - * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. + * ### Update information about the role with a specific id. * - * PATCH /scheduled_plans/{scheduled_plan_id} -> ScheduledPlan + * PATCH /roles/{role_id} -> Role */ - public func update_scheduled_plan( + public func update_role( /** - * @param {Int64} scheduled_plan_id Scheduled Plan Id + * @param {String} role_id id of role */ - _ scheduled_plan_id: Int64, + _ role_id: String, /** - * @param {WriteScheduledPlan} body + * @param {WriteRole} body */ - _ body: WriteScheduledPlan, + _ body: WriteRole, options: ITransportSettings? = nil ) -> SDKResponse { - let path_scheduled_plan_id = encodeParam(scheduled_plan_id) - let result: SDKResponse = self.patch("/scheduled_plans/\(path_scheduled_plan_id)", nil, try! self.encode(body), options) + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.patch("/roles/\(path_role_id)", nil, try! self.encode(body), options) return result } /** - * ### Delete a Scheduled Plan - * - * Normal users can only delete their own scheduled plans. - * Admins can delete other users' scheduled plans. - * This delete cannot be undone. + * ### Delete the role with a specific id. * - * DELETE /scheduled_plans/{scheduled_plan_id} -> String + * DELETE /roles/{role_id} -> String */ - public func delete_scheduled_plan( + public func delete_role( /** - * @param {Int64} scheduled_plan_id Scheduled Plan Id + * @param {String} role_id id of role */ - _ scheduled_plan_id: Int64, + _ role_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_scheduled_plan_id = encodeParam(scheduled_plan_id) - let result: SDKResponse = self.delete("/scheduled_plans/\(path_scheduled_plan_id)", nil, nil, options) + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.delete("/roles/\(path_role_id)", nil, nil, options) return result } /** - * ### List All Scheduled Plans - * - * Returns all scheduled plans which belong to the caller or given user. - * - * If no user_id is provided, this function returns the scheduled plans owned by the caller. - * - * - * To list all schedules for all users, pass `all_users=true`. - * - * - * The caller must have `see_schedules` permission to see other users' scheduled plans. + * ### Get information about all the groups with the role that has a specific id. * - * GET /scheduled_plans -> [ScheduledPlan] + * GET /roles/{role_id}/groups -> [LkGroup] */ - public func all_scheduled_plans( + public func role_groups( /** - * @param {Int64} user_id Return scheduled plans belonging to this user_id. If not provided, returns scheduled plans owned by the caller. + * @param {String} role_id id of role */ - user_id: Int64? = nil, + _ role_id: String, /** - * @param {String} fields Comma delimited list of field names. If provided, only the fields specified will be included in the response + * @param {String} fields Requested fields. */ fields: String? = nil, - /** - * @param {Bool} all_users Return scheduled plans belonging to all users (caller needs see_schedules permission) - */ - all_users: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/scheduled_plans", - ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.get("/roles/\(path_role_id)/groups", + ["fields": fields], nil, options) return result } /** - * ### Create a Scheduled Plan - * - * Create a scheduled plan to render a Look or Dashboard on a recurring schedule. - * - * To create a scheduled plan, you MUST provide values for the following fields: - * `name` - * and - * `look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id` - * and - * `cron_tab` or `datagroup` - * and - * at least one scheduled_plan_destination - * - * A scheduled plan MUST have at least one scheduled_plan_destination defined. - * - * When `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required. - * - * If `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible. - * - * The queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan. - * - * When `run_as_recipient` is `false` or not specified, the queries that provide the data for the - * look or dashboard are run in the context of user account that owns the scheduled plan. - * - * When `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the - * queries are run in the context of each recipient, so different recipients may see different - * data from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://cloud.google.com/looker/docs/r/admin/run-as-recipient). - * - * Admins can create and modify scheduled plans on behalf of other users by specifying a user id. - * Non-admin users may not create or modify scheduled plans by or for other users. - * - * #### Email Permissions: - * - * For details about permissions required to schedule delivery to email and the safeguards - * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). - * - * - * #### Scheduled Plan Destination Formats - * - * Scheduled plan destinations must specify the data format to produce and send to the destination. - * - * Formats: - * - * | format | Description - * | :-----------: | :--- | - * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. - * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query - * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. - * | csv | Comma separated values with a header - * | txt | Tab separated values with a header - * | html | Simple html - * | xlsx | MS Excel spreadsheet - * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document - * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document - * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image - * || + * ### Set all groups for a role, removing all existing group associations from that role. * - * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /scheduled_plans -> ScheduledPlan + * PUT /roles/{role_id}/groups -> [LkGroup] */ - public func create_scheduled_plan( + public func set_role_groups( /** - * @param {WriteScheduledPlan} body + * @param {String} role_id id of role */ - _ body: WriteScheduledPlan, + _ role_id: String, + /** + * @param {[String]} body + */ + _ body: [String], options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/scheduled_plans", nil, try! self.encode(body), options) + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.put("/roles/\(path_role_id)/groups", nil, try! self.encode(body), options) return result } /** - * ### Run a Scheduled Plan Immediately - * - * Create a scheduled plan that runs only once, and immediately. - * - * This can be useful for testing a Scheduled Plan before committing to a production schedule. - * - * Admins can create scheduled plans on behalf of other users by specifying a user id. - * - * This API is rate limited to prevent it from being used for relay spam or DoS attacks - * - * #### Email Permissions: - * - * For details about permissions required to schedule delivery to email and the safeguards - * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). - * - * - * #### Scheduled Plan Destination Formats - * - * Scheduled plan destinations must specify the data format to produce and send to the destination. - * - * Formats: - * - * | format | Description - * | :-----------: | :--- | - * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. - * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query - * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. - * | csv | Comma separated values with a header - * | txt | Tab separated values with a header - * | html | Simple html - * | xlsx | MS Excel spreadsheet - * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document - * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document - * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image - * || - * - * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. + * ### Get information about all the users with the role that has a specific id. * - * POST /scheduled_plans/run_once -> ScheduledPlan + * GET /roles/{role_id}/users -> [User] */ - public func scheduled_plan_run_once( + public func role_users( /** - * @param {WriteScheduledPlan} body + * @param {String} role_id id of role */ - _ body: WriteScheduledPlan, + _ role_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Bool} direct_association_only Get only users associated directly with the role: exclude those only associated through groups. + */ + direct_association_only: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/scheduled_plans/run_once", nil, try! self.encode(body), options) + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.get("/roles/\(path_role_id)/users", + ["fields": fields, "direct_association_only": direct_association_only as Any?], nil, options) return result } /** - * ### Get Scheduled Plans for a Look - * - * Returns all scheduled plans for a look which belong to the caller or given user. - * - * If no user_id is provided, this function returns the scheduled plans owned by the caller. - * - * - * To list all schedules for all users, pass `all_users=true`. - * - * - * The caller must have `see_schedules` permission to see other users' scheduled plans. + * ### Set all the users of the role with a specific id. * - * GET /scheduled_plans/look/{look_id} -> [ScheduledPlan] + * PUT /roles/{role_id}/users -> [User] */ - public func scheduled_plans_for_look( - /** - * @param {Int64} look_id Look Id - */ - _ look_id: Int64, - /** - * @param {Int64} user_id User Id (default is requesting user if not specified) - */ - user_id: Int64? = nil, + public func set_role_users( /** - * @param {String} fields Requested fields. + * @param {String} role_id id of role */ - fields: String? = nil, + _ role_id: String, /** - * @param {Bool} all_users Return scheduled plans belonging to all users for the look + * @param {[String]} body */ - all_users: Bool? = nil, + _ body: [String], options: ITransportSettings? = nil ) -> SDKResponse { - let path_look_id = encodeParam(look_id) - let result: SDKResponse = self.get("/scheduled_plans/look/\(path_look_id)", - ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) + let path_role_id = encodeParam(role_id) + let result: SDKResponse = self.put("/roles/\(path_role_id)/users", nil, try! self.encode(body), options) return result } + + + // MARK ScheduledPlan: Manage Scheduled Plans + /** - * ### Get Scheduled Plans for a Dashboard - * - * Returns all scheduled plans for a dashboard which belong to the caller or given user. - * - * If no user_id is provided, this function returns the scheduled plans owned by the caller. - * - * - * To list all schedules for all users, pass `all_users=true`. - * + * ### Get Scheduled Plans for a Space * - * The caller must have `see_schedules` permission to see other users' scheduled plans. + * Returns scheduled plans owned by the caller for a given space id. * - * GET /scheduled_plans/dashboard/{dashboard_id} -> [ScheduledPlan] + * GET /scheduled_plans/space/{space_id} -> [ScheduledPlan] */ - public func scheduled_plans_for_dashboard( - /** - * @param {Int64} dashboard_id Dashboard Id - */ - _ dashboard_id: Int64, - /** - * @param {Int64} user_id User Id (default is requesting user if not specified) - */ - user_id: Int64? = nil, + public func scheduled_plans_for_space( /** - * @param {Bool} all_users Return scheduled plans belonging to all users for the dashboard + * @param {String} space_id Space Id */ - all_users: Bool? = nil, + _ space_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_dashboard_id = encodeParam(dashboard_id) - let result: SDKResponse = self.get("/scheduled_plans/dashboard/\(path_dashboard_id)", - ["user_id": user_id, "all_users": all_users as Any?, "fields": fields], nil, options) + let path_space_id = encodeParam(space_id) + let result: SDKResponse = self.get("/scheduled_plans/space/\(path_space_id)", + ["fields": fields], nil, options) return result } /** - * ### Get Scheduled Plans for a LookML Dashboard - * - * Returns all scheduled plans for a LookML Dashboard which belong to the caller or given user. - * - * If no user_id is provided, this function returns the scheduled plans owned by the caller. - * - * - * To list all schedules for all users, pass `all_users=true`. - * + * ### Get Information About a Scheduled Plan * - * The caller must have `see_schedules` permission to see other users' scheduled plans. + * Admins can fetch information about other users' Scheduled Plans. * - * GET /scheduled_plans/lookml_dashboard/{lookml_dashboard_id} -> [ScheduledPlan] + * GET /scheduled_plans/{scheduled_plan_id} -> ScheduledPlan */ - public func scheduled_plans_for_lookml_dashboard( - /** - * @param {String} lookml_dashboard_id LookML Dashboard Id - */ - _ lookml_dashboard_id: String, + public func scheduled_plan( /** - * @param {Int64} user_id User Id (default is requesting user if not specified) + * @param {String} scheduled_plan_id Scheduled Plan Id */ - user_id: Int64? = nil, + _ scheduled_plan_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, - /** - * @param {Bool} all_users Return scheduled plans belonging to all users for the dashboard - */ - all_users: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) - let result: SDKResponse = self.get("/scheduled_plans/lookml_dashboard/\(path_lookml_dashboard_id)", - ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) + let path_scheduled_plan_id = encodeParam(scheduled_plan_id) + let result: SDKResponse = self.get("/scheduled_plans/\(path_scheduled_plan_id)", + ["fields": fields], nil, options) return result } /** - * ### Run a Scheduled Plan By Id Immediately - * This function creates a run-once schedule plan based on an existing scheduled plan, - * applies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately. - * This can be useful for testing modifications to an existing scheduled plan before committing to a production schedule. + * ### Update a Scheduled Plan * - * This function internally performs the following operations: + * Admins can update other users' Scheduled Plans. * - * 1. Copies the properties of the existing scheduled plan into a new scheduled plan - * 2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values) - * 3. Creates the new scheduled plan - * 4. Runs the new scheduled plan + * Note: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations + * currently defined for the scheduled plan. * - * The original scheduled plan is not modified by this operation. - * Admins can create, modify, and run scheduled plans on behalf of other users by specifying a user id. - * Non-admins can only create, modify, and run their own scheduled plans. + * For Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan + * specifying only B in the destinations, then destinations A and C will be deleted by the update. + * + * Updating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination. + * + * If you omit the scheduled_plan_destinations property from the object passed to update, then the destinations + * defined on the original scheduled plan will remain unchanged. * * #### Email Permissions: * @@ -7743,443 +9734,442 @@ open class LookerSDKStream: APIMethods { * * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. * - * - * - * This API is rate limited to prevent it from being used for relay spam or DoS attacks - * - * POST /scheduled_plans/{scheduled_plan_id}/run_once -> ScheduledPlan - */ - public func scheduled_plan_run_once_by_id( - /** - * @param {Int64} scheduled_plan_id Id of schedule plan to copy and run - */ - _ scheduled_plan_id: Int64, - /** - * @param {WriteScheduledPlan} body - */ - body: WriteScheduledPlan?, - options: ITransportSettings? = nil - ) -> SDKResponse { - let path_scheduled_plan_id = encodeParam(scheduled_plan_id) - let result: SDKResponse = self.post("/scheduled_plans/\(path_scheduled_plan_id)/run_once", nil, try! self.encode(body), options) - return result - } - - - - // MARK Session: Session Information - - /** - * ### Get API Session - * - * Returns information about the current API session, such as which workspace is selected for the session. - * - * GET /session -> ApiSession - */ - public func session( - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/session", nil, nil, options) - return result - } - - /** - * ### Update API Session - * - * #### API Session Workspace - * - * You can use this endpoint to change the active workspace for the current API session. - * - * Only one workspace can be active in a session. The active workspace can be changed - * any number of times in a session. - * - * The default workspace for API sessions is the "production" workspace. - * - * All Looker APIs that use projects or lookml models (such as running queries) will - * use the version of project and model files defined by this workspace for the lifetime of the - * current API session or until the session workspace is changed again. - * - * An API session has the same lifetime as the access_token used to authenticate API requests. Each successful - * API login generates a new access_token and a new API session. - * - * If your Looker API client application needs to work in a dev workspace across multiple - * API sessions, be sure to select the dev workspace after each login. - * - * PATCH /session -> ApiSession - */ - public func update_session( - /** - * @param {WriteApiSession} body - */ - _ body: WriteApiSession, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.patch("/session", nil, try! self.encode(body), options) - return result - } - - - - // MARK Space: Manage Spaces - - /** - * ### Search Spaces - * - * Returns an **array of space objects** that match the given search criteria. - * - * If multiple search params are given and `filter_or` is FALSE or not specified, - * search params are combined in a logical AND operation. - * Only rows that match *all* search param criteria will be returned. - * - * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. - * Results will include rows that match **any** of the search criteria. - * - * String search params use case-insensitive matching. - * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. - * example="dan%" will match "danger" and "Danzig" but not "David" - * example="D_m%" will match "Damage" and "dump" - * - * Integer search params can accept a single value or a comma separated list of values. The multiple - * values will be combined under a logical OR operation - results will match at least one of - * the given values. - * - * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match - * or exclude (respectively) rows where the column is null. - * - * Boolean search params accept only "true" and "false" as values. - * - * - * The parameters `limit`, and `offset` are recommended for fetching results in page-size chunks. - * - * Get a **single space** by id with [Space](#!/Space/space) - * - * GET /spaces/search -> [Space] - */ - @available(*, deprecated) - public func search_spaces( - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, - /** - * @param {Int64} page Requested page. - */ - page: Int64? = nil, - /** - * @param {Int64} per_page Results per page. - */ - per_page: Int64? = nil, - /** - * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) - */ - limit: Int64? = nil, - /** - * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) - */ - offset: Int64? = nil, - /** - * @param {String} sorts Fields to sort by. - */ - sorts: String? = nil, - /** - * @param {String} name Match Space title. - */ - name: String? = nil, - /** - * @param {Int64} id Match Space id - */ - id: Int64? = nil, - /** - * @param {String} parent_id Filter on a children of a particular space. - */ - parent_id: String? = nil, - /** - * @param {String} creator_id Filter on spaces created by a particular user. - */ - creator_id: String? = nil, - /** - * @param {Bool} filter_or Combine given search criteria in a boolean OR expression - */ - filter_or: Bool? = nil, - /** - * @param {Bool} is_shared_root Match is shared root - */ - is_shared_root: Bool? = nil, - /** - * @param {Bool} is_users_root Match is users root - */ - is_users_root: Bool? = nil, - options: ITransportSettings? = nil - ) -> SDKResponse { - let result: SDKResponse = self.get("/spaces/search", - ["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 as Any?, "is_shared_root": is_shared_root as Any?, "is_users_root": is_users_root as Any?], nil, options) - return result - } - - /** - * ### Get information about the space with a specific id. - * - * GET /spaces/{space_id} -> Space + * PATCH /scheduled_plans/{scheduled_plan_id} -> ScheduledPlan */ - @available(*, deprecated) - public func space( + public func update_scheduled_plan( /** - * @param {String} space_id Id of space + * @param {String} scheduled_plan_id Scheduled Plan Id */ - _ space_id: String, + _ scheduled_plan_id: String, /** - * @param {String} fields Requested fields. + * @param {WriteScheduledPlan} body */ - fields: String? = nil, + _ body: WriteScheduledPlan, options: ITransportSettings? = nil ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.get("/spaces/\(path_space_id)", - ["fields": fields], nil, options) + let path_scheduled_plan_id = encodeParam(scheduled_plan_id) + let result: SDKResponse = self.patch("/scheduled_plans/\(path_scheduled_plan_id)", nil, try! self.encode(body), options) return result } /** - * ### Update the space with a specific id. + * ### Delete a Scheduled Plan + * + * Normal users can only delete their own scheduled plans. + * Admins can delete other users' scheduled plans. + * This delete cannot be undone. * - * PATCH /spaces/{space_id} -> Space + * DELETE /scheduled_plans/{scheduled_plan_id} -> String */ - @available(*, deprecated) - public func update_space( - /** - * @param {String} space_id Id of space - */ - _ space_id: String, + public func delete_scheduled_plan( /** - * @param {UpdateSpace} body + * @param {String} scheduled_plan_id Scheduled Plan Id */ - _ body: UpdateSpace, + _ scheduled_plan_id: String, options: ITransportSettings? = nil ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.patch("/spaces/\(path_space_id)", nil, try! self.encode(body), options) + let path_scheduled_plan_id = encodeParam(scheduled_plan_id) + let result: SDKResponse = self.delete("/scheduled_plans/\(path_scheduled_plan_id)", nil, nil, options) return result } /** - * ### Delete the space with a specific id including any children spaces. - * **DANGER** this will delete all looks and dashboards in the space. + * ### List All Scheduled Plans + * + * Returns all scheduled plans which belong to the caller or given user. + * + * If no user_id is provided, this function returns the scheduled plans owned by the caller. + * * - * DELETE /spaces/{space_id} -> String + * To list all schedules for all users, pass `all_users=true`. + * + * + * The caller must have `see_schedules` permission to see other users' scheduled plans. + * + * GET /scheduled_plans -> [ScheduledPlan] */ - @available(*, deprecated) - public func delete_space( + public func all_scheduled_plans( /** - * @param {String} space_id Id of space + * @param {String} user_id Return scheduled plans belonging to this user_id. If not provided, returns scheduled plans owned by the caller. */ - _ space_id: String, + user_id: String? = nil, + /** + * @param {String} fields Comma delimited list of field names. If provided, only the fields specified will be included in the response + */ + fields: String? = nil, + /** + * @param {Bool} all_users Return scheduled plans belonging to all users (caller needs see_schedules permission) + */ + all_users: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.delete("/spaces/\(path_space_id)", nil, nil, options) + let result: SDKResponse = self.get("/scheduled_plans", + ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) return result } /** - * ### Get information about all spaces. + * ### Create a Scheduled Plan * - * In API 3.x, this will not return empty personal spaces, unless they belong to the calling user, - * or if they contain soft-deleted content. + * Create a scheduled plan to render a Look or Dashboard on a recurring schedule. + * + * To create a scheduled plan, you MUST provide values for the following fields: + * `name` + * and + * `look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id` + * and + * `cron_tab` or `datagroup` + * and + * at least one scheduled_plan_destination + * + * A scheduled plan MUST have at least one scheduled_plan_destination defined. + * + * When `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required. + * + * If `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible. + * + * The queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan. + * + * When `run_as_recipient` is `false` or not specified, the queries that provide the data for the + * look or dashboard are run in the context of user account that owns the scheduled plan. + * + * When `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the + * queries are run in the context of each recipient, so different recipients may see different + * data from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://cloud.google.com/looker/docs/r/admin/run-as-recipient). + * + * Admins can create and modify scheduled plans on behalf of other users by specifying a user id. + * Non-admin users may not create or modify scheduled plans by or for other users. + * + * #### Email Permissions: + * + * For details about permissions required to schedule delivery to email and the safeguards + * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). + * + * + * #### Scheduled Plan Destination Formats + * + * Scheduled plan destinations must specify the data format to produce and send to the destination. + * + * Formats: + * + * | format | Description + * | :-----------: | :--- | + * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. + * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query + * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. + * | csv | Comma separated values with a header + * | txt | Tab separated values with a header + * | html | Simple html + * | xlsx | MS Excel spreadsheet + * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document + * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document + * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image + * || * - * In API 4.0+, all personal spaces will be returned. + * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. * - * GET /spaces -> [SpaceBase] + * POST /scheduled_plans -> ScheduledPlan */ - @available(*, deprecated) - public func all_spaces( + public func create_scheduled_plan( /** - * @param {String} fields Requested fields. + * @param {WriteScheduledPlan} body */ - fields: String? = nil, + _ body: WriteScheduledPlan, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.get("/spaces", - ["fields": fields], nil, options) + let result: SDKResponse = self.post("/scheduled_plans", nil, try! self.encode(body), options) return result } /** - * ### Create a space with specified information. + * ### Run a Scheduled Plan Immediately * - * Caller must have permission to edit the parent space and to create spaces, otherwise the request - * returns 404 Not Found. + * Create a scheduled plan that runs only once, and immediately. + * + * This can be useful for testing a Scheduled Plan before committing to a production schedule. + * + * Admins can create scheduled plans on behalf of other users by specifying a user id. + * + * This API is rate limited to prevent it from being used for relay spam or DoS attacks * - * POST /spaces -> Space + * #### Email Permissions: + * + * For details about permissions required to schedule delivery to email and the safeguards + * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). + * + * + * #### Scheduled Plan Destination Formats + * + * Scheduled plan destinations must specify the data format to produce and send to the destination. + * + * Formats: + * + * | format | Description + * | :-----------: | :--- | + * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. + * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query + * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. + * | csv | Comma separated values with a header + * | txt | Tab separated values with a header + * | html | Simple html + * | xlsx | MS Excel spreadsheet + * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document + * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document + * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image + * || + * + * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. + * + * POST /scheduled_plans/run_once -> ScheduledPlan */ - @available(*, deprecated) - public func create_space( + public func scheduled_plan_run_once( /** - * @param {CreateSpace} body + * @param {WriteScheduledPlan} body */ - _ body: CreateSpace, + _ body: WriteScheduledPlan, options: ITransportSettings? = nil ) -> SDKResponse { - let result: SDKResponse = self.post("/spaces", nil, try! self.encode(body), options) + let result: SDKResponse = self.post("/scheduled_plans/run_once", nil, try! self.encode(body), options) return result } /** - * ### Get the children of a space. + * ### Get Scheduled Plans for a Look + * + * Returns all scheduled plans for a look which belong to the caller or given user. + * + * If no user_id is provided, this function returns the scheduled plans owned by the caller. + * * - * GET /spaces/{space_id}/children -> [Space] + * To list all schedules for all users, pass `all_users=true`. + * + * + * The caller must have `see_schedules` permission to see other users' scheduled plans. + * + * GET /scheduled_plans/look/{look_id} -> [ScheduledPlan] */ - @available(*, deprecated) - public func space_children( - /** - * @param {String} space_id Id of space - */ - _ space_id: String, + public func scheduled_plans_for_look( /** - * @param {String} fields Requested fields. + * @param {String} look_id Look Id */ - fields: String? = nil, + _ look_id: String, /** - * @param {Int64} page Requested page. + * @param {String} user_id User Id (default is requesting user if not specified) */ - page: Int64? = nil, + user_id: String? = nil, /** - * @param {Int64} per_page Results per page. + * @param {String} fields Requested fields. */ - per_page: Int64? = nil, + fields: String? = nil, /** - * @param {String} sorts Fields to sort by. + * @param {Bool} all_users Return scheduled plans belonging to all users for the look */ - sorts: String? = nil, + all_users: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.get("/spaces/\(path_space_id)/children", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts], nil, options) + let path_look_id = encodeParam(look_id) + let result: SDKResponse = self.get("/scheduled_plans/look/\(path_look_id)", + ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) return result } /** - * ### Search the children of a space + * ### Get Scheduled Plans for a Dashboard + * + * Returns all scheduled plans for a dashboard which belong to the caller or given user. + * + * If no user_id is provided, this function returns the scheduled plans owned by the caller. + * + * + * To list all schedules for all users, pass `all_users=true`. * - * GET /spaces/{space_id}/children/search -> [Space] + * + * The caller must have `see_schedules` permission to see other users' scheduled plans. + * + * GET /scheduled_plans/dashboard/{dashboard_id} -> [ScheduledPlan] */ - @available(*, deprecated) - public func space_children_search( + public func scheduled_plans_for_dashboard( /** - * @param {String} space_id Id of space + * @param {String} dashboard_id Dashboard Id */ - _ space_id: String, + _ dashboard_id: String, /** - * @param {String} fields Requested fields. + * @param {String} user_id User Id (default is requesting user if not specified) */ - fields: String? = nil, + user_id: String? = nil, /** - * @param {String} sorts Fields to sort by. + * @param {Bool} all_users Return scheduled plans belonging to all users for the dashboard */ - sorts: String? = nil, + all_users: Bool? = nil, /** - * @param {String} name Match Space name. + * @param {String} fields Requested fields. */ - name: String? = nil, + fields: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.get("/spaces/\(path_space_id)/children/search", - ["fields": fields, "sorts": sorts, "name": name], nil, options) + let path_dashboard_id = encodeParam(dashboard_id) + let result: SDKResponse = self.get("/scheduled_plans/dashboard/\(path_dashboard_id)", + ["user_id": user_id, "all_users": all_users as Any?, "fields": fields], nil, options) return result } /** - * ### Get the parent of a space + * ### Get Scheduled Plans for a LookML Dashboard + * + * Returns all scheduled plans for a LookML Dashboard which belong to the caller or given user. + * + * If no user_id is provided, this function returns the scheduled plans owned by the caller. * - * GET /spaces/{space_id}/parent -> Space + * + * To list all schedules for all users, pass `all_users=true`. + * + * + * The caller must have `see_schedules` permission to see other users' scheduled plans. + * + * GET /scheduled_plans/lookml_dashboard/{lookml_dashboard_id} -> [ScheduledPlan] */ - @available(*, deprecated) - public func space_parent( + public func scheduled_plans_for_lookml_dashboard( /** - * @param {String} space_id Id of space + * @param {String} lookml_dashboard_id LookML Dashboard Id */ - _ space_id: String, + _ lookml_dashboard_id: String, + /** + * @param {String} user_id User Id (default is requesting user if not specified) + */ + user_id: String? = nil, /** * @param {String} fields Requested fields. */ fields: String? = nil, + /** + * @param {Bool} all_users Return scheduled plans belonging to all users for the dashboard + */ + all_users: Bool? = nil, options: ITransportSettings? = nil ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.get("/spaces/\(path_space_id)/parent", - ["fields": fields], nil, options) + let path_lookml_dashboard_id = encodeParam(lookml_dashboard_id) + let result: SDKResponse = self.get("/scheduled_plans/lookml_dashboard/\(path_lookml_dashboard_id)", + ["user_id": user_id, "fields": fields, "all_users": all_users as Any?], nil, options) return result } /** - * ### Get the ancestors of a space + * ### Run a Scheduled Plan By Id Immediately + * This function creates a run-once schedule plan based on an existing scheduled plan, + * applies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately. + * This can be useful for testing modifications to an existing scheduled plan before committing to a production schedule. + * + * This function internally performs the following operations: + * + * 1. Copies the properties of the existing scheduled plan into a new scheduled plan + * 2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values) + * 3. Creates the new scheduled plan + * 4. Runs the new scheduled plan + * + * The original scheduled plan is not modified by this operation. + * Admins can create, modify, and run scheduled plans on behalf of other users by specifying a user id. + * Non-admins can only create, modify, and run their own scheduled plans. + * + * #### Email Permissions: + * + * For details about permissions required to schedule delivery to email and the safeguards + * Looker offers to protect against sending to unauthorized email destinations, see [Email Domain Allow List for Scheduled Looks](https://cloud.google.com/looker/docs/r/api/embed-permissions). + * + * + * #### Scheduled Plan Destination Formats + * + * Scheduled plan destinations must specify the data format to produce and send to the destination. + * + * Formats: + * + * | format | Description + * | :-----------: | :--- | + * | json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata. + * | json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query + * | inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination. + * | csv | Comma separated values with a header + * | txt | Tab separated values with a header + * | html | Simple html + * | xlsx | MS Excel spreadsheet + * | wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document + * | assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document + * | wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image + * || + * + * Valid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example. + * * - * GET /spaces/{space_id}/ancestors -> [Space] + * + * This API is rate limited to prevent it from being used for relay spam or DoS attacks + * + * POST /scheduled_plans/{scheduled_plan_id}/run_once -> ScheduledPlan */ - @available(*, deprecated) - public func space_ancestors( + public func scheduled_plan_run_once_by_id( /** - * @param {String} space_id Id of space + * @param {String} scheduled_plan_id Id of schedule plan to copy and run */ - _ space_id: String, + _ scheduled_plan_id: String, /** - * @param {String} fields Requested fields. + * @param {WriteScheduledPlan} body */ - fields: String? = nil, + body: WriteScheduledPlan?, options: ITransportSettings? = nil ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.get("/spaces/\(path_space_id)/ancestors", - ["fields": fields], nil, options) + let path_scheduled_plan_id = encodeParam(scheduled_plan_id) + let result: SDKResponse = self.post("/scheduled_plans/\(path_scheduled_plan_id)/run_once", nil, try! self.encode(body), options) return result } + + + // MARK Session: Session Information + /** - * ### Get all looks in a space. - * In API 3.x, this will return all looks in a space, including looks in the trash. - * In API 4.0+, all looks in a space will be returned, excluding looks in the trash. + * ### Get API Session * - * GET /spaces/{space_id}/looks -> [LookWithQuery] + * Returns information about the current API session, such as which workspace is selected for the session. + * + * GET /session -> ApiSession */ - @available(*, deprecated) - public func space_looks( - /** - * @param {String} space_id Id of space - */ - _ space_id: String, - /** - * @param {String} fields Requested fields. - */ - fields: String? = nil, + public func session( options: ITransportSettings? = nil ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.get("/spaces/\(path_space_id)/looks", - ["fields": fields], nil, options) + let result: SDKResponse = self.get("/session", nil, nil, options) return result } /** - * ### Get the dashboards in a space + * ### Update API Session + * + * #### API Session Workspace + * + * You can use this endpoint to change the active workspace for the current API session. + * + * Only one workspace can be active in a session. The active workspace can be changed + * any number of times in a session. + * + * The default workspace for API sessions is the "production" workspace. + * + * All Looker APIs that use projects or lookml models (such as running queries) will + * use the version of project and model files defined by this workspace for the lifetime of the + * current API session or until the session workspace is changed again. + * + * An API session has the same lifetime as the access_token used to authenticate API requests. Each successful + * API login generates a new access_token and a new API session. * - * GET /spaces/{space_id}/dashboards -> [Dashboard] + * If your Looker API client application needs to work in a dev workspace across multiple + * API sessions, be sure to select the dev workspace after each login. + * + * PATCH /session -> ApiSession */ - @available(*, deprecated) - public func space_dashboards( - /** - * @param {String} space_id Id of space - */ - _ space_id: String, + public func update_session( /** - * @param {String} fields Requested fields. + * @param {WriteApiSession} body */ - fields: String? = nil, + _ body: WriteApiSession, options: ITransportSettings? = nil ) -> SDKResponse { - let path_space_id = encodeParam(space_id) - let result: SDKResponse = self.get("/spaces/\(path_space_id)/dashboards", - ["fields": fields], nil, options) + let result: SDKResponse = self.patch("/session", nil, try! self.encode(body), options) return result } @@ -8284,9 +10274,9 @@ open class LookerSDKStream: APIMethods { */ public func search_themes( /** - * @param {Int64} id Match theme id. + * @param {String} id Match theme id. */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} name Match theme name. */ @@ -8535,6 +10525,77 @@ open class LookerSDKStream: APIMethods { // MARK User: Manage Users + /** + * ### Search email credentials + * + * Returns all credentials_email records that match the given search criteria. + * + * If multiple search params are given and `filter_or` is FALSE or not specified, + * search params are combined in a logical AND operation. + * Only rows that match *all* search param criteria will be returned. + * + * If `filter_or` is TRUE, multiple search params are combined in a logical OR operation. + * Results will include rows that match **any** of the search criteria. + * + * String search params use case-insensitive matching. + * String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions. + * example="dan%" will match "danger" and "Danzig" but not "David" + * example="D_m%" will match "Damage" and "dump" + * + * Integer search params can accept a single value or a comma separated list of values. The multiple + * values will be combined under a logical OR operation - results will match at least one of + * the given values. + * + * Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match + * or exclude (respectively) rows where the column is null. + * + * Boolean search params accept only "true" and "false" as values. + * + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * GET /credentials_email/search -> [CredentialsEmailSearch] + */ + public func search_credentials_email( + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + /** + * @param {Int64} limit Number of results to return (used with `offset`). + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any (used with `limit`). + */ + offset: Int64? = nil, + /** + * @param {String} sorts Fields to sort by. + */ + sorts: String? = nil, + /** + * @param {String} id Match credentials_email id. + */ + id: String? = nil, + /** + * @param {String} email Match credentials_email email. + */ + email: String? = nil, + /** + * @param {String} emails Find credentials_email that match given emails. + */ + emails: String? = nil, + /** + * @param {Bool} filter_or Combine given search criteria in a boolean OR expression. + */ + filter_or: Bool? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/credentials_email/search", + ["fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "email": email, "emails": emails, "filter_or": filter_or as Any?], nil, options) + return result + } + /** * ### Get information about the current user; i.e. the user account currently calling the API. * @@ -8563,25 +10624,33 @@ open class LookerSDKStream: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page Return only page N of paginated results + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page Return N rows of data per page + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ sorts: String? = nil, /** - * @param {DelimArray} ids Optional list of ids to get specific users. + * @param {DelimArray} ids Optional list of ids to get specific users. */ - ids: DelimArray? = nil, + ids: DelimArray? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let result: SDKResponse = self.get("/users", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "ids": ids as Any?], nil, options) + ["fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "ids": ids as Any?], nil, options) return result } @@ -8646,21 +10715,29 @@ open class LookerSDKStream: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page Return only page N of paginated results + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page Return N rows of data per page + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, /** * @param {String} sorts Fields to sort by. */ sorts: String? = nil, /** - * @param {Int64} id Match User Id. + * @param {String} id Match User Id. */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} first_name Match First name. */ @@ -8690,17 +10767,17 @@ open class LookerSDKStream: APIMethods { */ filter_or: Bool? = nil, /** - * @param {Int64} content_metadata_id Search for users who have access to this content_metadata item + * @param {String} content_metadata_id Search for users who have access to this content_metadata item */ - content_metadata_id: Int64? = nil, + content_metadata_id: String? = nil, /** - * @param {Int64} group_id Search for users who are direct members of this group + * @param {String} group_id Search for users who are direct members of this group */ - group_id: Int64? = nil, + group_id: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let result: SDKResponse = self.get("/users/search", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "id": id, "first_name": first_name, "last_name": last_name, "verified_looker_employee": verified_looker_employee as Any?, "embed_user": embed_user as Any?, "email": email, "is_disabled": is_disabled as Any?, "filter_or": filter_or as Any?, "content_metadata_id": content_metadata_id, "group_id": group_id], nil, options) + ["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 as Any?, "embed_user": embed_user as Any?, "email": email, "is_disabled": is_disabled as Any?, "filter_or": filter_or as Any?, "content_metadata_id": content_metadata_id, "group_id": group_id], nil, options) return result } @@ -8724,21 +10801,29 @@ open class LookerSDKStream: APIMethods { */ fields: String? = nil, /** - * @param {Int64} page Return only page N of paginated results + * @param {Int64} page DEPRECATED. Use limit and offset instead. Return only page N of paginated results */ page: Int64? = nil, /** - * @param {Int64} per_page Return N rows of data per page + * @param {Int64} per_page DEPRECATED. Use limit and offset instead. Return N rows of data per page */ per_page: Int64? = nil, + /** + * @param {Int64} limit Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit: Int64? = nil, + /** + * @param {Int64} offset Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset: Int64? = nil, /** * @param {String} sorts Fields to sort by */ sorts: String? = nil, /** - * @param {Int64} id Match User Id + * @param {String} id Match User Id */ - id: Int64? = nil, + id: String? = nil, /** * @param {String} first_name Match First name */ @@ -8763,7 +10848,7 @@ open class LookerSDKStream: APIMethods { ) -> SDKResponse { let path_pattern = encodeParam(pattern) let result: SDKResponse = self.get("/users/search/names/\(path_pattern)", - ["fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "id": id, "first_name": first_name, "last_name": last_name, "verified_looker_employee": verified_looker_employee as Any?, "email": email, "is_disabled": is_disabled as Any?], nil, options) + ["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 as Any?, "email": email, "is_disabled": is_disabled as Any?], nil, options) return result } @@ -8778,9 +10863,9 @@ open class LookerSDKStream: APIMethods { */ public func user( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -8800,9 +10885,9 @@ open class LookerSDKStream: APIMethods { */ public func update_user( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {WriteUser} body */ @@ -8828,9 +10913,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -8903,9 +10988,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_email( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -8927,9 +11012,9 @@ open class LookerSDKStream: APIMethods { */ public func create_user_credentials_email( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {WriteCredentialsEmail} body */ @@ -8955,9 +11040,9 @@ open class LookerSDKStream: APIMethods { */ public func update_user_credentials_email( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {WriteCredentialsEmail} body */ @@ -8983,9 +11068,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_email( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9002,9 +11087,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_totp( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9026,9 +11111,9 @@ open class LookerSDKStream: APIMethods { */ public func create_user_credentials_totp( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {CredentialsTotp} body WARNING: no writeable properties found for POST, PUT, or PATCH */ @@ -9054,9 +11139,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_totp( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9073,9 +11158,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_ldap( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9097,9 +11182,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_ldap( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9116,9 +11201,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_google( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9140,9 +11225,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_google( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9159,9 +11244,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_saml( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9183,9 +11268,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_saml( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9202,9 +11287,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_oidc( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9226,9 +11311,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_oidc( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9245,13 +11330,13 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_api3( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} credentials_api3_id Id of API Credential + * @param {String} credentials_api3_id Id of API Credential */ - _ credentials_api3_id: Int64, + _ credentials_api3_id: String, /** * @param {String} fields Requested fields. */ @@ -9274,13 +11359,13 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_api3( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} credentials_api3_id Id of API Credential + * @param {String} credentials_api3_id Id of API Credential */ - _ credentials_api3_id: Int64, + _ credentials_api3_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9298,9 +11383,9 @@ open class LookerSDKStream: APIMethods { */ public func all_user_credentials_api3s( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9318,17 +11403,13 @@ open class LookerSDKStream: APIMethods { * * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). * - * POST /users/{user_id}/credentials_api3 -> CredentialsApi3 + * POST /users/{user_id}/credentials_api3 -> CreateCredentialsApi3 */ public func create_user_credentials_api3( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, - /** - * @param {CredentialsApi3} body WARNING: no writeable properties found for POST, PUT, or PATCH - */ - body: CredentialsApi3?, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9337,7 +11418,7 @@ open class LookerSDKStream: APIMethods { ) -> SDKResponse { let path_user_id = encodeParam(user_id) let result: SDKResponse = self.post("/users/\(path_user_id)/credentials_api3", - ["fields": fields], try! self.encode(body), options) + ["fields": fields], nil, options) return result } @@ -9350,13 +11431,13 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_embed( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} credentials_embed_id Id of Embedding Credential + * @param {String} credentials_embed_id Id of Embedding Credential */ - _ credentials_embed_id: Int64, + _ credentials_embed_id: String, /** * @param {String} fields Requested fields. */ @@ -9379,13 +11460,13 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_embed( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} credentials_embed_id Id of Embedding Credential + * @param {String} credentials_embed_id Id of Embedding Credential */ - _ credentials_embed_id: Int64, + _ credentials_embed_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9403,9 +11484,9 @@ open class LookerSDKStream: APIMethods { */ public func all_user_credentials_embeds( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9427,9 +11508,9 @@ open class LookerSDKStream: APIMethods { */ public func user_credentials_looker_openid( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9451,9 +11532,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_credentials_looker_openid( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9470,13 +11551,13 @@ open class LookerSDKStream: APIMethods { */ public func user_session( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} session_id Id of Web Login Session + * @param {String} session_id Id of Web Login Session */ - _ session_id: Int64, + _ session_id: String, /** * @param {String} fields Requested fields. */ @@ -9499,13 +11580,13 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_session( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} session_id Id of Web Login Session + * @param {String} session_id Id of Web Login Session */ - _ session_id: Int64, + _ session_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9523,9 +11604,9 @@ open class LookerSDKStream: APIMethods { */ public func all_user_sessions( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9555,9 +11636,9 @@ open class LookerSDKStream: APIMethods { */ public func create_user_credentials_email_password_reset( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {Bool} expires Expiring token. */ @@ -9581,9 +11662,9 @@ open class LookerSDKStream: APIMethods { */ public func user_roles( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ @@ -9607,9 +11688,9 @@ open class LookerSDKStream: APIMethods { */ public func set_user_roles( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {[String]} body */ @@ -9648,17 +11729,17 @@ open class LookerSDKStream: APIMethods { */ public func user_attribute_user_values( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** * @param {String} fields Requested fields. */ fields: String? = nil, /** - * @param {DelimArray} user_attribute_ids Specific user attributes to request. Omit or leave blank to request all user attributes. + * @param {DelimArray} user_attribute_ids Specific user attributes to request. Omit or leave blank to request all user attributes. */ - user_attribute_ids: DelimArray? = nil, + user_attribute_ids: DelimArray? = nil, /** * @param {Bool} all_values If true, returns all values in the search path instead of just the first value found. Useful for debugging group precedence. */ @@ -9684,13 +11765,13 @@ open class LookerSDKStream: APIMethods { */ public func set_user_attribute_user_value( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, /** * @param {WriteUserAttributeWithValue} body */ @@ -9715,13 +11796,13 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_attribute_user_value( /** - * @param {Int64} user_id Id of user + * @param {String} user_id Id of user */ - _ user_id: Int64, + _ user_id: String, /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_id = encodeParam(user_id) @@ -9730,6 +11811,87 @@ open class LookerSDKStream: APIMethods { return result } + /** + * ### Send a password reset token. + * This will send a password reset email to the user. If a password reset token does not already exist + * for this user, it will create one and then send it. + * If the user has not yet set up their account, it will send a setup email to the user. + * The URL sent in the email is expressed as the 'password_reset_url' of the user's email/password credential object. + * Password reset URLs will expire in 60 minutes. + * This method can be called with an empty body. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * POST /users/{user_id}/credentials_email/send_password_reset -> CredentialsEmail + */ + public func send_user_credentials_email_password_reset( + /** + * @param {String} user_id Id of user + */ + _ user_id: String, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_user_id = encodeParam(user_id) + let result: SDKResponse = self.post("/users/\(path_user_id)/credentials_email/send_password_reset", + ["fields": fields], nil, options) + return result + } + + /** + * ### Change a disabled user's email addresses + * + * Allows the admin to change the email addresses for all the user's + * associated credentials. Will overwrite all associated email addresses with + * the value supplied in the 'email' body param. + * The user's 'is_disabled' status must be true. + * + * Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). + * + * POST /users/{user_id}/update_emails -> User + */ + public func wipeout_user_emails( + /** + * @param {String} user_id Id of user + */ + _ user_id: String, + /** + * @param {UserEmailOnly} body + */ + _ body: UserEmailOnly, + /** + * @param {String} fields Requested fields. + */ + fields: String? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_user_id = encodeParam(user_id) + let result: SDKResponse = self.post("/users/\(path_user_id)/update_emails", + ["fields": fields], try! self.encode(body), options) + return result + } + + /** + * Create an embed user from an external user ID + * + * Calls to this endpoint require [Embedding](https://cloud.google.com/looker/docs/r/looker-core-feature-embed) to be enabled + * + * POST /users/embed_user -> UserPublic + */ + public func create_embed_user( + /** + * @param {CreateEmbedUserRequest} body + */ + _ body: CreateEmbedUserRequest, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.post("/users/embed_user", nil, try! self.encode(body), options) + return result + } + // MARK UserAttribute: Manage User Attributes @@ -9792,9 +11954,9 @@ open class LookerSDKStream: APIMethods { */ public func user_attribute( /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, /** * @param {String} fields Requested fields. */ @@ -9814,9 +11976,9 @@ open class LookerSDKStream: APIMethods { */ public func update_user_attribute( /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, /** * @param {WriteUserAttribute} body */ @@ -9840,9 +12002,9 @@ open class LookerSDKStream: APIMethods { */ public func delete_user_attribute( /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, options: ITransportSettings? = nil ) -> SDKResponse { let path_user_attribute_id = encodeParam(user_attribute_id) @@ -9863,9 +12025,9 @@ open class LookerSDKStream: APIMethods { */ public func all_user_attribute_group_values( /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, /** * @param {String} fields Requested fields. */ @@ -9904,9 +12066,9 @@ open class LookerSDKStream: APIMethods { */ public func set_user_attribute_group_values( /** - * @param {Int64} user_attribute_id Id of user attribute + * @param {String} user_attribute_id Id of user attribute */ - _ user_attribute_id: Int64, + _ user_attribute_id: String, /** * @param {[UserAttributeGroupValue]} body */ From c2147b5787b7a594dd4b2ef86811556704999453 Mon Sep 17 00:00:00 2001 From: Fabio Beltramini Date: Fri, 11 Aug 2023 20:33:17 -0400 Subject: [PATCH 3/5] feat: generate SDKs for Looker 23.14 Release-As: 23.14.0 --- .node-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.node-version b/.node-version index 47c0a98a1..f46d5e394 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -12.13.0 +14.21.3 From ded40a1ae018b79932f969101112e903b9951472 Mon Sep 17 00:00:00 2001 From: Fabio Beltramini Date: Fri, 11 Aug 2023 20:41:02 -0400 Subject: [PATCH 4/5] feat: generate SDKs for Looker 23.14 Release-As: 23.14.0 --- Pipfile | 1 + Pipfile.lock | 158 +- python/looker_sdk/sdk/api31/methods.py | 1980 +++--- python/looker_sdk/sdk/api31/models.py | 6917 +++++++++++--------- python/looker_sdk/sdk/api40/methods.py | 2394 ++++--- python/looker_sdk/sdk/api40/models.py | 8355 +++++++++++++----------- 6 files changed, 11274 insertions(+), 8531 deletions(-) diff --git a/Pipfile b/Pipfile index 91c7251ed..cde895932 100644 --- a/Pipfile +++ b/Pipfile @@ -7,6 +7,7 @@ verify_ssl = true [packages] black = "*" +tox = "*" [requires] python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock index b602cfaa7..70cb64675 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "5a1a6fff17f3dfabe7e20f00aa0c7ba5c1cf134b33702a1e28a55bcfea178c47" + "sha256": "069f413a99ad9c29916fca5532adede3ce508a19df2ff2e6866f5f65a9036b30" }, "pipfile-spec": 6, "requires": { @@ -18,78 +18,142 @@ "default": { "black": { "hashes": [ - "sha256:07e5c049442d7ca1a2fc273c79d1aecbbf1bc858f62e8184abe1ad175c4f7cc2", - "sha256:0e21e1f1efa65a50e3960edd068b6ae6d64ad6235bd8bfea116a03b21836af71", - "sha256:1297c63b9e1b96a3d0da2d85d11cd9bf8664251fd69ddac068b98dc4f34f73b6", - "sha256:228b5ae2c8e3d6227e4bde5920d2fc66cc3400fde7bcc74f480cb07ef0b570d5", - "sha256:2d6f331c02f0f40aa51a22e479c8209d37fcd520c77721c034517d44eecf5912", - "sha256:2ff96450d3ad9ea499fc4c60e425a1439c2120cbbc1ab959ff20f7c76ec7e866", - "sha256:3524739d76b6b3ed1132422bf9d82123cd1705086723bc3e235ca39fd21c667d", - "sha256:35944b7100af4a985abfcaa860b06af15590deb1f392f06c8683b4381e8eeaf0", - "sha256:373922fc66676133ddc3e754e4509196a8c392fec3f5ca4486673e685a421321", - "sha256:5fa1db02410b1924b6749c245ab38d30621564e658297484952f3d8a39fce7e8", - "sha256:6f2f01381f91c1efb1451998bd65a129b3ed6f64f79663a55fe0e9b74a5f81fd", - "sha256:742ce9af3086e5bd07e58c8feb09dbb2b047b7f566eb5f5bc63fd455814979f3", - "sha256:7835fee5238fc0a0baf6c9268fb816b5f5cd9b8793423a75e8cd663c48d073ba", - "sha256:8871fcb4b447206904932b54b567923e5be802b9b19b744fdff092bd2f3118d0", - "sha256:a7c0192d35635f6fc1174be575cb7915e92e5dd629ee79fdaf0dcfa41a80afb5", - "sha256:b1a5ed73ab4c482208d20434f700d514f66ffe2840f63a6252ecc43a9bc77e8a", - "sha256:c8226f50b8c34a14608b848dc23a46e5d08397d009446353dad45e04af0c8e28", - "sha256:ccad888050f5393f0d6029deea2a33e5ae371fd182a697313bdbd835d3edaf9c", - "sha256:dae63f2dbf82882fa3b2a3c49c32bffe144970a573cd68d247af6560fc493ae1", - "sha256:e2f69158a7d120fd641d1fa9a921d898e20d52e44a74a6fbbcc570a62a6bc8ab", - "sha256:efbadd9b52c060a8fc3b9658744091cb33c31f830b3f074422ed27bad2b18e8f", - "sha256:f5660feab44c2e3cb24b2419b998846cbb01c23c7fe645fee45087efa3da2d61", - "sha256:fdb8754b453fb15fad3f72cd9cad3e16776f0964d67cf30ebcbf10327a3777a3" + "sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3", + "sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb", + "sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087", + "sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320", + "sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6", + "sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3", + "sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc", + "sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f", + "sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587", + "sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91", + "sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a", + "sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad", + "sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926", + "sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9", + "sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be", + "sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd", + "sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96", + "sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491", + "sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2", + "sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a", + "sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f", + "sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995" ], "index": "pypi", - "version": "==22.1.0" + "version": "==23.7.0" + }, + "cachetools": { + "hashes": [ + "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590", + "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b" + ], + "markers": "python_version >= '3.7'", + "version": "==5.3.1" + }, + "chardet": { + "hashes": [ + "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", + "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970" + ], + "markers": "python_version >= '3.7'", + "version": "==5.2.0" }, "click": { "hashes": [ - "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1", - "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb" + "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd", + "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5" ], - "markers": "python_version >= '3.6'", - "version": "==8.0.4" + "markers": "python_version >= '3.7'", + "version": "==8.1.6" + }, + "colorama": { + "hashes": [ + "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", + "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", + "version": "==0.4.6" + }, + "distlib": { + "hashes": [ + "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057", + "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8" + ], + "version": "==0.3.7" + }, + "filelock": { + "hashes": [ + "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81", + "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec" + ], + "markers": "python_version >= '3.7'", + "version": "==3.12.2" }, "mypy-extensions": { "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", + "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782" + ], + "markers": "python_version >= '3.5'", + "version": "==1.0.0" + }, + "packaging": { + "hashes": [ + "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61", + "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" ], - "version": "==0.4.3" + "markers": "python_version >= '3.7'", + "version": "==23.1" }, "pathspec": { "hashes": [ - "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a", - "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1" + "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20", + "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3" ], - "version": "==0.9.0" + "markers": "python_version >= '3.7'", + "version": "==0.11.2" }, "platformdirs": { "hashes": [ - "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d", - "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227" + "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d", + "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d" + ], + "markers": "python_version >= '3.7'", + "version": "==3.10.0" + }, + "pluggy": { + "hashes": [ + "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849", + "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3" ], "markers": "python_version >= '3.7'", - "version": "==2.5.1" + "version": "==1.2.0" }, - "tomli": { + "pyproject-api": { "hashes": [ - "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", - "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" + "sha256:14cf09828670c7b08842249c1f28c8ee6581b872e893f81b62d5465bec41502f", + "sha256:ffb5b2d7cad43f5b2688ab490de7c4d3f6f15e0b819cb588c4b771567c9729eb" ], "markers": "python_version >= '3.7'", - "version": "==2.0.1" + "version": "==1.5.3" + }, + "tox": { + "hashes": [ + "sha256:79399a3d4641d1fd15eb6bd62c2f35923988038bf0ecf37a688b5e7a767de7d7", + "sha256:89120e1568c763924301cfde61ba7d4b5c4615eeb1086d5370deb03e9cf63c41" + ], + "index": "pypi", + "version": "==4.7.0" }, - "typing-extensions": { + "virtualenv": { "hashes": [ - "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42", - "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2" + "sha256:95a6e9398b4967fbcb5fef2acec5efaf9aa4972049d9ae41f95e0972a683fd02", + "sha256:e5c3b4ce817b0b328af041506a2a299418c98747c4b1e68cb7527e74ced23efc" ], - "markers": "python_version < '3.10'", - "version": "==4.1.1" + "markers": "python_version >= '3.7'", + "version": "==20.24.3" } }, "develop": {} diff --git a/python/looker_sdk/sdk/api31/methods.py b/python/looker_sdk/sdk/api31/methods.py index 09b1aed74..029576dd8 100644 --- a/python/looker_sdk/sdk/api31/methods.py +++ b/python/looker_sdk/sdk/api31/methods.py @@ -33,9 +33,9 @@ from looker_sdk.rtl import api_methods from looker_sdk.rtl import transport -class Looker31SDK(api_methods.APIMethods): - #region ApiAuth: API Authentication +class Looker31SDK(api_methods.APIMethods): + # region ApiAuth: API Authentication # ### Present client credentials to obtain an authorization token # @@ -82,8 +82,8 @@ def login( path="/login", structure=mdls.AccessToken, query_params={"client_id": client_id, "client_secret": client_secret}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -116,15 +116,17 @@ def login_user( transport_options: Optional[transport.TransportOptions] = None, ) -> mdls.AccessToken: """Login user""" - 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, query_params={"associative": associative}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -139,16 +141,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 Auth: Manage User Authentication Configuration + # region Auth: Manage User Authentication Configuration # ### Create Signed Embed URL # @@ -205,8 +205,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 @@ -240,8 +240,8 @@ def ldap_config( self.get( path="/ldap_config", structure=mdls.LDAPConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -272,8 +272,8 @@ def update_ldap_config( path="/ldap_config", structure=mdls.LDAPConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -311,8 +311,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 @@ -352,8 +352,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 @@ -382,8 +382,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 @@ -412,8 +412,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 @@ -443,8 +443,8 @@ def oidc_config( self.get( path="/oidc_config", structure=mdls.OIDCConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -473,8 +473,8 @@ def update_oidc_config( path="/oidc_config", structure=mdls.OIDCConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -496,8 +496,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 @@ -519,8 +519,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 @@ -541,8 +541,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 @@ -561,8 +561,8 @@ def password_config( self.get( path="/password_config", structure=mdls.PasswordConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -583,8 +583,8 @@ def update_password_config( path="/password_config", structure=mdls.PasswordConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -603,8 +603,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 @@ -634,8 +634,8 @@ def saml_config( self.get( path="/saml_config", structure=mdls.SamlConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -664,8 +664,8 @@ def update_saml_config( path="/saml_config", structure=mdls.SamlConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -687,8 +687,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 @@ -710,8 +710,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 @@ -732,8 +732,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 @@ -754,8 +754,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 @@ -778,8 +778,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 @@ -796,8 +796,8 @@ def session_config( self.get( path="/session_config", structure=mdls.SessionConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -816,8 +816,8 @@ def update_session_config( path="/session_config", structure=mdls.SessionConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -837,8 +837,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 @@ -873,9 +873,19 @@ 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, "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, + "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 @@ -895,14 +905,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 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) @@ -927,8 +937,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 @@ -955,8 +965,8 @@ def create_color_collection( path="/color_collections", structure=mdls.ColorCollection, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -981,8 +991,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 @@ -1007,8 +1017,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 @@ -1029,8 +1039,8 @@ def default_color_collection( self.get( path="/color_collections/default", structure=mdls.ColorCollection, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1053,8 +1063,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 @@ -1086,8 +1096,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 @@ -1110,8 +1120,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 @@ -1138,14 +1148,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 # ### WARNING: The Looker internal database backup function has been deprecated. # @@ -1160,8 +1170,8 @@ def backup_configuration( self.get( path="/backup_configuration", structure=mdls.BackupConfiguration, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1180,8 +1190,8 @@ def update_backup_configuration( path="/backup_configuration", structure=mdls.BackupConfiguration, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1198,8 +1208,8 @@ def cloud_storage_configuration( self.get( path="/cloud_storage", structure=mdls.BackupConfiguration, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1218,8 +1228,8 @@ def update_cloud_storage_configuration( path="/cloud_storage", structure=mdls.BackupConfiguration, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1236,8 +1246,8 @@ def custom_welcome_email( self.get( path="/custom_welcome_email", structure=mdls.CustomWelcomeEmail, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1259,8 +1269,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 @@ -1272,15 +1282,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 @@ -1297,8 +1307,8 @@ def digest_emails_enabled( self.get( path="/digest_emails_enabled", structure=mdls.DigestEmails, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1317,8 +1327,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 @@ -1337,8 +1347,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 @@ -1355,8 +1365,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 @@ -1375,8 +1385,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 @@ -1393,8 +1403,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 @@ -1413,8 +1423,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 @@ -1433,8 +1443,8 @@ def all_legacy_features( self.get( path="/legacy_features", structure=Sequence[mdls.LegacyFeature], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1455,8 +1465,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 @@ -1479,8 +1489,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 @@ -1497,8 +1507,8 @@ def all_locales( self.get( path="/locales", structure=Sequence[mdls.Locale], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1519,8 +1529,8 @@ def set_smtp_settings( path="/smtp_settings", structure=None, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1537,8 +1547,8 @@ def all_timezones( self.get( path="/timezones", structure=Sequence[mdls.Timezone], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1558,8 +1568,8 @@ def versions( path="/versions", structure=mdls.ApiVersion, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1580,8 +1590,8 @@ def whitelabel_configuration( path="/whitelabel_configuration", structure=mdls.WhitelabelConfiguration, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1600,14 +1610,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. # @@ -1625,8 +1635,8 @@ def all_connections( path="/connections", structure=Sequence[mdls.DBConnection], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1645,8 +1655,8 @@ def create_connection( path="/connections", structure=mdls.DBConnection, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1669,8 +1679,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 @@ -1692,8 +1702,8 @@ def update_connection( path=f"/connections/{connection_name}", structure=mdls.DBConnection, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1713,8 +1723,8 @@ def delete_connection( self.delete( path=f"/connections/{connection_name}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1737,8 +1747,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 @@ -1768,8 +1778,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 @@ -1798,8 +1808,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 @@ -1819,14 +1829,14 @@ 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 - #endregion + # endregion - #region Content: Manage Content + # region Content: Manage Content # ### Search Favorite Content # @@ -1882,9 +1892,20 @@ 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, "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, + "limit": limit, + "offset": offset, + "sorts": sorts, + "fields": fields, + "filter_or": filter_or, + }, + transport_options=transport_options, + ), ) return response @@ -1906,8 +1927,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 @@ -1926,8 +1947,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 @@ -1946,8 +1967,8 @@ def create_content_favorite( path="/content_favorite", structure=mdls.ContentFavorite, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1969,8 +1990,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 @@ -1992,8 +2013,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 @@ -2014,8 +2035,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 @@ -2036,9 +2057,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 @@ -2059,10 +2083,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 @@ -2084,8 +2110,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 @@ -2104,8 +2130,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 @@ -2141,9 +2167,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 @@ -2166,8 +2198,8 @@ def content_validation( path="/content_validation", structure=mdls.ContentValidation, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2231,9 +2263,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 @@ -2264,14 +2310,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 Dashboard: Manage Dashboards + # region Dashboard: Manage Dashboards # ### Get information about all active dashboards. # @@ -2295,8 +2341,8 @@ def all_dashboards( path="/dashboards", structure=Sequence[mdls.DashboardBase], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2328,8 +2374,8 @@ def create_dashboard( path="/dashboards", structure=mdls.Dashboard, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2409,9 +2455,27 @@ 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, "space_id": space_id, "folder_id": folder_id, "deleted": deleted, "user_id": user_id, "view_count": view_count, "content_metadata_id": content_metadata_id, "curate": curate, "fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "filter_or": filter_or}, - transport_options=transport_options - ) + query_params={ + "id": id, + "slug": slug, + "title": title, + "description": description, + "content_favorite_id": content_favorite_id, + "space_id": space_id, + "folder_id": folder_id, + "deleted": deleted, + "user_id": user_id, + "view_count": view_count, + "content_metadata_id": content_metadata_id, + "curate": curate, + "fields": fields, + "page": page, + "per_page": per_page, + "sorts": sorts, + "filter_or": filter_or, + }, + transport_options=transport_options, + ), ) return response @@ -2450,8 +2514,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 @@ -2484,8 +2548,8 @@ def sync_lookml_dashboard( structure=Sequence[int], query_params={"raw_locale": raw_locale}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2514,8 +2578,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 @@ -2546,8 +2610,8 @@ def update_dashboard( path=f"/dashboards/{dashboard_id}", structure=mdls.Dashboard, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2573,8 +2637,8 @@ def delete_dashboard( self.delete( path=f"/dashboards/{dashboard_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2596,8 +2660,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 @@ -2619,8 +2683,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 @@ -2674,9 +2738,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 @@ -2699,8 +2771,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 @@ -2725,8 +2797,8 @@ def update_dashboard_element( structure=mdls.DashboardElement, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2746,8 +2818,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 @@ -2770,8 +2842,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 @@ -2795,8 +2867,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 @@ -2819,8 +2891,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 @@ -2845,8 +2917,8 @@ def update_dashboard_filter( structure=mdls.DashboardFilter, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2866,8 +2938,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 @@ -2890,8 +2962,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 @@ -2913,8 +2985,8 @@ def create_dashboard_filter( structure=mdls.DashboardFilter, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2930,15 +3002,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 @@ -2955,7 +3029,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( @@ -2963,8 +3039,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 @@ -2987,8 +3063,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 @@ -3011,8 +3087,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 @@ -3037,8 +3113,8 @@ def update_dashboard_layout( structure=mdls.DashboardLayout, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3058,8 +3134,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 @@ -3082,8 +3158,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 @@ -3105,14 +3181,14 @@ def create_dashboard_layout( structure=mdls.DashboardLayout, query_params={"fields": fields}, 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. # @@ -3129,8 +3205,8 @@ def perform_data_action( path="/data_actions", structure=mdls.DataActionResponse, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3149,14 +3225,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. # @@ -3171,8 +3247,8 @@ def all_datagroups( self.get( path="/datagroups", structure=Sequence[mdls.Datagroup], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3192,8 +3268,8 @@ def datagroup( self.get( path=f"/datagroups/{datagroup_id}", structure=mdls.Datagroup, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3215,14 +3291,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 # @@ -3245,8 +3321,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 @@ -3271,8 +3347,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 @@ -3303,9 +3379,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 @@ -3325,8 +3406,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 @@ -3349,14 +3430,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 # @@ -3397,9 +3478,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 @@ -3422,8 +3517,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 @@ -3445,8 +3540,8 @@ def update_folder( path=f"/folders/{folder_id}", structure=mdls.Folder, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3467,8 +3562,8 @@ def delete_folder( self.delete( path=f"/folders/{folder_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3493,8 +3588,8 @@ def all_folders( path="/folders", structure=Sequence[mdls.Folder], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3516,8 +3611,8 @@ def create_folder( path="/folders", structure=mdls.Folder, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3545,9 +3640,14 @@ 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, "sorts": sorts}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "page": page, + "per_page": per_page, + "sorts": sorts, + }, + transport_options=transport_options, + ), ) return response @@ -3574,8 +3674,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 @@ -3598,8 +3698,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 @@ -3622,8 +3722,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 @@ -3648,8 +3748,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 @@ -3672,14 +3772,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. # @@ -3708,9 +3808,17 @@ def all_groups( self.get( path="/groups", structure=Sequence[mdls.Group], - query_params={"fields": fields, "page": page, "per_page": per_page, "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, + "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 @@ -3732,8 +3840,8 @@ def create_group( structure=mdls.Group, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3793,9 +3901,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 @@ -3817,8 +3936,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 @@ -3842,8 +3961,8 @@ def update_group( structure=mdls.Group, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3862,8 +3981,8 @@ def delete_group( self.delete( path=f"/groups/{group_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3885,8 +4004,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 @@ -3908,8 +4027,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 @@ -3936,9 +4055,14 @@ 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, "sorts": sorts}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "page": page, + "per_page": per_page, + "sorts": sorts, + }, + transport_options=transport_options, + ), ) return response @@ -3960,8 +4084,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 @@ -3982,8 +4106,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 @@ -4004,8 +4128,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 @@ -4031,8 +4155,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 @@ -4053,14 +4177,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 all homepages. # @@ -4078,8 +4202,8 @@ def all_homepages( path="/homepages", structure=Sequence[mdls.Homepage], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4101,8 +4225,8 @@ def create_homepage( structure=mdls.Homepage, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4166,9 +4290,23 @@ def search_homepages( self.get( path="/homepages/search", structure=Sequence[mdls.Homepage], - query_params={"title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited, "creator_id": creator_id, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "sorts": sorts, "filter_or": filter_or}, - 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, + "page": page, + "per_page": per_page, + "offset": offset, + "limit": limit, + "sorts": sorts, + "filter_or": filter_or, + }, + transport_options=transport_options, + ), ) return response @@ -4190,8 +4328,8 @@ def homepage( path=f"/homepages/{homepage_id}", structure=mdls.Homepage, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4215,8 +4353,8 @@ def update_homepage( structure=mdls.Homepage, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4235,8 +4373,8 @@ def delete_homepage( self.delete( path=f"/homepages/{homepage_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4259,9 +4397,13 @@ def all_homepage_items( self.get( path="/homepage_items", structure=Sequence[mdls.HomepageItem], - query_params={"fields": fields, "sorts": sorts, "homepage_section_id": homepage_section_id}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "sorts": sorts, + "homepage_section_id": homepage_section_id, + }, + transport_options=transport_options, + ), ) return response @@ -4283,8 +4425,8 @@ def create_homepage_item( structure=mdls.HomepageItem, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4306,8 +4448,8 @@ def homepage_item( path=f"/homepage_items/{homepage_item_id}", structure=mdls.HomepageItem, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4331,8 +4473,8 @@ def update_homepage_item( structure=mdls.HomepageItem, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4351,8 +4493,8 @@ def delete_homepage_item( self.delete( path=f"/homepage_items/{homepage_item_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4374,8 +4516,8 @@ def all_homepage_sections( path="/homepage_sections", structure=Sequence[mdls.HomepageSection], query_params={"fields": fields, "sorts": sorts}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4397,8 +4539,8 @@ def create_homepage_section( structure=mdls.HomepageSection, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4420,8 +4562,8 @@ def homepage_section( path=f"/homepage_sections/{homepage_section_id}", structure=mdls.HomepageSection, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4445,8 +4587,8 @@ def update_homepage_section( structure=mdls.HomepageSection, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4465,8 +4607,8 @@ def delete_homepage_section( self.delete( path=f"/homepage_sections/{homepage_section_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4486,14 +4628,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. # @@ -4511,8 +4653,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 @@ -4536,8 +4678,8 @@ def create_integration_hub( structure=mdls.IntegrationHub, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4559,8 +4701,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 @@ -4586,8 +4728,8 @@ def update_integration_hub( structure=mdls.IntegrationHub, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4606,8 +4748,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 @@ -4626,8 +4768,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 @@ -4648,9 +4790,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 @@ -4673,8 +4818,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 @@ -4699,8 +4844,8 @@ def update_integration( structure=mdls.Integration, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4722,8 +4867,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 @@ -4743,14 +4888,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 Look: Run and Manage Looks + # region Look: Run and Manage Looks # ### Get information about all active Looks # @@ -4774,8 +4919,8 @@ def all_looks( path="/looks", structure=Sequence[mdls.Look], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4803,8 +4948,8 @@ def create_look( structure=mdls.LookWithQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4877,9 +5022,25 @@ 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, "space_id": space_id, "user_id": user_id, "view_count": view_count, "deleted": deleted, "query_id": query_id, "curate": curate, "fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "filter_or": filter_or}, - transport_options=transport_options - ) + query_params={ + "id": id, + "title": title, + "description": description, + "content_favorite_id": content_favorite_id, + "space_id": space_id, + "user_id": user_id, + "view_count": view_count, + "deleted": deleted, + "query_id": query_id, + "curate": curate, + "fields": fields, + "page": page, + "per_page": per_page, + "sorts": sorts, + "filter_or": filter_or, + }, + transport_options=transport_options, + ), ) return response @@ -4903,8 +5064,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 @@ -4947,8 +5108,8 @@ def update_look( structure=mdls.LookWithQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4973,8 +5134,8 @@ def delete_look( self.delete( path=f"/looks/{look_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5037,15 +5198,28 @@ 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 - #endregion + # endregion - #region LookmlModel: Manage LookML Models + # region LookmlModel: Manage LookML Models # ### Get information about all lookml models. # @@ -5063,8 +5237,8 @@ def all_lookml_models( path="/lookml_models", structure=Sequence[mdls.LookmlModel], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5083,8 +5257,8 @@ def create_lookml_model( path="/lookml_models", structure=mdls.LookmlModel, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5107,8 +5281,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 @@ -5130,8 +5304,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 @@ -5151,8 +5325,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 @@ -5178,14 +5352,14 @@ def lookml_model_explore( path=f"/lookml_models/{lookml_model_name}/explores/{explore_name}", structure=mdls.LookmlModelExplore, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Project: Manage Projects + # region Project: Manage Projects # ### Get All Git Branches # @@ -5205,8 +5379,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 @@ -5228,8 +5402,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 @@ -5259,8 +5433,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 @@ -5289,8 +5463,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 @@ -5315,8 +5489,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 @@ -5341,8 +5515,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 @@ -5375,8 +5549,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 @@ -5407,8 +5581,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 @@ -5430,8 +5604,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 @@ -5453,8 +5627,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 @@ -5476,8 +5650,8 @@ def all_projects( path="/projects", structure=Sequence[mdls.Project], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5502,8 +5676,8 @@ def create_project( path="/projects", structure=mdls.Project, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5528,8 +5702,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 @@ -5575,8 +5749,8 @@ def update_project( structure=mdls.Project, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5598,8 +5772,8 @@ def manifest( self.get( path=f"/projects/{project_id}/manifest", structure=mdls.Manifest, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5621,8 +5795,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 @@ -5650,8 +5824,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 @@ -5685,8 +5859,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 @@ -5717,8 +5891,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 @@ -5743,8 +5917,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 @@ -5769,8 +5943,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 @@ -5797,8 +5971,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 @@ -5830,8 +6004,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 @@ -5864,9 +6038,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 @@ -5893,8 +6070,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 @@ -5923,8 +6100,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 @@ -5953,10 +6130,14 @@ 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 - ) + transport_options=transport_options, + ), ) return response @@ -5986,8 +6167,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 @@ -6015,8 +6196,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 @@ -6038,14 +6219,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 # @@ -6092,10 +6273,24 @@ 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, "image_width": image_width, "image_height": image_height, "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, + "image_width": image_width, + "image_height": image_height, + "fields": fields, + }, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6121,8 +6316,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 @@ -6151,8 +6346,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 @@ -6194,8 +6389,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 @@ -6233,8 +6428,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 @@ -6273,8 +6468,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 @@ -6303,8 +6498,8 @@ def create_query( structure=mdls.Query, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6370,9 +6565,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 @@ -6466,10 +6674,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}, + 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 - ) + transport_options=transport_options, + ), ) return response @@ -6546,8 +6767,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 @@ -6572,8 +6793,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 @@ -6611,8 +6832,8 @@ def create_merge_query( structure=mdls.MergeQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6629,8 +6850,8 @@ def all_running_queries( self.get( path="/running_queries", structure=Sequence[mdls.RunningQueries], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6650,8 +6871,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 @@ -6671,8 +6892,8 @@ def sql_query( self.get( path=f"/sql_queries/{slug}", structure=mdls.SqlQuery, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6693,8 +6914,8 @@ def create_sql_query( path="/sql_queries", structure=mdls.SqlQuery, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6720,14 +6941,14 @@ def run_sql_query( path=f"/sql_queries/{slug}/run/{result_format}", structure=Union[str, bytes], # type: ignore 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 lookml dashboard to a document or image. # @@ -6765,10 +6986,16 @@ def create_lookml_dashboard_render_task( self.post( path=f"/render_tasks/lookml_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}, + query_params={ + "width": width, + "height": height, + "fields": fields, + "pdf_paper_size": pdf_paper_size, + "pdf_landscape": pdf_landscape, + }, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6801,8 +7028,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 @@ -6835,8 +7062,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 @@ -6873,10 +7100,16 @@ 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}, + query_params={ + "width": width, + "height": height, + "fields": fields, + "pdf_paper_size": pdf_paper_size, + "pdf_landscape": pdf_landscape, + }, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6903,8 +7136,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 @@ -6940,14 +7173,14 @@ 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 - #endregion + # endregion - #region Role: Manage Roles + # region Role: Manage Roles # ### Search model sets # Returns all model set records that match the given search criteria. @@ -7001,9 +7234,19 @@ 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}, - 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, + }, + transport_options=transport_options, + ), ) return response @@ -7025,8 +7268,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 @@ -7047,8 +7290,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 @@ -7067,8 +7310,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 @@ -7088,8 +7331,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 @@ -7108,8 +7351,8 @@ def create_model_set( path="/model_sets", structure=mdls.ModelSet, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7126,8 +7369,8 @@ def all_permissions( self.get( path="/permissions", structure=Sequence[mdls.Permission], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7183,9 +7426,19 @@ 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}, - 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, + }, + transport_options=transport_options, + ), ) return response @@ -7207,8 +7460,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 @@ -7229,8 +7482,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 @@ -7249,8 +7502,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 @@ -7270,8 +7523,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 @@ -7290,8 +7543,8 @@ def create_permission_set( path="/permission_sets", structure=mdls.PermissionSet, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7313,8 +7566,8 @@ def all_roles( path="/roles", structure=Sequence[mdls.Role], query_params={"fields": fields, "ids": ids}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7333,8 +7586,8 @@ def create_role( path="/roles", structure=mdls.Role, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7390,9 +7643,18 @@ def search_roles( self.get( path="/roles/search", structure=Sequence[mdls.Role], - 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 @@ -7411,8 +7673,8 @@ def role( self.get( path=f"/roles/{role_id}", structure=mdls.Role, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7433,8 +7695,8 @@ def update_role( path=f"/roles/{role_id}", structure=mdls.Role, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7453,8 +7715,8 @@ def delete_role( self.delete( path=f"/roles/{role_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7476,8 +7738,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 @@ -7500,8 +7762,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 @@ -7524,9 +7786,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 @@ -7547,14 +7812,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 # @@ -7576,8 +7841,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 @@ -7601,8 +7866,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 @@ -7664,8 +7929,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 @@ -7688,8 +7953,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 @@ -7722,9 +7987,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 @@ -7800,8 +8069,8 @@ def create_scheduled_plan( path="/scheduled_plans", structure=mdls.ScheduledPlan, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7856,8 +8125,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 @@ -7892,9 +8161,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 @@ -7929,9 +8202,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 @@ -7967,9 +8244,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 @@ -8036,14 +8317,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 Session: Session Information + # region Session: Session Information # ### Get API Session # @@ -8060,8 +8341,8 @@ def session( self.get( path="/session", structure=mdls.ApiSession, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8099,14 +8380,14 @@ def update_session( path="/session", structure=mdls.ApiSession, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Space: Manage Spaces + # region Space: Manage Spaces # ### Search Spaces # @@ -8175,9 +8456,23 @@ def search_spaces( self.get( path="/spaces/search", structure=Sequence[mdls.Space], - 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 @@ -8200,8 +8495,8 @@ def space( path=f"/spaces/{space_id}", structure=mdls.Space, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8223,8 +8518,8 @@ def update_space( path=f"/spaces/{space_id}", structure=mdls.Space, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8245,8 +8540,8 @@ def delete_space( self.delete( path=f"/spaces/{space_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8271,8 +8566,8 @@ def all_spaces( path="/spaces", structure=Sequence[mdls.SpaceBase], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8294,8 +8589,8 @@ def create_space( path="/spaces", structure=mdls.Space, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8323,9 +8618,14 @@ def space_children( self.get( path=f"/spaces/{space_id}/children", structure=Sequence[mdls.Space], - query_params={"fields": fields, "page": page, "per_page": per_page, "sorts": sorts}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "page": page, + "per_page": per_page, + "sorts": sorts, + }, + transport_options=transport_options, + ), ) return response @@ -8352,8 +8652,8 @@ def space_children_search( path=f"/spaces/{space_id}/children/search", structure=Sequence[mdls.Space], query_params={"fields": fields, "sorts": sorts, "name": name}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8376,8 +8676,8 @@ def space_parent( path=f"/spaces/{space_id}/parent", structure=mdls.Space, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8400,8 +8700,8 @@ def space_ancestors( path=f"/spaces/{space_id}/ancestors", structure=Sequence[mdls.Space], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8426,8 +8726,8 @@ def space_looks( path=f"/spaces/{space_id}/looks", structure=Sequence[mdls.LookWithQuery], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8450,14 +8750,14 @@ def space_dashboards( path=f"/spaces/{space_id}/dashboards", structure=Sequence[mdls.Dashboard], query_params={"fields": fields}, - 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 # @@ -8481,8 +8781,8 @@ def all_themes( path="/themes", structure=Sequence[mdls.Theme], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8515,8 +8815,8 @@ def create_theme( path="/themes", structure=mdls.Theme, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8588,9 +8888,19 @@ 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}, - 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, + }, + transport_options=transport_options, + ), ) return response @@ -8616,8 +8926,8 @@ def default_theme( path="/themes/default", structure=mdls.Theme, query_params={"ts": ts}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8647,8 +8957,8 @@ def set_default_theme( path="/themes/default", structure=mdls.Theme, query_params={"name": name}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8680,8 +8990,8 @@ def active_themes( path="/themes/active", structure=Sequence[mdls.Theme], query_params={"name": name, "ts": ts, "fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8708,8 +9018,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 @@ -8734,8 +9044,8 @@ def validate_theme( path="/themes/validate", structure=mdls.ValidationError, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8762,8 +9072,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 @@ -8787,8 +9097,8 @@ def update_theme( path=f"/themes/{theme_id}", structure=mdls.Theme, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8816,14 +9126,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 # ### Get information about the current user; i.e. the user account currently calling the API. # @@ -8841,8 +9151,8 @@ def me( path="/user", structure=mdls.User, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8869,9 +9179,15 @@ def all_users( self.get( path="/users", structure=Sequence[mdls.User], - query_params={"fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "ids": ids}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "page": page, + "per_page": per_page, + "sorts": sorts, + "ids": ids, + }, + transport_options=transport_options, + ), ) return response @@ -8893,8 +9209,8 @@ def create_user( structure=mdls.User, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8968,9 +9284,24 @@ def search_users( self.get( path="/users/search", structure=Sequence[mdls.User], - query_params={"fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "id": id, "first_name": first_name, "last_name": last_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}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "page": page, + "per_page": per_page, + "sorts": sorts, + "id": id, + "first_name": first_name, + "last_name": last_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, + }, + transport_options=transport_options, + ), ) return response @@ -9015,9 +9346,20 @@ 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, "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, + "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 @@ -9043,8 +9385,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 @@ -9068,8 +9410,8 @@ def update_user( structure=mdls.User, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9090,8 +9432,8 @@ def delete_user( self.delete( path=f"/users/{user_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9146,8 +9488,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 @@ -9171,8 +9513,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 @@ -9198,8 +9540,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 @@ -9225,8 +9567,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 @@ -9247,8 +9589,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 @@ -9272,8 +9614,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 @@ -9300,8 +9642,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 @@ -9322,8 +9664,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 @@ -9347,8 +9689,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 @@ -9369,8 +9711,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 @@ -9394,8 +9736,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 @@ -9416,8 +9758,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 @@ -9441,8 +9783,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 @@ -9463,8 +9805,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 @@ -9488,8 +9830,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 @@ -9510,8 +9852,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 @@ -9537,8 +9879,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 @@ -9561,8 +9903,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 @@ -9586,8 +9928,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 @@ -9614,8 +9956,8 @@ def create_user_credentials_api3( structure=mdls.CredentialsApi3, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9641,8 +9983,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 @@ -9665,8 +10007,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 @@ -9690,8 +10032,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 @@ -9715,8 +10057,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 @@ -9737,8 +10079,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 @@ -9764,8 +10106,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 @@ -9788,8 +10130,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 @@ -9813,8 +10155,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 @@ -9848,8 +10190,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 @@ -9872,9 +10214,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 @@ -9898,8 +10243,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 @@ -9941,9 +10286,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 @@ -9968,8 +10318,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 @@ -9995,14 +10345,14 @@ 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 - #endregion + # endregion - #region UserAttribute: Manage User Attributes + # region UserAttribute: Manage User Attributes # ### Get information about all user attributes. # @@ -10022,8 +10372,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 @@ -10054,8 +10404,8 @@ def create_user_attribute( structure=mdls.UserAttribute, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10077,8 +10427,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 @@ -10102,8 +10452,8 @@ def update_user_attribute( structure=mdls.UserAttribute, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10122,8 +10472,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 @@ -10151,8 +10501,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 @@ -10192,14 +10542,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 # @@ -10216,8 +10566,8 @@ def all_workspaces( self.get( path="/workspaces", structure=Sequence[mdls.Workspace], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10265,10 +10615,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 = Looker31SDK \ No newline at end of file + # endregion + + +LookerSDK = Looker31SDK diff --git a/python/looker_sdk/sdk/api31/models.py b/python/looker_sdk/sdk/api31/models.py index 92095fcfb..582f8b7f8 100644 --- a/python/looker_sdk/sdk/api31/models.py +++ b/python/looker_sdk/sdk/api31/models.py @@ -51,14 +51,18 @@ class AccessToken(model.Model): token_type: Type of Token expires_in: Number of seconds before the token expires """ + access_token: Optional[str] = None token_type: Optional[str] = None expires_in: Optional[int] = None - def __init__(self, *, - access_token: Optional[str] = None, - token_type: Optional[str] = None, - expires_in: Optional[int] = None): + def __init__( + self, + *, + access_token: Optional[str] = None, + token_type: Optional[str] = None, + expires_in: Optional[int] = None + ): self.access_token = access_token self.token_type = token_type self.expires_in = expires_in @@ -69,6 +73,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" @@ -86,14 +91,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[int] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - workspace_id: Optional[str] = None, - sudo_user_id: Optional[int] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + workspace_id: Optional[str] = None, + sudo_user_id: Optional[int] = None + ): self.can = can self.workspace_id = workspace_id self.sudo_user_id = sudo_user_id @@ -109,18 +118,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 @@ -137,16 +150,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 @@ -165,6 +182,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 @@ -173,14 +191,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 @@ -195,6 +216,7 @@ class Category(enum.Enum): Field category Valid values are: "parameter", "filter", "measure", "dimension". (Enum defined in LookmlModelExploreField) """ + parameter = "parameter" filter = "filter" measure = "measure" @@ -216,18 +238,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 @@ -242,12 +268,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 @@ -264,6 +289,7 @@ class ContentFavorite(model.Model): look: dashboard: """ + id: Optional[int] = None user_id: Optional[int] = None content_metadata_id: Optional[int] = None @@ -272,14 +298,17 @@ class ContentFavorite(model.Model): look: Optional["LookBasic"] = None dashboard: Optional["DashboardBase"] = None - def __init__(self, *, - id: Optional[int] = None, - user_id: Optional[int] = None, - content_metadata_id: Optional[int] = None, - look_id: Optional[int] = None, - dashboard_id: Optional[int] = None, - look: Optional["LookBasic"] = None, - dashboard: Optional["DashboardBase"] = None): + def __init__( + self, + *, + id: Optional[int] = None, + user_id: Optional[int] = None, + content_metadata_id: Optional[int] = None, + look_id: Optional[int] = None, + dashboard_id: Optional[int] = None, + look: Optional["LookBasic"] = None, + dashboard: Optional["DashboardBase"] = None + ): self.id = id self.user_id = user_id self.content_metadata_id = content_metadata_id @@ -306,6 +335,7 @@ class ContentMeta(model.Model): slug: Content Slug space_id: Id of associated space when content_type is "space" """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[int] = None name: Optional[str] = None @@ -319,19 +349,22 @@ class ContentMeta(model.Model): slug: Optional[str] = None space_id: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = None, - name: Optional[str] = None, - parent_id: Optional[int] = None, - dashboard_id: Optional[str] = None, - look_id: Optional[int] = None, - folder_id: Optional[str] = None, - content_type: Optional[str] = None, - inherits: Optional[bool] = None, - inheriting_id: Optional[int] = None, - slug: Optional[str] = None, - space_id: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = None, + name: Optional[str] = None, + parent_id: Optional[int] = None, + dashboard_id: Optional[str] = None, + look_id: Optional[int] = None, + folder_id: Optional[str] = None, + content_type: Optional[str] = None, + inherits: Optional[bool] = None, + inheriting_id: Optional[int] = None, + slug: Optional[str] = None, + space_id: Optional[str] = None + ): self.can = can self.id = id self.name = name @@ -359,6 +392,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 @@ -366,13 +400,16 @@ class ContentMetaGroupUser(model.Model): group_id: Optional[int] = None user_id: Optional[int] = 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[int] = None, - user_id: Optional[int] = 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[int] = None, + user_id: Optional[int] = None + ): self.can = can self.id = id self.content_metadata_id = content_metadata_id @@ -394,6 +431,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 @@ -403,15 +441,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 @@ -435,6 +476,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[int] = None lookml_dashboard_id: Optional[str] = None lookml_link_id: Optional[str] = None @@ -444,15 +486,18 @@ class ContentValidationAlert(model.Model): show_custom_url: Optional[bool] = None custom_title: Optional[str] = None - def __init__(self, *, - id: Optional[int] = 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[int] = 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 @@ -473,18 +518,22 @@ class ContentValidationDashboard(model.Model): title: Dashboard Title space: """ + description: Optional[str] = None id: Optional[str] = None folder: Optional["ContentValidationFolder"] = None title: Optional[str] = None space: Optional["ContentValidationSpace"] = None - def __init__(self, *, - description: Optional[str] = None, - id: Optional[str] = None, - folder: Optional["ContentValidationFolder"] = None, - title: Optional[str] = None, - space: Optional["ContentValidationSpace"] = None): + def __init__( + self, + *, + description: Optional[str] = None, + id: Optional[str] = None, + folder: Optional["ContentValidationFolder"] = None, + title: Optional[str] = None, + space: Optional["ContentValidationSpace"] = None + ): self.description = description self.id = id self.folder = folder @@ -512,6 +561,7 @@ class ContentValidationDashboardElement(model.Model): type: Type rich_content_json: JSON with all the properties required for rich editor and buttons elements """ + body_text: Optional[str] = None dashboard_id: Optional[str] = None id: Optional[str] = None @@ -528,22 +578,25 @@ class ContentValidationDashboardElement(model.Model): type: Optional[str] = None rich_content_json: 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[int] = 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): + 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[int] = 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 + ): self.body_text = body_text self.dashboard_id = dashboard_id self.id = id @@ -575,6 +628,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 @@ -585,16 +639,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 @@ -616,18 +673,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 @@ -642,12 +703,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 @@ -662,18 +722,22 @@ class ContentValidationLook(model.Model): folder: space: """ + id: Optional[int] = None title: Optional[str] = None short_url: Optional[str] = None folder: Optional["ContentValidationFolder"] = None space: Optional["ContentValidationSpace"] = None - def __init__(self, *, - id: Optional[int] = None, - title: Optional[str] = None, - short_url: Optional[str] = None, - folder: Optional["ContentValidationFolder"] = None, - space: Optional["ContentValidationSpace"] = None): + def __init__( + self, + *, + id: Optional[int] = None, + title: Optional[str] = None, + short_url: Optional[str] = None, + folder: Optional["ContentValidationFolder"] = None, + space: Optional["ContentValidationSpace"] = None + ): self.id = id self.title = title self.short_url = short_url @@ -690,16 +754,20 @@ class ContentValidationLookMLDashboard(model.Model): space_id: ID of Space space: """ + id: Optional[str] = None title: Optional[str] = None space_id: Optional[str] = None space: Optional["SpaceBase"] = None - def __init__(self, *, - id: Optional[str] = None, - title: Optional[str] = None, - space_id: Optional[str] = None, - space: Optional["SpaceBase"] = None): + def __init__( + self, + *, + id: Optional[str] = None, + title: Optional[str] = None, + space_id: Optional[str] = None, + space: Optional["SpaceBase"] = None + ): self.id = id self.title = title self.space_id = space_id @@ -713,12 +781,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 @@ -731,14 +800,18 @@ class ContentValidationScheduledPlan(model.Model): look_id: Id of a look id: Unique Id """ + name: Optional[str] = None look_id: Optional[int] = None id: Optional[int] = None - def __init__(self, *, - name: Optional[str] = None, - look_id: Optional[int] = None, - id: Optional[int] = None): + def __init__( + self, + *, + name: Optional[str] = None, + look_id: Optional[int] = None, + id: Optional[int] = None + ): self.name = name self.look_id = look_id self.id = id @@ -751,12 +824,11 @@ class ContentValidationSpace(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 @@ -776,6 +848,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 @@ -787,17 +860,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 @@ -827,6 +905,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[int] = None look_id: Optional[int] = None @@ -840,19 +919,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[int] = None, - look_id: Optional[int] = None, - dashboard_id: Optional[int] = None, - title: Optional[str] = None, - content_metadata_id: Optional[int] = None, - user_id: Optional[int] = None, - group_id: Optional[int] = 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[int] = None, + look_id: Optional[int] = None, + dashboard_id: Optional[int] = None, + title: Optional[str] = None, + content_metadata_id: Optional[int] = None, + user_id: Optional[int] = None, + group_id: Optional[int] = 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 @@ -876,16 +958,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 @@ -912,6 +998,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 @@ -928,22 +1015,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 @@ -968,12 +1058,16 @@ class CreateDashboardRenderTask(model.Model): dashboard_filters: Filter values to apply to the dashboard queries, in URL query format dashboard_style: Dashboard layout style: single_column or tiled """ + dashboard_filters: Optional[str] = None dashboard_style: Optional[str] = None - def __init__(self, *, - dashboard_filters: Optional[str] = None, - dashboard_style: Optional[str] = None): + def __init__( + self, + *, + dashboard_filters: Optional[str] = None, + dashboard_style: Optional[str] = None + ): self.dashboard_filters = dashboard_filters self.dashboard_style = dashboard_style @@ -985,12 +1079,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 @@ -1007,6 +1100,7 @@ class CreateQueryTask(model.Model): look_id: Id of look associated with query. dashboard_id: Id of dashboard associated with query. """ + query_id: int result_format: "ResultFormat" can: Optional[MutableMapping[str, bool]] = None @@ -1021,17 +1115,20 @@ class CreateQueryTask(model.Model): "source": Optional[str], "deferred": Optional[bool], "look_id": Optional[int], - "dashboard_id": Optional[str] + "dashboard_id": Optional[str], } - def __init__(self, *, - query_id: int, - result_format: "ResultFormat", - can: Optional[MutableMapping[str, bool]] = None, - source: Optional[str] = None, - deferred: Optional[bool] = None, - look_id: Optional[int] = None, - dashboard_id: Optional[str] = None): + def __init__( + self, + *, + query_id: int, + result_format: "ResultFormat", + can: Optional[MutableMapping[str, bool]] = None, + source: Optional[str] = None, + deferred: Optional[bool] = None, + look_id: Optional[int] = None, + dashboard_id: Optional[str] = None + ): self.query_id = query_id self.result_format = result_format self.can = can @@ -1048,12 +1145,11 @@ class CreateSpace(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 @@ -1072,6 +1168,7 @@ class CredentialsApi3(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 id: Optional[int] = None client_id: Optional[str] = None @@ -1080,14 +1177,17 @@ class CredentialsApi3(model.Model): type: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = None, - client_id: Optional[str] = None, - created_at: Optional[str] = None, - is_disabled: Optional[bool] = None, - type: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = None, + client_id: Optional[str] = None, + created_at: Optional[str] = None, + is_disabled: Optional[bool] = None, + type: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.id = id self.client_id = client_id @@ -1114,6 +1214,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 @@ -1127,19 +1228,22 @@ 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, - 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, + type: Optional[str] = None, + url: Optional[str] = None, + user_url: Optional[str] = None + ): self.can = can self.created_at = created_at self.email = email @@ -1168,6 +1272,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 @@ -1178,16 +1283,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[int] = 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[int] = 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 @@ -1213,6 +1321,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 @@ -1223,16 +1332,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 @@ -1258,6 +1370,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 @@ -1268,16 +1381,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 @@ -1303,6 +1419,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 @@ -1313,16 +1430,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 @@ -1347,6 +1467,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 @@ -1356,15 +1477,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 @@ -1388,6 +1512,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 @@ -1397,15 +1522,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 @@ -1429,6 +1557,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 @@ -1436,13 +1565,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 @@ -1461,18 +1593,22 @@ 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. """ + can: Optional[MutableMapping[str, bool]] = None enabled: Optional[bool] = None content: Optional[str] = None subject: Optional[str] = None header: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - enabled: Optional[bool] = None, - content: Optional[str] = None, - subject: Optional[str] = None, - header: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + enabled: Optional[bool] = None, + content: Optional[str] = None, + subject: Optional[str] = None, + header: Optional[str] = None + ): self.can = can self.enabled = enabled self.content = content @@ -1535,6 +1671,7 @@ class Dashboard(model.Model): view_count: Number of times viewed in the Looker web UI appearance: """ + can: Optional[MutableMapping[str, bool]] = None content_favorite_id: Optional[int] = None content_metadata_id: Optional[int] = None @@ -1586,57 +1723,60 @@ class Dashboard(model.Model): view_count: Optional[int] = None appearance: Optional["DashboardAppearance"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_favorite_id: Optional[int] = None, - content_metadata_id: Optional[int] = 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[int] = None, - slug: Optional[str] = None, - preferred_viewer: Optional[str] = None, - space: Optional["SpaceBase"] = None, - alert_sync_with_dashboard_filter_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[int] = 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[int] = 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, - space_id: Optional[str] = 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): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_favorite_id: Optional[int] = None, + content_metadata_id: Optional[int] = 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[int] = None, + slug: Optional[str] = None, + preferred_viewer: Optional[str] = None, + space: Optional["SpaceBase"] = None, + alert_sync_with_dashboard_filter_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[int] = 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[int] = 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, + space_id: Optional[str] = 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 + ): self.can = can self.content_favorite_id = content_favorite_id self.content_metadata_id = content_metadata_id @@ -1654,7 +1794,9 @@ def __init__(self, *, self.slug = slug self.preferred_viewer = preferred_viewer self.space = space - 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.background_color = background_color self.created_at = created_at self.crossfilter_enabled = crossfilter_enabled @@ -1696,12 +1838,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 @@ -1718,6 +1864,7 @@ class DashboardAppearance(model.Model): tile_shadow: Tile shadow on/off key_color: Key color """ + page_side_margins: Optional[int] = None page_background_color: Optional[str] = None tile_title_alignment: Optional[str] = None @@ -1726,14 +1873,17 @@ class DashboardAppearance(model.Model): tile_shadow: Optional[bool] = None key_color: Optional[str] = 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): + 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 + ): self.page_side_margins = page_side_margins self.page_background_color = page_background_color self.tile_title_alignment = tile_title_alignment @@ -1765,6 +1915,7 @@ class DashboardBase(model.Model): preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) space: """ + can: Optional[MutableMapping[str, bool]] = None content_favorite_id: Optional[int] = None content_metadata_id: Optional[int] = None @@ -1783,24 +1934,27 @@ class DashboardBase(model.Model): preferred_viewer: Optional[str] = None space: Optional["SpaceBase"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_favorite_id: Optional[int] = None, - content_metadata_id: Optional[int] = 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[int] = None, - slug: Optional[str] = None, - preferred_viewer: Optional[str] = None, - space: Optional["SpaceBase"] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_favorite_id: Optional[int] = None, + content_metadata_id: Optional[int] = 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[int] = None, + slug: Optional[str] = None, + preferred_viewer: Optional[str] = None, + space: Optional["SpaceBase"] = None + ): self.can = can self.content_favorite_id = content_favorite_id self.content_metadata_id = content_metadata_id @@ -1854,6 +2008,7 @@ class DashboardElement(model.Model): title_text_as_html: Text tile title text as Html subtitle_text_as_html: Text tile subtitle text as Html """ + can: Optional[MutableMapping[str, bool]] = None body_text: Optional[str] = None body_text_as_html: Optional[str] = None @@ -1884,36 +2039,39 @@ class DashboardElement(model.Model): title_text_as_html: Optional[str] = None subtitle_text_as_html: Optional[str] = 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, - 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[int] = None, - refresh_interval: Optional[str] = None, - refresh_interval_to_i: Optional[int] = None, - result_maker: Optional["ResultMakerWithIdVisConfigAndDynamicFields"] = None, - result_maker_id: Optional[int] = 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): + 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, + 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[int] = None, + refresh_interval: Optional[str] = None, + refresh_interval_to_i: Optional[int] = None, + result_maker: Optional["ResultMakerWithIdVisConfigAndDynamicFields"] = None, + result_maker_id: Optional[int] = 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 + ): self.can = can self.body_text = body_text self.body_text_as_html = body_text_as_html @@ -1966,6 +2124,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 @@ -1983,23 +2142,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 @@ -2033,6 +2195,7 @@ class DashboardLayout(model.Model): dashboard_title: Title extracted from the dashboard this layout represents. dashboard_layout_components: Components """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None dashboard_id: Optional[str] = None @@ -2044,17 +2207,22 @@ class DashboardLayout(model.Model): dashboard_title: Optional[str] = None dashboard_layout_components: Optional[Sequence["DashboardLayoutComponent"]] = 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): + 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 + ): self.can = can self.id = id self.dashboard_id = dashboard_id @@ -2084,6 +2252,7 @@ class DashboardLayoutComponent(model.Model): element_title_hidden: Whether or not the dashboard element title is displayed. vis_type: Visualization type, extracted from a query's vis_config """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None dashboard_layout_id: Optional[str] = None @@ -2097,19 +2266,22 @@ class DashboardLayoutComponent(model.Model): element_title_hidden: Optional[bool] = None vis_type: Optional[str] = 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): + 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 + ): self.can = can self.id = id self.dashboard_layout_id = dashboard_layout_id @@ -2132,14 +2304,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 @@ -2152,12 +2328,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 @@ -2176,6 +2356,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 @@ -2186,16 +2367,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 @@ -2214,12 +2398,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 @@ -2231,12 +2414,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 @@ -2251,18 +2438,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 @@ -2277,12 +2468,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 @@ -2302,6 +2494,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[int] = None @@ -2313,17 +2506,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[int] = 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[int] = 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 @@ -2380,6 +2576,7 @@ class DBConnection(model.Model): managed: Is this connection created and managed by Looker uses_tns: Enable Transparent Network Substrate (TNS) connections """ + can: Optional[MutableMapping[str, bool]] = None name: Optional[str] = None dialect: Optional["Dialect"] = None @@ -2420,46 +2617,49 @@ class DBConnection(model.Model): managed: Optional[bool] = None uses_tns: 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, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - uses_oauth: 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_billing_gigabytes: Optional[str] = None, - ssl: Optional[bool] = None, - verify_ssl: Optional[bool] = None, - tmp_db_name: 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, - uses_tns: 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, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + uses_oauth: 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_billing_gigabytes: Optional[str] = None, + ssl: Optional[bool] = None, + verify_ssl: Optional[bool] = None, + tmp_db_name: 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, + uses_tns: Optional[bool] = None + ): self.can = can self.name = name self.dialect = dialect @@ -2511,18 +2711,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 @@ -2547,6 +2751,7 @@ class DBConnectionOverride(model.Model): jdbc_additional_params: Additional params to add to JDBC connection string after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature """ + context: Optional[str] = None host: Optional[str] = None port: Optional[str] = None @@ -2560,19 +2765,22 @@ class DBConnectionOverride(model.Model): jdbc_additional_params: Optional[str] = None after_connect_statements: Optional[str] = None - def __init__(self, *, - context: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - has_password: Optional[bool] = None, - certificate: Optional[str] = None, - file_type: Optional[str] = None, - database: Optional[str] = None, - schema: Optional[str] = None, - jdbc_additional_params: Optional[str] = None, - after_connect_statements: Optional[str] = None): + def __init__( + self, + *, + context: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + has_password: Optional[bool] = None, + certificate: Optional[str] = None, + file_type: Optional[str] = None, + database: Optional[str] = None, + schema: Optional[str] = None, + jdbc_additional_params: Optional[str] = None, + after_connect_statements: Optional[str] = None + ): self.context = context self.host = host self.port = port @@ -2597,18 +2805,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 @@ -2625,16 +2837,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[int] = None success: Optional[bool] = None - def __init__(self, *, - name: Optional[str] = None, - installation_target_id: Optional[str] = None, - installation_id: Optional[int] = None, - success: Optional[bool] = None): + def __init__( + self, + *, + name: Optional[str] = None, + installation_target_id: Optional[str] = None, + installation_id: Optional[int] = None, + success: Optional[bool] = None + ): self.name = name self.installation_target_id = installation_target_id self.installation_id = installation_id @@ -2647,10 +2863,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 @@ -2659,6 +2875,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" @@ -2689,6 +2906,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 @@ -2704,21 +2922,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 @@ -2727,7 +2948,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 @@ -2748,6 +2971,7 @@ class DialectInfo(model.Model): name: The name of the dialect supported_options: """ + can: Optional[MutableMapping[str, bool]] = None default_max_connections: Optional[str] = None default_port: Optional[str] = None @@ -2757,15 +2981,18 @@ class DialectInfo(model.Model): name: Optional[str] = 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, - installed: Optional[bool] = None, - label: Optional[str] = None, - label_for_database_equivalent: Optional[str] = None, - name: Optional[str] = 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, + installed: Optional[bool] = None, + label: Optional[str] = None, + label_for_database_equivalent: Optional[str] = None, + name: Optional[str] = None, + supported_options: Optional["DialectInfoOptions"] = None + ): self.can = can self.default_max_connections = default_max_connections self.default_port = default_port @@ -2803,6 +3030,7 @@ class DialectInfoOptions(model.Model): username_required: Username is required can: Operations the current user is able to perform on this object """ + additional_params: Optional[bool] = None after_connect_statements: Optional[bool] = None analytical_view_dataset: Optional[bool] = None @@ -2826,29 +3054,32 @@ class DialectInfoOptions(model.Model): username_required: Optional[bool] = None can: Optional[MutableMapping[str, 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, - disable_context_comment: Optional[bool] = None, - host: Optional[bool] = None, - instance_name: 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, - can: Optional[MutableMapping[str, 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, + disable_context_comment: Optional[bool] = None, + host: Optional[bool] = None, + instance_name: 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, + can: Optional[MutableMapping[str, bool]] = None + ): self.additional_params = additional_params self.after_connect_statements = after_connect_statements self.analytical_view_dataset = analytical_view_dataset @@ -2879,10 +3110,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 @@ -2892,10 +3123,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 @@ -2908,16 +3139,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 @@ -2943,6 +3178,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 @@ -2958,21 +3194,24 @@ class EmbedSsoParams(model.Model): secret_id: Optional[int] = 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[int]] = None, - external_group_id: Optional[str] = None, - user_attributes: Optional[MutableMapping[str, Any]] = None, - secret_id: Optional[int] = 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[int]] = None, + external_group_id: Optional[str] = None, + user_attributes: Optional[MutableMapping[str, Any]] = None, + secret_id: Optional[int] = None, + embed_domain: Optional[str] = None + ): self.target_url = target_url self.session_length = session_length self.force_logout_login = force_logout_login @@ -2995,10 +3234,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 @@ -3009,12 +3248,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 @@ -3024,6 +3262,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" @@ -3056,6 +3295,7 @@ class Folder(model.Model): dashboards: Dashboards looks: Looks """ + name: str parent_id: Optional[str] = None id: Optional[str] = None @@ -3075,25 +3315,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[int] = None, - created_at: Optional[datetime.datetime] = None, - creator_id: Optional[int] = 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[int] = None, + created_at: Optional[datetime.datetime] = None, + creator_id: Optional[int] = 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 @@ -3135,6 +3378,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 @@ -3152,23 +3396,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[int] = None, - created_at: Optional[datetime.datetime] = None, - creator_id: Optional[int] = 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[int] = None, + created_at: Optional[datetime.datetime] = None, + creator_id: Optional[int] = 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 @@ -3192,6 +3439,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" @@ -3223,6 +3471,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 @@ -3241,24 +3490,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 @@ -3286,14 +3538,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 @@ -3308,16 +3564,20 @@ 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 @@ -3334,18 +3594,22 @@ class GitStatus(model.Model): text: Git description of the action can: Operations the current user is able to perform on this object """ + action: Optional[str] = None conflict: Optional[bool] = None revertable: Optional[bool] = None text: Optional[str] = None can: Optional[MutableMapping[str, bool]] = None - def __init__(self, *, - action: Optional[str] = None, - conflict: Optional[bool] = None, - revertable: Optional[bool] = None, - text: Optional[str] = None, - can: Optional[MutableMapping[str, bool]] = None): + def __init__( + self, + *, + action: Optional[str] = None, + conflict: Optional[bool] = None, + revertable: Optional[bool] = None, + text: Optional[str] = None, + can: Optional[MutableMapping[str, bool]] = None + ): self.action = action self.conflict = conflict self.revertable = revertable @@ -3367,6 +3631,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 @@ -3377,16 +3642,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[int] = 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[int] = 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 @@ -3406,10 +3674,10 @@ class GroupIdForGroupInclusion(model.Model): Attributes: group_id: Id of group """ + group_id: Optional[int] = None - def __init__(self, *, - group_id: Optional[int] = None): + def __init__(self, *, group_id: Optional[int] = None): self.group_id = group_id @@ -3421,10 +3689,10 @@ class GroupIdForGroupUserInclusion(model.Model): Attributes: user_id: Id of user """ + user_id: Optional[int] = None - def __init__(self, *, - user_id: Optional[int] = None): + def __init__(self, *, user_id: Optional[int] = None): self.user_id = user_id @@ -3445,6 +3713,7 @@ class Homepage(model.Model): user_id: User id of homepage creator primary_homepage: Whether the homepage is the primary homepage or not """ + can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[int] = None created_at: Optional[datetime.datetime] = None @@ -3458,19 +3727,22 @@ class Homepage(model.Model): user_id: Optional[int] = None primary_homepage: Optional[bool] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_metadata_id: Optional[int] = None, - created_at: Optional[datetime.datetime] = None, - deleted_at: Optional[datetime.datetime] = None, - description: Optional[str] = None, - homepage_sections: Optional[Sequence["HomepageSection"]] = None, - id: Optional[int] = None, - section_order: Optional[Sequence[int]] = None, - title: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None, - user_id: Optional[int] = None, - primary_homepage: Optional[bool] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[int] = None, + created_at: Optional[datetime.datetime] = None, + deleted_at: Optional[datetime.datetime] = None, + description: Optional[str] = None, + homepage_sections: Optional[Sequence["HomepageSection"]] = None, + id: Optional[int] = None, + section_order: Optional[Sequence[int]] = None, + title: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None, + user_id: Optional[int] = None, + primary_homepage: Optional[bool] = None + ): self.can = can self.content_metadata_id = content_metadata_id self.created_at = created_at @@ -3518,6 +3790,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[int] = None @@ -3547,35 +3820,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[int] = None, - content_metadata_id: Optional[int] = 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[int] = None, - description: Optional[str] = None, - favorite_count: Optional[int] = None, - homepage_section_id: Optional[int] = None, - id: Optional[int] = None, - image_url: Optional[str] = None, - location: Optional[str] = None, - look_id: Optional[int] = 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[int] = None, + content_metadata_id: Optional[int] = 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[int] = None, + description: Optional[str] = None, + favorite_count: Optional[int] = None, + homepage_section_id: Optional[int] = None, + id: Optional[int] = None, + image_url: Optional[str] = None, + location: Optional[str] = None, + look_id: Optional[int] = 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 @@ -3624,6 +3900,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 @@ -3638,20 +3915,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[int] = None, - homepage_items: Optional[Sequence["HomepageItem"]] = None, - id: Optional[int] = None, - is_header: Optional[bool] = None, - item_order: Optional[Sequence[int]] = 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[int] = None, + homepage_items: Optional[Sequence["HomepageItem"]] = None, + id: Optional[int] = None, + is_header: Optional[bool] = None, + item_order: Optional[Sequence[int]] = 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 @@ -3677,18 +3957,22 @@ class ImportedProject(model.Model): is_remote: Flag signifying if a dependency is remote or local can: Operations the current user is able to perform on this object """ + name: Optional[str] = None url: Optional[str] = None ref: Optional[str] = None is_remote: Optional[bool] = None can: Optional[MutableMapping[str, bool]] = None - def __init__(self, *, - name: Optional[str] = None, - url: Optional[str] = None, - ref: Optional[str] = None, - is_remote: Optional[bool] = None, - can: Optional[MutableMapping[str, bool]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + url: Optional[str] = None, + ref: Optional[str] = None, + is_remote: Optional[bool] = None, + can: Optional[MutableMapping[str, bool]] = None + ): self.name = name self.url = url self.ref = ref @@ -3719,6 +4003,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[int] = None @@ -3729,7 +4014,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 @@ -3738,25 +4025,32 @@ class Integration(model.Model): delegate_oauth: Optional[bool] = None installed_delegate_oauth_targets: Optional[Sequence[int]] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - integration_hub_id: Optional[int] = 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[int]] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + integration_hub_id: Optional[int] = 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[int]] = None + ): self.can = can self.id = id self.integration_hub_id = integration_hub_id @@ -3793,6 +4087,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[int] = None url: Optional[str] = None @@ -3805,18 +4100,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[int] = 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[int] = 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 @@ -3845,6 +4143,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 @@ -3856,17 +4155,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 @@ -3887,14 +4189,18 @@ class IntegrationRequiredField(model.Model): any_tag: If present, supercedes 'tag' and matches a field that has any of the provided tags. all_tags: If present, supercedes '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 @@ -3908,14 +4214,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 @@ -3928,12 +4238,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 @@ -3946,14 +4260,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 @@ -4007,6 +4325,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 @@ -4051,50 +4370,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[int]] = None, - default_new_user_groups: Optional[Sequence["Group"]] = None, - default_new_user_role_ids: Optional[Sequence[int]] = 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[int]] = None, + default_new_user_groups: Optional[Sequence["Group"]] = None, + default_new_user_role_ids: Optional[Sequence[int]] = 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 @@ -4148,14 +4470,18 @@ class LDAPConfigTestIssue(model.Model): message: Message describing the issue can: Operations the current user is able to perform on this object """ + severity: Optional[str] = None message: Optional[str] = None can: Optional[MutableMapping[str, bool]] = None - def __init__(self, *, - severity: Optional[str] = None, - message: Optional[str] = None, - can: Optional[MutableMapping[str, bool]] = None): + def __init__( + self, + *, + severity: Optional[str] = None, + message: Optional[str] = None, + can: Optional[MutableMapping[str, bool]] = None + ): self.severity = severity self.message = message self.can = can @@ -4173,6 +4499,7 @@ class LDAPConfigTestResult(model.Model): user: url: Link to ldap config """ + details: Optional[str] = None issues: Optional[Sequence["LDAPConfigTestIssue"]] = None message: Optional[str] = None @@ -4181,14 +4508,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 @@ -4209,6 +4539,7 @@ class LDAPGroupRead(model.Model): roles: Looker Roles url: Link to ldap config """ + id: Optional[int] = None looker_group_id: Optional[int] = None looker_group_name: Optional[str] = None @@ -4216,13 +4547,16 @@ class LDAPGroupRead(model.Model): roles: Optional[Sequence["Role"]] = None url: Optional[str] = None - def __init__(self, *, - id: Optional[int] = None, - looker_group_id: Optional[int] = 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[int] = None, + looker_group_id: Optional[int] = 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 @@ -4242,6 +4576,7 @@ class LDAPGroupWrite(model.Model): role_ids: Looker Role Ids url: Link to ldap config """ + id: Optional[int] = None looker_group_id: Optional[int] = None looker_group_name: Optional[str] = None @@ -4249,13 +4584,16 @@ class LDAPGroupWrite(model.Model): role_ids: Optional[Sequence[int]] = None url: Optional[str] = None - def __init__(self, *, - id: Optional[int] = None, - looker_group_id: Optional[int] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - role_ids: Optional[Sequence[int]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + id: Optional[int] = None, + looker_group_id: Optional[int] = None, + looker_group_name: Optional[str] = None, + name: Optional[str] = None, + role_ids: Optional[Sequence[int]] = None, + url: Optional[str] = None + ): self.id = id self.looker_group_id = looker_group_id self.looker_group_name = looker_group_name @@ -4280,6 +4618,7 @@ class LDAPUser(model.Model): can: Operations the current user is able to perform on this object url: Link to ldap config """ + all_emails: Optional[Sequence[str]] = None attributes: Optional[MutableMapping[str, Any]] = None email: Optional[str] = None @@ -4292,18 +4631,21 @@ class LDAPUser(model.Model): can: Optional[MutableMapping[str, bool]] = 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, - can: Optional[MutableMapping[str, bool]] = 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, + can: Optional[MutableMapping[str, bool]] = None, + url: Optional[str] = None + ): self.all_emails = all_emails self.attributes = attributes self.email = email @@ -4326,16 +4668,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 @@ -4351,16 +4697,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[int]] = None url: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - required: Optional[bool] = None, - user_attribute_ids: Optional[Sequence[int]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + required: Optional[bool] = None, + user_attribute_ids: Optional[Sequence[int]] = None, + url: Optional[str] = None + ): self.name = name self.required = required self.user_attribute_ids = user_attribute_ids @@ -4385,6 +4735,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 @@ -4399,20 +4750,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 @@ -4436,14 +4790,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 @@ -4457,14 +4815,18 @@ class LocalizationSettings(model.Model): localization_level: Localization level - strict or permissive can: Operations the current user is able to perform on this object """ + default_locale: Optional[str] = None localization_level: Optional[str] = None can: Optional[MutableMapping[str, bool]] = None - def __init__(self, *, - default_locale: Optional[str] = None, - localization_level: Optional[str] = None, - can: Optional[MutableMapping[str, bool]] = None): + def __init__( + self, + *, + default_locale: Optional[str] = None, + localization_level: Optional[str] = None, + can: Optional[MutableMapping[str, bool]] = None + ): self.default_locale = default_locale self.localization_level = localization_level self.can = can @@ -4508,6 +4870,7 @@ class Look(model.Model): space_id: Space Id space: """ + can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[int] = None id: Optional[int] = None @@ -4542,40 +4905,43 @@ class Look(model.Model): space_id: Optional[str] = None space: Optional["SpaceBase"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_metadata_id: Optional[int] = None, - id: Optional[int] = None, - title: Optional[str] = None, - content_favorite_id: Optional[int] = None, - created_at: Optional[datetime.datetime] = None, - deleted: Optional[bool] = None, - deleted_at: Optional[datetime.datetime] = None, - deleter_id: Optional[int] = 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[int] = 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[int] = None, - short_url: Optional[str] = None, - folder: Optional["FolderBase"] = None, - folder_id: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None, - user_id: Optional[int] = None, - view_count: Optional[int] = None, - user: Optional["UserIdOnly"] = None, - space_id: Optional[str] = None, - space: Optional["SpaceBase"] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[int] = None, + id: Optional[int] = None, + title: Optional[str] = None, + content_favorite_id: Optional[int] = None, + created_at: Optional[datetime.datetime] = None, + deleted: Optional[bool] = None, + deleted_at: Optional[datetime.datetime] = None, + deleter_id: Optional[int] = 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[int] = 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[int] = None, + short_url: Optional[str] = None, + folder: Optional["FolderBase"] = None, + folder_id: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None, + user_id: Optional[int] = None, + view_count: Optional[int] = None, + user: Optional["UserIdOnly"] = None, + space_id: Optional[str] = None, + space: Optional["SpaceBase"] = None + ): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -4620,16 +4986,20 @@ class LookBasic(model.Model): id: Unique Id title: Look Title """ + can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[int] = None id: Optional[int] = None title: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_metadata_id: Optional[int] = None, - id: Optional[int] = None, - title: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[int] = None, + id: Optional[int] = None, + title: Optional[str] = None + ): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -4649,6 +5019,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 @@ -4658,15 +5029,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 @@ -4716,6 +5090,7 @@ class LookmlModelExplore(model.Model): group_label: Label used to group explores in the navigation menus 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. """ + id: Optional[str] = None name: Optional[str] = None description: Optional[str] = None @@ -4741,7 +5116,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 @@ -4749,43 +5126,52 @@ 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 - - def __init__(self, *, - id: Optional[str] = None, - name: Optional[str] = None, - description: Optional[str] = None, - label: Optional[str] = None, - scopes: Optional[Sequence[str]] = None, - can_total: Optional[bool] = 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, - supports_cost_estimate: Optional[bool] = None, - connection_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): + supported_measure_types: Optional[ + Sequence["LookmlModelExploreSupportedMeasureType"] + ] = None + + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + description: Optional[str] = None, + label: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + can_total: Optional[bool] = 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, + supports_cost_estimate: Optional[bool] = None, + connection_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 + ): self.id = id self.name = name self.description = description @@ -4829,12 +5215,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 @@ -4846,12 +5233,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 @@ -4863,12 +5249,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 @@ -4880,12 +5265,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 @@ -4899,16 +5283,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 @@ -4972,6 +5360,7 @@ class LookmlModelExploreField(model.Model): dynamic: Whether this field was specified in "dynamic_fields" and is not part of the model. week_start_day: The name of the starting day of the week. Valid values are: "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday". """ + align: Optional["Align"] = None can_filter: Optional[bool] = None category: Optional["Category"] = None @@ -5025,59 +5414,64 @@ class LookmlModelExploreField(model.Model): dynamic: Optional[bool] = None week_start_day: Optional["WeekStartDay"] = None - def __init__(self, *, - align: Optional["Align"] = 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, - 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, - 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, - map_layer: Optional["LookmlModelExploreFieldMapLayer"] = None, - measure: Optional[bool] = None, - name: Optional[str] = None, - strict_value_format: Optional[bool] = None, - parameter: Optional[bool] = 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, - tags: Optional[Sequence[str]] = None, - type: Optional[str] = None, - user_attribute_filter_types: Optional[Sequence["UserAttributeFilterTypes"]] = None, - value_format: Optional[str] = None, - view: Optional[str] = None, - view_label: Optional[str] = None, - dynamic: Optional[bool] = None, - week_start_day: Optional["WeekStartDay"] = None): + def __init__( + self, + *, + align: Optional["Align"] = 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, + 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, + 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, + map_layer: Optional["LookmlModelExploreFieldMapLayer"] = None, + measure: Optional[bool] = None, + name: Optional[str] = None, + strict_value_format: Optional[bool] = None, + parameter: Optional[bool] = 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, + tags: Optional[Sequence[str]] = None, + type: Optional[str] = None, + user_attribute_filter_types: Optional[ + Sequence["UserAttributeFilterTypes"] + ] = None, + value_format: Optional[str] = None, + view: Optional[str] = None, + view_label: Optional[str] = None, + dynamic: Optional[bool] = None, + week_start_day: Optional["WeekStartDay"] = None + ): self.align = align self.can_filter = can_filter self.category = category @@ -5139,12 +5533,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 @@ -5164,6 +5557,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 @@ -5175,17 +5569,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 @@ -5205,12 +5602,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 @@ -5224,16 +5620,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 @@ -5247,12 +5647,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 @@ -5264,12 +5663,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 @@ -5292,6 +5690,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 @@ -5306,20 +5705,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 @@ -5342,12 +5744,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 @@ -5359,12 +5762,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 @@ -5380,6 +5787,7 @@ class LookmlModelNavExplore(model.Model): group_label: Label used to group explores in the navigation menus can: Operations the current user is able to perform on this object """ + name: Optional[str] = None description: Optional[str] = None label: Optional[str] = None @@ -5387,13 +5795,16 @@ class LookmlModelNavExplore(model.Model): group_label: Optional[str] = None can: Optional[MutableMapping[str, bool]] = 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, - can: Optional[MutableMapping[str, bool]] = 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, + can: Optional[MutableMapping[str, bool]] = None + ): self.name = name self.description = description self.label = label @@ -5414,6 +5825,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 @@ -5422,14 +5834,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 @@ -5452,6 +5867,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 @@ -5461,15 +5877,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 @@ -5487,12 +5906,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 @@ -5536,6 +5954,7 @@ class LookWithDashboards(model.Model): space: dashboards: Dashboards """ + can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[int] = None id: Optional[int] = None @@ -5571,41 +5990,44 @@ class LookWithDashboards(model.Model): space: Optional["SpaceBase"] = None dashboards: Optional[Sequence["DashboardBase"]] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_metadata_id: Optional[int] = None, - id: Optional[int] = None, - title: Optional[str] = None, - content_favorite_id: Optional[int] = None, - created_at: Optional[datetime.datetime] = None, - deleted: Optional[bool] = None, - deleted_at: Optional[datetime.datetime] = None, - deleter_id: Optional[int] = 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[int] = 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[int] = None, - short_url: Optional[str] = None, - folder: Optional["FolderBase"] = None, - folder_id: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None, - user_id: Optional[int] = None, - view_count: Optional[int] = None, - user: Optional["UserIdOnly"] = None, - space_id: Optional[str] = None, - space: Optional["SpaceBase"] = None, - dashboards: Optional[Sequence["DashboardBase"]] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[int] = None, + id: Optional[int] = None, + title: Optional[str] = None, + content_favorite_id: Optional[int] = None, + created_at: Optional[datetime.datetime] = None, + deleted: Optional[bool] = None, + deleted_at: Optional[datetime.datetime] = None, + deleter_id: Optional[int] = 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[int] = 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[int] = None, + short_url: Optional[str] = None, + folder: Optional["FolderBase"] = None, + folder_id: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None, + user_id: Optional[int] = None, + view_count: Optional[int] = None, + user: Optional["UserIdOnly"] = None, + space_id: Optional[str] = None, + space: Optional["SpaceBase"] = None, + dashboards: Optional[Sequence["DashboardBase"]] = None + ): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -5682,6 +6104,7 @@ class LookWithQuery(model.Model): query: url: Url """ + can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[int] = None id: Optional[int] = None @@ -5718,42 +6141,45 @@ 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[int] = None, - id: Optional[int] = None, - title: Optional[str] = None, - content_favorite_id: Optional[int] = None, - created_at: Optional[datetime.datetime] = None, - deleted: Optional[bool] = None, - deleted_at: Optional[datetime.datetime] = None, - deleter_id: Optional[int] = 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[int] = 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[int] = None, - short_url: Optional[str] = None, - folder: Optional["FolderBase"] = None, - folder_id: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None, - user_id: Optional[int] = None, - view_count: Optional[int] = None, - user: Optional["UserIdOnly"] = None, - space_id: Optional[str] = None, - space: Optional["SpaceBase"] = None, - query: Optional["Query"] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[int] = None, + id: Optional[int] = None, + title: Optional[str] = None, + content_favorite_id: Optional[int] = None, + created_at: Optional[datetime.datetime] = None, + deleted: Optional[bool] = None, + deleted_at: Optional[datetime.datetime] = None, + deleter_id: Optional[int] = 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[int] = 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[int] = None, + short_url: Optional[str] = None, + folder: Optional["FolderBase"] = None, + folder_id: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None, + user_id: Optional[int] = None, + view_count: Optional[int] = None, + user: Optional["UserIdOnly"] = None, + space_id: Optional[str] = None, + space: Optional["SpaceBase"] = None, + query: Optional["Query"] = None, + url: Optional[str] = None + ): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -5800,16 +6226,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 @@ -5823,12 +6253,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 @@ -5840,12 +6274,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 @@ -5865,6 +6303,7 @@ class MergeQuery(model.Model): total: Total vis_config: Visualization Config """ + can: Optional[MutableMapping[str, bool]] = None column_limit: Optional[str] = None dynamic_fields: Optional[str] = None @@ -5876,17 +6315,20 @@ class MergeQuery(model.Model): total: Optional[bool] = 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[int] = None, - sorts: Optional[Sequence[str]] = None, - source_queries: Optional[Sequence["MergeQuerySourceQuery"]] = None, - total: Optional[bool] = 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[int] = None, + sorts: Optional[Sequence[str]] = None, + source_queries: Optional[Sequence["MergeQuerySourceQuery"]] = None, + total: Optional[bool] = None, + vis_config: Optional[MutableMapping[str, Any]] = None + ): self.can = can self.column_limit = column_limit self.dynamic_fields = dynamic_fields @@ -5907,14 +6349,18 @@ class MergeQuerySourceQuery(model.Model): name: Display name query_id: Id of the query to merge """ + merge_fields: Optional[Sequence["MergeFields"]] = None name: Optional[str] = None query_id: Optional[int] = None - def __init__(self, *, - merge_fields: Optional[Sequence["MergeFields"]] = None, - name: Optional[str] = None, - query_id: Optional[int] = None): + def __init__( + self, + *, + merge_fields: Optional[Sequence["MergeFields"]] = None, + name: Optional[str] = None, + query_id: Optional[int] = None + ): self.merge_fields = merge_fields self.name = name self.query_id = query_id @@ -5932,6 +6378,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 @@ -5940,14 +6387,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[int] = 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[int] = 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 @@ -5964,12 +6414,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 @@ -5979,6 +6430,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" @@ -6034,6 +6486,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 @@ -6068,40 +6521,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[int]] = None, - default_new_user_groups: Optional[Sequence["Group"]] = None, - default_new_user_role_ids: Optional[Sequence[int]] = 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[int] = 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[int]] = None, + default_new_user_groups: Optional[Sequence["Group"]] = None, + default_new_user_role_ids: Optional[Sequence[int]] = 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[int] = 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 @@ -6147,18 +6603,22 @@ class OIDCGroupRead(model.Model): name: Name of group in OIDC roles: Looker Roles """ + id: Optional[int] = None looker_group_id: Optional[int] = None looker_group_name: Optional[str] = None name: Optional[str] = None roles: Optional[Sequence["Role"]] = None - def __init__(self, *, - id: Optional[int] = None, - looker_group_id: Optional[int] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - roles: Optional[Sequence["Role"]] = None): + def __init__( + self, + *, + id: Optional[int] = None, + looker_group_id: Optional[int] = 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 @@ -6177,6 +6637,7 @@ class OIDCGroupWrite(model.Model): role_ids: Looker Role Ids can: Operations the current user is able to perform on this object """ + id: Optional[int] = None looker_group_id: Optional[int] = None looker_group_name: Optional[str] = None @@ -6184,13 +6645,16 @@ class OIDCGroupWrite(model.Model): role_ids: Optional[Sequence[int]] = None can: Optional[MutableMapping[str, bool]] = None - def __init__(self, *, - id: Optional[int] = None, - looker_group_id: Optional[int] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - role_ids: Optional[Sequence[int]] = None, - can: Optional[MutableMapping[str, bool]] = None): + def __init__( + self, + *, + id: Optional[int] = None, + looker_group_id: Optional[int] = None, + looker_group_name: Optional[str] = None, + name: Optional[str] = None, + role_ids: Optional[Sequence[int]] = None, + can: Optional[MutableMapping[str, bool]] = None + ): self.id = id self.looker_group_id = looker_group_id self.looker_group_name = looker_group_name @@ -6207,14 +6671,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 @@ -6229,16 +6697,20 @@ class OIDCUserAttributeWrite(model.Model): user_attribute_ids: Looker User Attribute Ids can: Operations the current user is able to perform on this object """ + name: Optional[str] = None required: Optional[bool] = None user_attribute_ids: Optional[Sequence[int]] = None can: Optional[MutableMapping[str, bool]] = None - def __init__(self, *, - name: Optional[str] = None, - required: Optional[bool] = None, - user_attribute_ids: Optional[Sequence[int]] = None, - can: Optional[MutableMapping[str, bool]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + required: Optional[bool] = None, + user_attribute_ids: Optional[Sequence[int]] = None, + can: Optional[MutableMapping[str, bool]] = None + ): self.name = name self.required = required self.user_attribute_ids = user_attribute_ids @@ -6255,18 +6727,22 @@ class PasswordConfig(model.Model): require_upperlower: Require at least one uppercase and one lowercase letter require_special: Require at least one special character """ + 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 - 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): + 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 + ): self.can = can self.min_length = min_length self.require_numeric = require_numeric @@ -6283,16 +6759,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 @@ -6311,6 +6791,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 @@ -6319,14 +6800,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[int] = 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[int] = 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 @@ -6341,6 +6825,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" @@ -6376,6 +6861,7 @@ class Project(model.Model): 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). is_example: If true the project is an example project and cannot be modified """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None name: Optional[str] = None @@ -6398,28 +6884,31 @@ class Project(model.Model): allow_warnings: Optional[bool] = None is_example: Optional[bool] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - name: Optional[str] = None, - uses_git: 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): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + name: Optional[str] = None, + uses_git: 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 + ): self.can = can self.id = id self.name = name @@ -6460,6 +6949,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 @@ -6473,19 +6963,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 @@ -6514,6 +7007,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 @@ -6524,16 +7018,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 @@ -6554,16 +7051,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 @@ -6580,18 +7081,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 @@ -6612,6 +7117,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 @@ -6621,15 +7127,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 @@ -6645,6 +7154,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" @@ -6688,6 +7198,7 @@ class Query(model.Model): has_table_calculations: Has Table Calculations runtime: (DEPRECATED) Runtime (Deprecated) """ + model: str view: str can: Optional[MutableMapping[str, bool]] = None @@ -6716,34 +7227,37 @@ class Query(model.Model): has_table_calculations: Optional[bool] = None runtime: Optional[float] = None - def __init__(self, *, - model: str, - view: str, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = 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, - runtime: Optional[float] = None): + def __init__( + self, + *, + model: str, + view: str, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = 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, + runtime: Optional[float] = None + ): self.model = model self.view = view self.can = can @@ -6797,6 +7311,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[int] = None @@ -6817,26 +7332,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[int] = 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[int] = 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[int] = 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[int] = None, + dashboard_id: Optional[str] = None, + result_format: Optional[str] = None + ): self.can = can self.id = id self.query_id = query_id @@ -6883,6 +7401,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 @@ -6904,27 +7423,30 @@ class RenderTask(model.Model): user_id: Optional[int] = 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[int] = None, - dashboard_style: Optional[str] = None, - finalized_at: Optional[str] = None, - height: Optional[int] = None, - id: Optional[str] = None, - look_id: Optional[int] = None, - lookml_dashboard_id: Optional[str] = None, - query_id: Optional[int] = 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[int] = 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[int] = None, + dashboard_style: Optional[str] = None, + finalized_at: Optional[str] = None, + height: Optional[int] = None, + id: Optional[str] = None, + look_id: Optional[int] = None, + lookml_dashboard_id: Optional[str] = None, + query_id: Optional[int] = 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[int] = None, + width: Optional[int] = None + ): self.can = can self.created_at = created_at self.dashboard_filters = dashboard_filters @@ -6960,6 +7482,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 @@ -6969,15 +7492,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 @@ -6993,6 +7519,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". (Enum defined in CreateQueryTask) """ + inline_json = "inline_json" json = "json" json_detail = "json_detail" @@ -7021,16 +7548,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 @@ -7044,12 +7575,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 @@ -7069,6 +7604,7 @@ class ResultMakerWithIdVisConfigAndDynamicFields(model.Model): query: vis_config: Vis config of the constituent Query, or Merge Query. """ + id: Optional[int] = None dynamic_fields: Optional[str] = None filterables: Optional[Sequence["ResultMakerFilterables"]] = None @@ -7080,17 +7616,20 @@ class ResultMakerWithIdVisConfigAndDynamicFields(model.Model): query: Optional["Query"] = None vis_config: Optional[MutableMapping[str, Any]] = None - def __init__(self, *, - id: Optional[int] = 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[int] = None, - sql_query_id: Optional[str] = None, - query: Optional["Query"] = None, - vis_config: Optional[MutableMapping[str, Any]] = None): + def __init__( + self, + *, + id: Optional[int] = 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[int] = 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 @@ -7117,6 +7656,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[int] = None name: Optional[str] = None @@ -7127,16 +7667,19 @@ class Role(model.Model): url: Optional[str] = None users_url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = None, - name: Optional[str] = None, - permission_set: Optional["PermissionSet"] = None, - permission_set_id: Optional[int] = None, - model_set: Optional["ModelSet"] = None, - model_set_id: Optional[int] = None, - url: Optional[str] = None, - users_url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = None, + name: Optional[str] = None, + permission_set: Optional["PermissionSet"] = None, + permission_set_id: Optional[int] = None, + model_set: Optional["ModelSet"] = None, + model_set_id: Optional[int] = None, + url: Optional[str] = None, + users_url: Optional[str] = None + ): self.can = can self.id = id self.name = name @@ -7174,6 +7717,7 @@ class RunningQueries(model.Model): runtime: Number of seconds elapsed running the Query sql: SQL text of the query as run """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[int] = None user: Optional["UserPublic"] = None @@ -7196,28 +7740,31 @@ class RunningQueries(model.Model): runtime: Optional[float] = None sql: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = 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): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = 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 + ): self.can = can self.id = id self.user = user @@ -7279,6 +7826,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 @@ -7313,40 +7861,43 @@ 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_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[int]] = None, - default_new_user_group_ids: Optional[Sequence[int]] = 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_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[int]] = None, + default_new_user_group_ids: Optional[Sequence[int]] = 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 @@ -7393,6 +7944,7 @@ class SamlGroupRead(model.Model): roles: Looker Roles url: Link to saml config """ + id: Optional[int] = None looker_group_id: Optional[int] = None looker_group_name: Optional[str] = None @@ -7400,13 +7952,16 @@ class SamlGroupRead(model.Model): roles: Optional[Sequence["Role"]] = None url: Optional[str] = None - def __init__(self, *, - id: Optional[int] = None, - looker_group_id: Optional[int] = 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[int] = None, + looker_group_id: Optional[int] = 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 @@ -7426,6 +7981,7 @@ class SamlGroupWrite(model.Model): role_ids: Looker Role Ids url: Link to saml config """ + id: Optional[int] = None looker_group_id: Optional[int] = None looker_group_name: Optional[str] = None @@ -7433,13 +7989,16 @@ class SamlGroupWrite(model.Model): role_ids: Optional[Sequence[int]] = None url: Optional[str] = None - def __init__(self, *, - id: Optional[int] = None, - looker_group_id: Optional[int] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - role_ids: Optional[Sequence[int]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + id: Optional[int] = None, + looker_group_id: Optional[int] = None, + looker_group_name: Optional[str] = None, + name: Optional[str] = None, + role_ids: Optional[Sequence[int]] = None, + url: Optional[str] = None + ): self.id = id self.looker_group_id = looker_group_id self.looker_group_name = looker_group_name @@ -7457,16 +8016,20 @@ class SamlMetadataParseResult(model.Model): idp_url: Identify Provider Url idp_cert: Identify Provider Certificate """ + can: Optional[MutableMapping[str, bool]] = None idp_issuer: Optional[str] = None idp_url: Optional[str] = None idp_cert: Optional[str] = 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): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + idp_issuer: Optional[str] = None, + idp_url: Optional[str] = None, + idp_cert: Optional[str] = None + ): self.can = can self.idp_issuer = idp_issuer self.idp_url = idp_url @@ -7482,16 +8045,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 @@ -7507,16 +8074,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[int]] = None url: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - required: Optional[bool] = None, - user_attribute_ids: Optional[Sequence[int]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + required: Optional[bool] = None, + user_attribute_ids: Optional[Sequence[int]] = None, + url: Optional[str] = None + ): self.name = name self.required = required self.user_attribute_ids = user_attribute_ids @@ -7566,6 +8137,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[int] = None run_as_recipient: Optional[bool] = None @@ -7605,45 +8177,50 @@ 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[int] = None, - run_as_recipient: Optional[bool] = None, - enabled: Optional[bool] = None, - look_id: Optional[int] = None, - dashboard_id: Optional[int] = 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, - query_id: 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, - inline_table_width: Optional[int] = None, - id: Optional[int] = 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[int] = None, + run_as_recipient: Optional[bool] = None, + enabled: Optional[bool] = None, + look_id: Optional[int] = None, + dashboard_id: Optional[int] = 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, + query_id: 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, + inline_table_width: Optional[int] = None, + id: Optional[int] = 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 @@ -7693,13 +8270,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[int] = None scheduled_plan_id: Optional[int] = None format: Optional[str] = None @@ -7712,18 +8290,21 @@ class ScheduledPlanDestination(model.Model): secret_parameters: Optional[str] = None message: Optional[str] = None - def __init__(self, *, - id: Optional[int] = None, - scheduled_plan_id: Optional[int] = 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[int] = None, + scheduled_plan_id: Optional[int] = 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 @@ -7757,6 +8338,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[int] = None ip_address: Optional[str] = None @@ -7773,22 +8355,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[int] = 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[int] = 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[int] = 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[int] = 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 @@ -7817,6 +8402,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 @@ -7824,13 +8410,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 @@ -7852,6 +8441,7 @@ class SmtpSettings(model.Model): ssl_version: TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2". default_smtp: Whether to enable built-in Looker SMTP """ + address: Optional[str] = None from_: Optional[str] = None user_name: Optional[str] = None @@ -7861,15 +8451,18 @@ class SmtpSettings(model.Model): ssl_version: Optional["SslVersion"] = 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, - 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, + default_smtp: Optional[bool] = None + ): self.address = address self.from_ = from_ self.user_name = user_name @@ -7889,16 +8482,20 @@ class Snippet(model.Model): sql: SQL text of the snippet can: Operations the current user is able to perform on this object """ + name: Optional[str] = None label: Optional[str] = None sql: Optional[str] = None can: Optional[MutableMapping[str, bool]] = None - def __init__(self, *, - name: Optional[str] = None, - label: Optional[str] = None, - sql: Optional[str] = None, - can: Optional[MutableMapping[str, bool]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + label: Optional[str] = None, + sql: Optional[str] = None, + can: Optional[MutableMapping[str, bool]] = None + ): self.name = name self.label = label self.sql = sql @@ -7928,6 +8525,7 @@ class Space(model.Model): dashboards: Dashboards looks: Looks """ + name: str parent_id: Optional[str] = None id: Optional[str] = None @@ -7947,25 +8545,28 @@ class Space(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[int] = None, - created_at: Optional[datetime.datetime] = None, - creator_id: Optional[int] = 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[int] = None, + created_at: Optional[datetime.datetime] = None, + creator_id: Optional[int] = 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 @@ -8007,6 +8608,7 @@ class SpaceBase(model.Model): is_users_root: Space is the root user space can: Operations the current user is able to perform on this object """ + name: str parent_id: Optional[str] = None id: Optional[str] = None @@ -8024,23 +8626,26 @@ class SpaceBase(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[int] = None, - created_at: Optional[datetime.datetime] = None, - creator_id: Optional[int] = 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[int] = None, + created_at: Optional[datetime.datetime] = None, + creator_id: Optional[int] = 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 @@ -8078,6 +8683,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 @@ -8093,21 +8699,24 @@ class SqlQuery(model.Model): vis_config: Optional[MutableMapping[str, Any]] = None result_maker_id: Optional[int] = 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[int] = 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[int] = None + ): self.can = can self.slug = slug self.last_runtime = last_runtime @@ -8134,18 +8743,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 @@ -8158,6 +8771,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" @@ -8173,6 +8787,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" @@ -8189,6 +8804,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" @@ -8203,6 +8819,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", "xlsx", "html", "wysiwyg_pdf", "assembled_pdf", "wysiwyg_png", "csv_zip". (Enum defined in Integration) """ + txt = "txt" csv = "csv" inline_json = "inline_json" @@ -8228,6 +8845,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" @@ -8242,6 +8860,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" @@ -8262,6 +8881,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 @@ -8269,13 +8889,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[int] = 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[int] = None, + name: Optional[str] = None, + settings: Optional["ThemeSettings"] = None + ): self.can = can self.begin_at = begin_at self.end_at = end_at @@ -8334,6 +8957,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 @@ -8380,52 +9004,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 @@ -8481,14 +9108,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 @@ -8501,12 +9132,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 @@ -8518,12 +9148,11 @@ class UpdateSpace(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 @@ -8570,6 +9199,7 @@ class User(model.Model): allow_roles_from_normal_groups: User can inherit roles from a normal Looker group. url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None avatar_url: Optional[str] = None avatar_url_without_sizing: Optional[str] = None @@ -8608,44 +9238,47 @@ class User(model.Model): allow_roles_from_normal_groups: Optional[bool] = 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, - display_name: Optional[str] = None, - email: Optional[str] = None, - embed_group_space_id: Optional[int] = None, - first_name: Optional[str] = None, - group_ids: Optional[Sequence[int]] = None, - home_space_id: Optional[str] = None, - home_folder_id: Optional[str] = None, - id: Optional[int] = 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_space_id: Optional[int] = None, - personal_folder_id: Optional[int] = None, - presumed_looker_employee: Optional[bool] = None, - role_ids: Optional[Sequence[int]] = 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, - 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, + display_name: Optional[str] = None, + email: Optional[str] = None, + embed_group_space_id: Optional[int] = None, + first_name: Optional[str] = None, + group_ids: Optional[Sequence[int]] = None, + home_space_id: Optional[str] = None, + home_folder_id: Optional[str] = None, + id: Optional[int] = 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_space_id: Optional[int] = None, + personal_folder_id: Optional[int] = None, + presumed_looker_employee: Optional[bool] = None, + role_ids: Optional[Sequence[int]] = 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, + url: Optional[str] = None + ): self.can = can self.avatar_url = avatar_url self.avatar_url_without_sizing = avatar_url_without_sizing @@ -8702,6 +9335,7 @@ class UserAttribute(model.Model): 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. """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[int] = None name: Optional[str] = None @@ -8715,19 +9349,22 @@ class UserAttribute(model.Model): user_can_edit: Optional[bool] = None hidden_value_domain_whitelist: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = None, - name: Optional[str] = None, - label: Optional[str] = None, - type: 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): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = None, + name: Optional[str] = None, + label: Optional[str] = None, + type: 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 + ): self.can = can self.id = id self.name = name @@ -8747,6 +9384,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" @@ -8777,6 +9415,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[int] = None group_id: Optional[int] = None @@ -8785,14 +9424,17 @@ class UserAttributeGroupValue(model.Model): rank: Optional[int] = None value: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = None, - group_id: Optional[int] = None, - user_attribute_id: Optional[int] = 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[int] = None, + group_id: Optional[int] = None, + user_attribute_id: Optional[int] = 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 @@ -8818,6 +9460,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 @@ -8830,18 +9473,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[int] = None, - user_can_edit: Optional[bool] = None, - value_is_hidden: Optional[bool] = None, - user_attribute_id: Optional[int] = 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[int] = None, + user_can_edit: Optional[bool] = None, + value_is_hidden: Optional[bool] = None, + user_attribute_id: Optional[int] = None, + source: Optional[str] = None, + hidden_value_domain_whitelist: Optional[str] = None + ): self.can = can self.name = name self.label = label @@ -8861,10 +9507,10 @@ class UserIdOnly(model.Model): Attributes: id: Unique Id """ + id: Optional[int] = None - def __init__(self, *, - id: Optional[int] = None): + def __init__(self, *, id: Optional[int] = None): self.id = id @@ -8883,6 +9529,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 @@ -8894,17 +9541,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[int] = 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[int] = 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 @@ -8929,6 +9579,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[int] = None first_name: Optional[str] = None @@ -8937,14 +9588,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[int] = 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[int] = 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 @@ -8962,14 +9616,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 @@ -8984,16 +9642,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 @@ -9005,6 +9667,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" @@ -9027,14 +9690,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 @@ -9061,6 +9728,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[int] = None logo_file: Optional[str] = None logo_url: Optional[str] = None @@ -9078,23 +9746,26 @@ class WhitelabelConfiguration(model.Model): alerts_links: Optional[bool] = None folders_mentions: Optional[bool] = None - def __init__(self, *, - id: Optional[int] = 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[int] = 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 @@ -9121,14 +9792,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 @@ -9137,44 +9812,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 @@ -9185,25 +9864,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 @@ -9213,23 +9896,27 @@ 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, look + Dynamic writeable type for ContentFavorite removes: + id, look_id, dashboard_id, look - Attributes: - user_id: User Id which owns this ContentFavorite - content_metadata_id: Content Metadata Id associated with this ContentFavorite - 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 + 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[int] = None content_metadata_id: Optional[int] = None dashboard: Optional["WriteDashboardBase"] = None - def __init__(self, *, - user_id: Optional[int] = None, - content_metadata_id: Optional[int] = None, - dashboard: Optional["WriteDashboardBase"] = None): + def __init__( + self, + *, + user_id: Optional[int] = None, + content_metadata_id: Optional[int] = None, + dashboard: Optional["WriteDashboardBase"] = None + ): self.user_id = user_id self.content_metadata_id = content_metadata_id self.dashboard = dashboard @@ -9238,40 +9925,41 @@ 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, content_type, inheriting_id, slug, space_id + Dynamic writeable type for ContentMeta removes: + can, id, name, parent_id, dashboard_id, look_id, folder_id, content_type, inheriting_id, slug, space_id - Attributes: - inherits: Whether content inherits its access levels from parent + Attributes: + inherits: Whether content inherits its access levels from parent """ + 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 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 @@ -9286,20 +9974,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 @@ -9318,17 +10009,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". - 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". + 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: int result_format: "ResultFormat" source: Optional[str] = None @@ -9341,16 +10033,19 @@ class WriteCreateQueryTask(model.Model): "source": Optional[str], "deferred": Optional[bool], "look_id": Optional[int], - "dashboard_id": Optional[str] + "dashboard_id": Optional[str], } - def __init__(self, *, - query_id: int, - result_format: "ResultFormat", - source: Optional[str] = None, - deferred: Optional[bool] = None, - look_id: Optional[int] = None, - dashboard_id: Optional[str] = None): + def __init__( + self, + *, + query_id: int, + result_format: "ResultFormat", + source: Optional[str] = None, + deferred: Optional[bool] = None, + look_id: Optional[int] = None, + dashboard_id: Optional[str] = None + ): self.query_id = query_id self.result_format = result_format self.source = source @@ -9362,19 +10057,23 @@ def __init__(self, *, @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, 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, 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 @@ -9382,25 +10081,29 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteCustomWelcomeEmail(model.Model): """ - Dynamic writeable type for CustomWelcomeEmail removes: -can + Dynamic writeable type for CustomWelcomeEmail removes: + can - Attributes: - enabled: If true, custom email content will replace the default body of welcome emails - content: The HTML to use as custom content for welcome emails. Script elements and other potentially dangerous markup will be removed. - 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. + Attributes: + enabled: If true, custom email content will replace the default body of welcome emails + content: The HTML to use as custom content for welcome emails. Script elements and other potentially dangerous markup will be removed. + 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 @@ -9410,40 +10113,41 @@ 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, user_id, 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 - - 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 - slug: Content Metadata Slug - preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) - space: Dynamic writeable type for SpaceBase 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 - alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes - 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://cloud.google.com/looker/docs/r/api/control-access) - show_title: Show title - space_id: Id of Space - 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: + Dynamic writeable type for Dashboard removes: + can, content_favorite_id, content_metadata_id, id, model, readonly, refresh_interval_to_i, user_id, 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 + + 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 + slug: Content Metadata Slug + preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) + space: Dynamic writeable type for SpaceBase 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 + alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes + 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://cloud.google.com/looker/docs/r/api/control-access) + show_title: Show title + space_id: Id of Space + 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: """ + description: Optional[str] = None hidden: Optional[bool] = None query_timezone: Optional[str] = None @@ -9472,34 +10176,37 @@ class WriteDashboard(model.Model): title_color: Optional[str] = None appearance: Optional["DashboardAppearance"] = 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, - slug: Optional[str] = None, - preferred_viewer: Optional[str] = None, - space: Optional["WriteSpaceBase"] = None, - alert_sync_with_dashboard_filter_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, - space_id: Optional[str] = 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): + 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, + slug: Optional[str] = None, + preferred_viewer: Optional[str] = None, + space: Optional["WriteSpaceBase"] = None, + alert_sync_with_dashboard_filter_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, + space_id: Optional[str] = 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 + ): self.description = description self.hidden = hidden self.query_timezone = query_timezone @@ -9509,7 +10216,9 @@ def __init__(self, *, self.slug = slug self.preferred_viewer = preferred_viewer self.space = space - 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.background_color = background_color self.crossfilter_enabled = crossfilter_enabled self.deleted = deleted @@ -9532,21 +10241,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 - space: Dynamic writeable type for SpaceBase 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: + 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 + space: Dynamic writeable type for SpaceBase 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: Optional["WriteFolderBase"] = None space: Optional["WriteSpaceBase"] = None - def __init__(self, *, - folder: Optional["WriteFolderBase"] = None, - space: Optional["WriteSpaceBase"] = None): + def __init__( + self, + *, + folder: Optional["WriteFolderBase"] = None, + space: Optional["WriteSpaceBase"] = None + ): self.folder = folder self.space = space @@ -9554,33 +10267,34 @@ 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 - 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, view_count, user, 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 - refresh_interval: Refresh Interval - result_maker: Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: -id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config - 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 + 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 + 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, view_count, user, 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 + refresh_interval: Refresh Interval + result_maker: Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: + id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config + 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 """ + body_text: Optional[str] = None dashboard_id: Optional[str] = None look: Optional["WriteLookWithQuery"] = None @@ -9601,26 +10315,31 @@ class WriteDashboardElement(model.Model): type: Optional[str] = None rich_content_json: Optional[str] = None - def __init__(self, *, - body_text: Optional[str] = None, - dashboard_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[int] = None, - refresh_interval: Optional[str] = None, - result_maker: Optional["WriteResultMakerWithIdVisConfigAndDynamicFields"] = None, - result_maker_id: Optional[int] = 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): + def __init__( + self, + *, + body_text: Optional[str] = None, + dashboard_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[int] = None, + refresh_interval: Optional[str] = None, + result_maker: Optional[ + "WriteResultMakerWithIdVisConfigAndDynamicFields" + ] = None, + result_maker_id: Optional[int] = 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 + ): self.body_text = body_text self.dashboard_id = dashboard_id self.look = look @@ -9645,23 +10364,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 @@ -9675,19 +10395,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 @@ -9705,28 +10428,32 @@ 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 + Attributes: + dashboard_id: Id of Dashboard + type: Type + active: Is Active + column_width: Column Width + width: Width """ + dashboard_id: Optional[str] = None type: Optional[str] = None active: Optional[bool] = None column_width: Optional[int] = None width: Optional[int] = 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): + 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 + ): self.dashboard_id = dashboard_id self.type = type self.active = active @@ -9737,17 +10464,18 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDashboardLayoutComponent(model.Model): """ - Dynamic writeable type for DashboardLayoutComponent removes: -can, id, deleted, element_title, element_title_hidden, vis_type + Dynamic writeable type for DashboardLayoutComponent removes: + can, id, deleted, 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 + Attributes: + dashboard_layout_id: Id of Dashboard Layout + dashboard_element_id: Id Of Dashboard Element + row: Row + column: Column + width: Width + height: Height """ + dashboard_layout_id: Optional[str] = None dashboard_element_id: Optional[str] = None row: Optional[int] = None @@ -9755,13 +10483,16 @@ class WriteDashboardLayoutComponent(model.Model): width: Optional[int] = None 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): + 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 + ): self.dashboard_layout_id = dashboard_layout_id self.dashboard_element_id = dashboard_element_id self.row = row @@ -9773,19 +10504,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 @@ -9793,39 +10525,40 @@ 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, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed - - Attributes: - name: Name of the connection. Also used as the unique identifier - 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 - certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). - file_type: (Write-Only) Certificate keyfile type - .json 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_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) - 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 - uses_tns: Enable Transparent Network Substrate (TNS) connections + Dynamic writeable type for DBConnection removes: + can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed + + Attributes: + name: Name of the connection. Also used as the unique identifier + 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 + certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). + file_type: (Write-Only) Certificate keyfile type - .json 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_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) + 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 + uses_tns: Enable Transparent Network Substrate (TNS) connections """ + name: Optional[str] = None host: Optional[str] = None port: Optional[str] = None @@ -9854,34 +10587,37 @@ class WriteDBConnection(model.Model): pdt_context_override: Optional["WriteDBConnectionOverride"] = None uses_tns: Optional[bool] = None - def __init__(self, *, - name: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = 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_billing_gigabytes: Optional[str] = None, - ssl: Optional[bool] = None, - verify_ssl: Optional[bool] = None, - tmp_db_name: 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, - uses_tns: Optional[bool] = None): + def __init__( + self, + *, + name: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = 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_billing_gigabytes: Optional[str] = None, + ssl: Optional[bool] = None, + verify_ssl: Optional[bool] = None, + tmp_db_name: 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, + uses_tns: Optional[bool] = None + ): self.name = name self.host = host self.port = port @@ -9914,22 +10650,23 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDBConnectionOverride(model.Model): """ - Dynamic writeable type for DBConnectionOverride removes: -has_password + 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 - port: Port number on server - username: Username for server authentication - password: (Write-Only) Password for server authentication - certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). - file_type: (Write-Only) Certificate keyfile type - .json or .p12 - database: Database name - schema: Schema name - jdbc_additional_params: Additional params to add to JDBC connection string - after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature + Attributes: + context: Context in which to override (`pdt` is the only allowed value) + host: Host name/address of server + port: Port number on server + username: Username for server authentication + password: (Write-Only) Password for server authentication + certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). + file_type: (Write-Only) Certificate keyfile type - .json or .p12 + database: Database name + schema: Schema name + jdbc_additional_params: Additional params to add to JDBC connection string + after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature """ + context: Optional[str] = None host: Optional[str] = None port: Optional[str] = None @@ -9942,18 +10679,21 @@ class WriteDBConnectionOverride(model.Model): jdbc_additional_params: Optional[str] = None after_connect_statements: Optional[str] = None - def __init__(self, *, - context: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - certificate: Optional[str] = None, - file_type: Optional[str] = None, - database: Optional[str] = None, - schema: Optional[str] = None, - jdbc_additional_params: Optional[str] = None, - after_connect_statements: Optional[str] = None): + def __init__( + self, + *, + context: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + certificate: Optional[str] = None, + file_type: Optional[str] = None, + database: Optional[str] = None, + schema: Optional[str] = None, + jdbc_additional_params: Optional[str] = None, + after_connect_statements: Optional[str] = None + ): self.context = context self.host = host self.port = port @@ -9970,19 +10710,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 @@ -9990,19 +10729,18 @@ 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 @@ -10010,19 +10748,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 @@ -10030,25 +10772,29 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteHomepage(model.Model): """ - Dynamic writeable type for Homepage removes: -can, content_metadata_id, created_at, homepage_sections, id, updated_at, user_id, primary_homepage + Dynamic writeable type for Homepage removes: + can, content_metadata_id, created_at, homepage_sections, id, updated_at, user_id, primary_homepage - Attributes: - deleted_at: Date of homepage deletion - description: Description of the homepage - section_order: ids of the homepage sections in the order they should be displayed - title: Title of the homepage + Attributes: + deleted_at: Date of homepage deletion + description: Description of the homepage + section_order: ids of the homepage sections in the order they should be displayed + title: Title of the homepage """ + deleted_at: Optional[datetime.datetime] = None description: Optional[str] = None section_order: Optional[Sequence[int]] = None title: Optional[str] = None - def __init__(self, *, - deleted_at: Optional[datetime.datetime] = None, - description: Optional[str] = None, - section_order: Optional[Sequence[int]] = None, - title: Optional[str] = None): + def __init__( + self, + *, + deleted_at: Optional[datetime.datetime] = None, + description: Optional[str] = None, + section_order: Optional[Sequence[int]] = None, + title: Optional[str] = None + ): self.deleted_at = deleted_at self.description = description self.section_order = section_order @@ -10058,24 +10804,25 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteHomepageItem(model.Model): """ - Dynamic writeable type for HomepageItem removes: -can, content_created_by, content_favorite_id, content_metadata_id, content_updated_at, custom_image_url, description, favorite_count, id, image_url, location, section_fetch_time, title, url, view_count - - Attributes: - custom_description: Custom description entered by the user, if present - custom_image_data_base64: (Write-Only) base64 encoded image data - 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 - homepage_section_id: Associated Homepage 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_image: Whether the custom image should be used instead of the content image, 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 + Dynamic writeable type for HomepageItem removes: + can, content_created_by, content_favorite_id, content_metadata_id, content_updated_at, custom_image_url, description, favorite_count, id, image_url, location, section_fetch_time, title, url, view_count + + Attributes: + custom_description: Custom description entered by the user, if present + custom_image_data_base64: (Write-Only) base64 encoded image data + 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 + homepage_section_id: Associated Homepage 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_image: Whether the custom image should be used instead of the content image, 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_description: Optional[str] = None custom_image_data_base64: Optional[str] = None custom_title: Optional[str] = None @@ -10090,20 +10837,23 @@ class WriteHomepageItem(model.Model): use_custom_title: Optional[bool] = None use_custom_url: Optional[bool] = None - def __init__(self, *, - custom_description: Optional[str] = None, - custom_image_data_base64: Optional[str] = None, - custom_title: Optional[str] = None, - custom_url: Optional[str] = None, - dashboard_id: Optional[int] = None, - homepage_section_id: Optional[int] = None, - look_id: Optional[int] = None, - lookml_dashboard_id: Optional[str] = None, - order: Optional[int] = 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): + def __init__( + self, + *, + custom_description: Optional[str] = None, + custom_image_data_base64: Optional[str] = None, + custom_title: Optional[str] = None, + custom_url: Optional[str] = None, + dashboard_id: Optional[int] = None, + homepage_section_id: Optional[int] = None, + look_id: Optional[int] = None, + lookml_dashboard_id: Optional[str] = None, + order: Optional[int] = 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 + ): self.custom_description = custom_description self.custom_image_data_base64 = custom_image_data_base64 self.custom_title = custom_title @@ -10122,28 +10872,32 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteHomepageSection(model.Model): """ - Dynamic writeable type for HomepageSection removes: -can, created_at, detail_url, homepage_items, id, is_header, updated_at, visible_item_order + Dynamic writeable type for HomepageSection removes: + can, created_at, detail_url, homepage_items, id, is_header, updated_at, visible_item_order - Attributes: - deleted_at: Time at which this section was deleted. - homepage_id: Id reference to parent homepage - item_order: ids of the homepage items in the order they should be displayed - title: Name of row - description: Description of the content found in this section. + Attributes: + deleted_at: Time at which this section was deleted. + homepage_id: Id reference to parent homepage + item_order: ids of the homepage items in the order they should be displayed + title: Name of row + description: Description of the content found in this section. """ + deleted_at: Optional[datetime.datetime] = None homepage_id: Optional[int] = None item_order: Optional[Sequence[int]] = None title: Optional[str] = None description: Optional[str] = None - def __init__(self, *, - deleted_at: Optional[datetime.datetime] = None, - homepage_id: Optional[int] = None, - item_order: Optional[Sequence[int]] = None, - title: Optional[str] = None, - description: Optional[str] = None): + def __init__( + self, + *, + deleted_at: Optional[datetime.datetime] = None, + homepage_id: Optional[int] = None, + item_order: Optional[Sequence[int]] = None, + title: Optional[str] = None, + description: Optional[str] = None + ): self.deleted_at = deleted_at self.homepage_id = homepage_id self.item_order = item_order @@ -10154,22 +10908,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[int]] = None - def __init__(self, *, - enabled: Optional[bool] = None, - params: Optional[Sequence["IntegrationParam"]] = None, - installed_delegate_oauth_targets: Optional[Sequence[int]] = None): + def __init__( + self, + *, + enabled: Optional[bool] = None, + params: Optional[Sequence["IntegrationParam"]] = None, + installed_delegate_oauth_targets: Optional[Sequence[int]] = None + ): self.enabled = enabled self.params = params self.installed_delegate_oauth_targets = installed_delegate_oauth_targets @@ -10178,19 +10936,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 @@ -10198,35 +10957,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 @@ -10234,45 +10997,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 @@ -10308,41 +11072,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[int]] = None, - default_new_user_role_ids: Optional[Sequence[int]] = 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[int]] = None, + default_new_user_role_ids: Optional[Sequence[int]] = 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 @@ -10382,41 +11149,45 @@ 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 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 @@ -10426,26 +11197,27 @@ 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, view_count, user, url - - Attributes: - title: Look Title - 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 - user_id: User Id - space_id: Space Id - space: Dynamic writeable type for SpaceBase 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 - 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, view_count, user, url + + Attributes: + title: Look Title + 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 + user_id: User Id + space_id: Space Id + space: Dynamic writeable type for SpaceBase 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 + query: Dynamic writeable type for Query removes: + can, id, slug, share_url, expanded_share_url, url, has_table_calculations """ + title: Optional[str] = None deleted: Optional[bool] = None description: Optional[str] = None @@ -10459,19 +11231,22 @@ class WriteLookWithQuery(model.Model): space: Optional["WriteSpaceBase"] = None query: Optional["WriteQuery"] = None - def __init__(self, *, - title: Optional[str] = None, - deleted: Optional[bool] = None, - description: Optional[str] = None, - is_run_on_load: Optional[bool] = None, - public: Optional[bool] = None, - query_id: Optional[int] = None, - folder: Optional["WriteFolderBase"] = None, - folder_id: Optional[str] = None, - user_id: Optional[int] = None, - space_id: Optional[str] = None, - space: Optional["WriteSpaceBase"] = None, - query: Optional["WriteQuery"] = None): + def __init__( + self, + *, + title: Optional[str] = None, + deleted: Optional[bool] = None, + description: Optional[str] = None, + is_run_on_load: Optional[bool] = None, + public: Optional[bool] = None, + query_id: Optional[int] = None, + folder: Optional["WriteFolderBase"] = None, + folder_id: Optional[str] = None, + user_id: Optional[int] = None, + space_id: Optional[str] = None, + space: Optional["WriteSpaceBase"] = None, + query: Optional["WriteQuery"] = None + ): self.title = title self.deleted = deleted self.description = description @@ -10489,18 +11264,19 @@ def __init__(self, *, @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 - 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 + vis_config: Visualization Config """ + column_limit: Optional[str] = None dynamic_fields: Optional[str] = None pivots: Optional[Sequence[str]] = None @@ -10509,14 +11285,17 @@ class WriteMergeQuery(model.Model): total: Optional[bool] = 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, - 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, + vis_config: Optional[MutableMapping[str, Any]] = None + ): self.column_limit = column_limit self.dynamic_fields = dynamic_fields self.pivots = pivots @@ -10529,19 +11308,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 @@ -10549,35 +11329,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 @@ -10603,31 +11384,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[int]] = None, - default_new_user_role_ids: Optional[Sequence[int]] = 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[int]] = None, + default_new_user_role_ids: Optional[Sequence[int]] = 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 @@ -10657,25 +11441,29 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WritePasswordConfig(model.Model): """ - Dynamic writeable type for PasswordConfig removes: -can + Dynamic writeable type for PasswordConfig removes: + can - 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 + 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 """ + min_length: Optional[int] = None require_numeric: Optional[bool] = None require_upperlower: Optional[bool] = None require_special: Optional[bool] = None - def __init__(self, *, - min_length: Optional[int] = None, - require_numeric: Optional[bool] = None, - require_upperlower: Optional[bool] = None, - require_special: Optional[bool] = None): + def __init__( + self, + *, + min_length: Optional[int] = None, + require_numeric: Optional[bool] = None, + require_upperlower: Optional[bool] = None, + require_special: Optional[bool] = None + ): self.min_length = min_length self.require_numeric = require_numeric self.require_upperlower = require_upperlower @@ -10685,19 +11473,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 @@ -10705,28 +11494,29 @@ 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_example - - 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). + Dynamic writeable type for Project removes: + can, id, uses_git, is_example + + 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). """ + name: Optional[str] = None git_remote_url: Optional[str] = None git_username: Optional[str] = None @@ -10745,24 +11535,27 @@ class WriteProject(model.Model): git_release_mgmt_enabled: Optional[bool] = None allow_warnings: Optional[bool] = 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): + 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 + ): self.name = name self.git_remote_url = git_remote_url self.git_username = git_username @@ -10785,31 +11578,32 @@ 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 - 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: Limit - 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 - runtime: (DEPRECATED) Runtime (Deprecated) + 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 + 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: Limit + 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 + runtime: (DEPRECATED) Runtime (Deprecated) """ + model: str view: str fields: Optional[Sequence[str]] = None @@ -10831,27 +11625,30 @@ class WriteQuery(model.Model): query_timezone: Optional[str] = None runtime: Optional[float] = 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, - runtime: Optional[float] = 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, + runtime: Optional[float] = None + ): self.model = model self.view = view self.fields = fields @@ -10877,22 +11674,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 @@ -10901,47 +11702,51 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteResultMakerWithIdVisConfigAndDynamicFields(model.Model): """ - Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: -id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config + Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: + id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config - Attributes: - query: Dynamic writeable type for Query removes: -can, id, slug, share_url, expanded_share_url, url, has_table_calculations + Attributes: + query: Dynamic writeable type for Query removes: + can, id, slug, share_url, expanded_share_url, url, has_table_calculations """ + query: Optional["WriteQuery"] = None - def __init__(self, *, - query: Optional["WriteQuery"] = None): + def __init__(self, *, query: Optional["WriteQuery"] = None): self.query = query @attr.s(auto_attribs=True, init=False) class WriteRole(model.Model): """ - Dynamic writeable type for Role removes: -can, id, url, users_url + Dynamic writeable type for Role removes: + can, id, 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[int] = None model_set: Optional["WriteModelSet"] = None model_set_id: Optional[int] = None - def __init__(self, *, - name: Optional[str] = None, - permission_set: Optional["WritePermissionSet"] = None, - permission_set_id: Optional[int] = None, - model_set: Optional["WriteModelSet"] = None, - model_set_id: Optional[int] = None): + def __init__( + self, + *, + name: Optional[str] = None, + permission_set: Optional["WritePermissionSet"] = None, + permission_set_id: Optional[int] = None, + model_set: Optional["WriteModelSet"] = None, + model_set_id: Optional[int] = None + ): self.name = name self.permission_set = permission_set self.permission_set_id = permission_set_id @@ -10952,35 +11757,36 @@ 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_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_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_url: Optional[str] = None @@ -11006,31 +11812,34 @@ 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_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[int]] = None, - default_new_user_group_ids: Optional[Sequence[int]] = 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_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[int]] = None, + default_new_user_group_ids: Optional[Sequence[int]] = 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_url = idp_url @@ -11060,41 +11869,42 @@ 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) - query_id: Query id - 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 - inline_table_width: The pixel width at which we render the inline table visualizations + 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) + query_id: Query id + 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 + inline_table_width: The pixel width at which we render the inline table visualizations """ + name: Optional[str] = None user_id: Optional[int] = None run_as_recipient: Optional[bool] = None @@ -11126,37 +11936,42 @@ class WriteScheduledPlan(model.Model): long_tables: Optional[bool] = None inline_table_width: Optional[int] = None - def __init__(self, *, - name: Optional[str] = None, - user_id: Optional[int] = None, - run_as_recipient: Optional[bool] = None, - enabled: Optional[bool] = None, - look_id: Optional[int] = None, - dashboard_id: Optional[int] = 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, - query_id: 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, - inline_table_width: Optional[int] = None): + def __init__( + self, + *, + name: Optional[str] = None, + user_id: Optional[int] = None, + run_as_recipient: Optional[bool] = None, + enabled: Optional[bool] = None, + look_id: Optional[int] = None, + dashboard_id: Optional[int] = 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, + query_id: 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, + inline_table_width: Optional[int] = None + ): self.name = name self.user_id = user_id self.run_as_recipient = run_as_recipient @@ -11192,28 +12007,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 @@ -11224,19 +12043,18 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteSpaceBase(model.Model): """ - Dynamic writeable type for SpaceBase 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 SpaceBase 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 @@ -11244,25 +12062,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 @@ -11272,21 +12094,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, display_name, email, embed_group_space_id, group_ids, id, looker_versions, personal_space_id, 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, 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, display_name, email, embed_group_space_id, group_ids, id, looker_versions, personal_space_id, 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, 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, type, url, user_url - first_name: First name - home_space_id: ID string for user's home space - 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. + 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, type, url, user_url + first_name: First name + home_space_id: ID string for user's home space + 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. """ + credentials_email: Optional["WriteCredentialsEmail"] = None first_name: Optional[str] = None home_space_id: Optional[str] = None @@ -11297,16 +12120,19 @@ class WriteUser(model.Model): models_dir_validated: Optional[bool] = None ui_state: Optional[MutableMapping[str, Any]] = None - def __init__(self, *, - credentials_email: Optional["WriteCredentialsEmail"] = None, - first_name: Optional[str] = None, - home_space_id: 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): + def __init__( + self, + *, + credentials_email: Optional["WriteCredentialsEmail"] = None, + first_name: Optional[str] = None, + home_space_id: 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 + ): self.credentials_email = credentials_email self.first_name = first_name self.home_space_id = home_space_id @@ -11321,19 +12147,20 @@ 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") - 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. + Attributes: + name: Name of user attribute + label: Human-friendly label for user attribute + type: Type of user attribute ("string", "number", "datetime", "yesno", "zipcode") + 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. """ + name: Optional[str] = None label: Optional[str] = None type: Optional[str] = None @@ -11343,15 +12170,18 @@ class WriteUserAttribute(model.Model): user_can_edit: Optional[bool] = None hidden_value_domain_whitelist: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - label: Optional[str] = None, - type: Optional[str] = None, - 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): + def __init__( + self, + *, + name: Optional[str] = None, + label: Optional[str] = None, + type: Optional[str] = None, + 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 + ): self.name = name self.label = label self.type = type @@ -11365,40 +12195,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 @@ -11413,20 +12244,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 @@ -11441,6 +12275,7 @@ def __init__(self, *, self.alerts_links = alerts_links self.folders_mentions = folders_mentions + import functools # noqa:E402 forward_ref_structure_hook = functools.partial( @@ -11449,12 +12284,14 @@ def __init__(self, *, sr.converter31.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.converter31) +translate_keys_structure_hook = functools.partial( + sr.translate_keys_structure_hook, sr.converter31 +) sr.converter31.register_structure_hook( LookmlModelExploreJoins, # type: ignore - translate_keys_structure_hook # type:ignore + translate_keys_structure_hook, # type:ignore ) sr.converter31.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/api40/methods.py b/python/looker_sdk/sdk/api40/methods.py index 65b0f9a01..194f3f03f 100644 --- a/python/looker_sdk/sdk/api40/methods.py +++ b/python/looker_sdk/sdk/api40/methods.py @@ -33,9 +33,9 @@ from looker_sdk.rtl import api_methods from looker_sdk.rtl import transport -class Looker40SDK(api_methods.APIMethods): - #region Alert: Alert +class Looker40SDK(api_methods.APIMethods): + # region Alert: Alert # Follow an alert. # @@ -53,8 +53,8 @@ def follow_alert( self.post( path=f"/alerts/{alert_id}/follow", structure=None, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -74,8 +74,8 @@ def unfollow_alert( self.delete( path=f"/alerts/{alert_id}/follow", structure=None, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -112,9 +112,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 @@ -134,8 +145,8 @@ def get_alert( self.get( path=f"/alerts/{alert_id}", structure=mdls.Alert, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -159,8 +170,8 @@ def update_alert( path=f"/alerts/{alert_id}", structure=mdls.Alert, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -184,8 +195,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 @@ -205,8 +216,8 @@ def delete_alert( self.delete( path=f"/alerts/{alert_id}", structure=None, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -259,8 +270,8 @@ def create_alert( path="/alerts", structure=mdls.Alert, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -283,8 +294,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 @@ -307,8 +318,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 @@ -329,14 +340,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,8 +394,8 @@ def login( path="/login", structure=mdls.AccessToken, query_params={"client_id": client_id, "client_secret": client_secret}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -418,15 +429,17 @@ 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, query_params={"associative": associative}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -441,16 +454,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. # @@ -470,8 +481,8 @@ def artifact_usage( path="/artifact/usage", structure=mdls.ArtifactUsage, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -497,8 +508,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 @@ -525,8 +536,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 @@ -548,8 +559,8 @@ def purge_artifacts( self.delete( path=f"/artifact/{namespace}/purge", structure=None, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -599,9 +610,17 @@ 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}, - 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, + }, + transport_options=transport_options, + ), ) return response @@ -633,9 +652,14 @@ def artifact( self.get( path=f"/artifact/{namespace}", structure=Sequence[mdls.Artifact], - query_params={"key": key, "fields": fields, "limit": limit, "offset": offset}, - transport_options=transport_options - ) + query_params={ + "key": key, + "fields": fields, + "limit": limit, + "offset": offset, + }, + transport_options=transport_options, + ), ) return response @@ -662,8 +686,8 @@ def delete_artifact( path=f"/artifact/{namespace}", structure=None, query_params={"key": key}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -713,14 +737,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. # @@ -741,8 +765,8 @@ def create_embed_secret( path="/embed_config/secrets", structure=mdls.EmbedSecret, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -764,8 +788,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 @@ -824,8 +848,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 @@ -871,8 +895,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 @@ -922,8 +946,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 @@ -949,8 +973,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 @@ -977,8 +1001,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 @@ -1012,8 +1036,8 @@ def ldap_config( self.get( path="/ldap_config", structure=mdls.LDAPConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1044,8 +1068,8 @@ def update_ldap_config( path="/ldap_config", structure=mdls.LDAPConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1083,8 +1107,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 @@ -1124,8 +1148,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 @@ -1154,8 +1178,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 @@ -1184,8 +1208,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 @@ -1205,8 +1229,8 @@ def register_mobile_device( path="/mobile/device", structure=mdls.MobileToken, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1226,8 +1250,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 @@ -1247,8 +1271,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 @@ -1274,8 +1298,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 @@ -1300,8 +1324,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 @@ -1331,8 +1355,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 @@ -1359,8 +1383,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 @@ -1388,8 +1412,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 @@ -1412,8 +1436,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 @@ -1445,8 +1469,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 @@ -1481,8 +1505,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 @@ -1512,8 +1536,8 @@ def oidc_config( self.get( path="/oidc_config", structure=mdls.OIDCConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1542,8 +1566,8 @@ def update_oidc_config( path="/oidc_config", structure=mdls.OIDCConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1565,8 +1589,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 @@ -1588,8 +1612,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 @@ -1610,8 +1634,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 @@ -1630,8 +1654,8 @@ def password_config( self.get( path="/password_config", structure=mdls.PasswordConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1652,8 +1676,8 @@ def update_password_config( path="/password_config", structure=mdls.PasswordConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1672,8 +1696,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 @@ -1703,8 +1727,8 @@ def saml_config( self.get( path="/saml_config", structure=mdls.SamlConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1733,8 +1757,8 @@ def update_saml_config( path="/saml_config", structure=mdls.SamlConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1756,8 +1780,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 @@ -1779,8 +1803,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 @@ -1801,8 +1825,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 @@ -1823,8 +1847,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 @@ -1847,8 +1871,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 @@ -1865,8 +1889,8 @@ def session_config( self.get( path="/session_config", structure=mdls.SessionConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1885,8 +1909,8 @@ def update_session_config( path="/session_config", structure=mdls.SessionConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1910,8 +1934,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 @@ -1934,8 +1958,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 @@ -1959,8 +1983,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 @@ -1983,8 +2007,8 @@ def enable_support_access( path="/support_access/enable", structure=mdls.SupportAccessStatus, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2005,8 +2029,8 @@ def disable_support_access( self.put( path="/support_access/disable", structure=mdls.SupportAccessStatus, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2027,8 +2051,8 @@ def support_access_status( self.get( path="/support_access/status", structure=mdls.SupportAccessStatus, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2048,8 +2072,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 @@ -2088,9 +2112,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 @@ -2110,14 +2146,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. # @@ -2135,8 +2171,8 @@ def all_boards( path="/boards", structure=Sequence[mdls.Board], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2158,8 +2194,8 @@ def create_board( structure=mdls.Board, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2225,9 +2261,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 @@ -2250,8 +2301,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 @@ -2276,8 +2327,8 @@ def update_board( structure=mdls.Board, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2297,8 +2348,8 @@ def delete_board( self.delete( path=f"/boards/{board_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2321,9 +2372,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 @@ -2345,8 +2400,8 @@ def create_board_item( structure=mdls.BoardItem, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2369,8 +2424,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 @@ -2395,8 +2450,8 @@ def update_board_item( structure=mdls.BoardItem, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2416,8 +2471,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 @@ -2439,8 +2494,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 @@ -2462,8 +2517,8 @@ def create_board_section( structure=mdls.BoardSection, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2486,8 +2541,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 @@ -2512,8 +2567,8 @@ def update_board_section( structure=mdls.BoardSection, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2533,14 +2588,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) @@ -2565,8 +2620,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 @@ -2593,8 +2648,8 @@ def create_color_collection( path="/color_collections", structure=mdls.ColorCollection, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2619,8 +2674,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 @@ -2645,8 +2700,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 @@ -2667,8 +2722,8 @@ def default_color_collection( self.get( path="/color_collections/default", structure=mdls.ColorCollection, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2691,8 +2746,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 @@ -2724,8 +2779,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 @@ -2748,8 +2803,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 @@ -2776,14 +2831,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. # @@ -2798,8 +2853,8 @@ def cloud_storage_configuration( self.get( path="/cloud_storage", structure=mdls.BackupConfiguration, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2818,8 +2873,8 @@ def update_cloud_storage_configuration( path="/cloud_storage", structure=mdls.BackupConfiguration, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2836,8 +2891,8 @@ def custom_welcome_email( self.get( path="/custom_welcome_email", structure=mdls.CustomWelcomeEmail, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2859,8 +2914,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 @@ -2872,15 +2927,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 @@ -2897,8 +2952,8 @@ def digest_emails_enabled( self.get( path="/digest_emails_enabled", structure=mdls.DigestEmails, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2917,8 +2972,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 @@ -2937,8 +2992,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 @@ -2959,8 +3014,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 @@ -2977,8 +3032,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 @@ -2997,8 +3052,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 @@ -3015,8 +3070,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 @@ -3035,8 +3090,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 @@ -3055,8 +3110,8 @@ def all_legacy_features( self.get( path="/legacy_features", structure=Sequence[mdls.LegacyFeature], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3078,8 +3133,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 @@ -3103,8 +3158,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 @@ -3121,8 +3176,8 @@ def all_locales( self.get( path="/locales", structure=Sequence[mdls.Locale], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3139,8 +3194,8 @@ def mobile_settings( self.get( path="/mobile/settings", structure=mdls.MobileSettings, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3180,8 +3235,8 @@ def get_setting( path="/setting", structure=mdls.Setting, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3227,8 +3282,8 @@ def set_setting( structure=mdls.Setting, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3249,8 +3304,8 @@ def set_smtp_settings( path="/smtp_settings", structure=None, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3270,8 +3325,8 @@ def smtp_status( path="/smtp_status", structure=mdls.SmtpStatus, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3288,8 +3343,8 @@ def all_timezones( self.get( path="/timezones", structure=Sequence[mdls.Timezone], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3309,8 +3364,8 @@ def versions( path="/versions", structure=mdls.ApiVersion, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3335,8 +3390,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 @@ -3357,8 +3412,8 @@ def whitelabel_configuration( path="/whitelabel_configuration", structure=mdls.WhitelabelConfiguration, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3377,14 +3432,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. # @@ -3402,8 +3457,8 @@ def all_connections( path="/connections", structure=Sequence[mdls.DBConnection], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3422,8 +3477,8 @@ def create_connection( path="/connections", structure=mdls.DBConnection, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3446,8 +3501,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 @@ -3469,8 +3524,8 @@ def update_connection( path=f"/connections/{connection_name}", structure=mdls.DBConnection, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3490,8 +3545,8 @@ def delete_connection( self.delete( path=f"/connections/{connection_name}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3514,8 +3569,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 @@ -3545,8 +3600,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 @@ -3575,8 +3630,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 @@ -3596,8 +3651,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 @@ -3621,8 +3676,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 @@ -3643,8 +3698,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 @@ -3663,8 +3718,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 @@ -3684,8 +3739,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 @@ -3704,8 +3759,8 @@ def create_ssh_server( path="/ssh_servers", structure=mdls.SshServer, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3725,8 +3780,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 @@ -3748,8 +3803,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 @@ -3769,8 +3824,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 @@ -3790,8 +3845,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 @@ -3811,8 +3866,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 @@ -3831,8 +3886,8 @@ def create_ssh_tunnel( path="/ssh_tunnels", structure=mdls.SshTunnel, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3852,8 +3907,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 @@ -3875,8 +3930,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 @@ -3896,8 +3951,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 @@ -3917,8 +3972,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 @@ -3937,14 +3992,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 # @@ -4002,9 +4057,21 @@ 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, "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, + "limit": limit, + "offset": offset, + "sorts": sorts, + "fields": fields, + "filter_or": filter_or, + }, + transport_options=transport_options, + ), ) return response @@ -4027,8 +4094,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 @@ -4048,8 +4115,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 @@ -4068,8 +4135,8 @@ def create_content_favorite( path="/content_favorite", structure=mdls.ContentFavorite, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4091,8 +4158,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 @@ -4115,8 +4182,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 @@ -4138,8 +4205,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 @@ -4160,9 +4227,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 @@ -4183,10 +4253,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 @@ -4209,8 +4281,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 @@ -4230,8 +4302,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 @@ -4271,9 +4343,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 @@ -4309,9 +4388,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 @@ -4334,8 +4419,8 @@ def content_validation( path="/content_validation", structure=mdls.ContentValidation, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4399,9 +4484,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 @@ -4432,14 +4531,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 Dashboard: Manage Dashboards + # region Dashboard: Manage Dashboards # ### Get information about all active dashboards. # @@ -4463,8 +4562,8 @@ def all_dashboards( path="/dashboards", structure=Sequence[mdls.DashboardBase], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4496,8 +4595,8 @@ def create_dashboard( path="/dashboards", structure=mdls.Dashboard, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4583,9 +4682,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 @@ -4624,8 +4744,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 @@ -4658,8 +4778,8 @@ def sync_lookml_dashboard( structure=Sequence[int], query_params={"raw_locale": raw_locale}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4688,8 +4808,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 @@ -4720,8 +4840,8 @@ def update_dashboard( path=f"/dashboards/{dashboard_id}", structure=mdls.Dashboard, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4747,8 +4867,8 @@ def delete_dashboard( self.delete( path=f"/dashboards/{dashboard_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4770,8 +4890,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 @@ -4793,8 +4913,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 @@ -4822,8 +4942,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 @@ -4856,8 +4976,8 @@ def import_dashboard_from_lookml( path="/dashboards/lookml", structure=mdls.Dashboard, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4876,8 +4996,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 @@ -4908,8 +5028,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 @@ -4963,9 +5083,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 @@ -4988,8 +5116,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 @@ -5014,8 +5142,8 @@ def update_dashboard_element( structure=mdls.DashboardElement, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5035,8 +5163,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 @@ -5059,8 +5187,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 @@ -5084,8 +5212,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 @@ -5108,8 +5236,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 @@ -5134,8 +5262,8 @@ def update_dashboard_filter( structure=mdls.DashboardFilter, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5155,8 +5283,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 @@ -5179,8 +5307,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 @@ -5202,8 +5330,8 @@ def create_dashboard_filter( structure=mdls.DashboardFilter, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5219,15 +5347,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 @@ -5244,7 +5374,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( @@ -5252,8 +5384,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 @@ -5276,8 +5408,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 @@ -5300,8 +5432,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 @@ -5326,8 +5458,8 @@ def update_dashboard_layout( structure=mdls.DashboardLayout, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5347,8 +5479,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 @@ -5371,8 +5503,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 @@ -5394,14 +5526,14 @@ def create_dashboard_layout( structure=mdls.DashboardLayout, query_params={"fields": fields}, 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. # @@ -5418,8 +5550,8 @@ def perform_data_action( path="/data_actions", structure=mdls.DataActionResponse, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5438,14 +5570,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. # @@ -5460,8 +5592,8 @@ def all_datagroups( self.get( path="/datagroups", structure=Sequence[mdls.Datagroup], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5481,8 +5613,8 @@ def datagroup( self.get( path=f"/datagroups/{datagroup_id}", structure=mdls.Datagroup, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5504,14 +5636,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 # @@ -5534,8 +5666,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 @@ -5560,8 +5692,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 @@ -5592,9 +5724,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 @@ -5614,8 +5751,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 @@ -5638,14 +5775,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 # @@ -5686,9 +5823,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 @@ -5711,8 +5862,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 @@ -5734,8 +5885,8 @@ def update_folder( path=f"/folders/{folder_id}", structure=mdls.Folder, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5756,8 +5907,8 @@ def delete_folder( self.delete( path=f"/folders/{folder_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5782,8 +5933,8 @@ def all_folders( path="/folders", structure=Sequence[mdls.Folder], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5805,8 +5956,8 @@ def create_folder( path="/folders", structure=mdls.Folder, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5838,9 +5989,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 @@ -5867,8 +6025,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 @@ -5891,8 +6049,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 @@ -5915,8 +6073,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 @@ -5941,8 +6099,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 @@ -5965,14 +6123,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. # @@ -6005,9 +6163,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 @@ -6029,8 +6197,8 @@ def create_group( structure=mdls.Group, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6090,9 +6258,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 @@ -6152,9 +6331,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 @@ -6215,9 +6405,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 @@ -6240,8 +6441,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 @@ -6266,8 +6467,8 @@ def update_group( structure=mdls.Group, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6287,8 +6488,8 @@ def delete_group( self.delete( path=f"/groups/{group_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6311,8 +6512,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 @@ -6335,8 +6536,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 @@ -6368,9 +6569,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 @@ -6393,8 +6601,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 @@ -6417,8 +6625,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 @@ -6441,8 +6649,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 @@ -6470,8 +6678,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 @@ -6494,14 +6702,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. # @@ -6519,14 +6727,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. # @@ -6544,8 +6752,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 @@ -6569,8 +6777,8 @@ def create_integration_hub( structure=mdls.IntegrationHub, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6593,8 +6801,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 @@ -6621,8 +6829,8 @@ def update_integration_hub( structure=mdls.IntegrationHub, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6642,8 +6850,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 @@ -6663,8 +6871,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 @@ -6685,9 +6893,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 @@ -6710,8 +6921,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 @@ -6736,8 +6947,8 @@ def update_integration( structure=mdls.Integration, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6759,8 +6970,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 @@ -6780,14 +6991,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 JdbcInterface: LookML Model metadata for JDBC Clients + # region JdbcInterface: LookML Model metadata for JDBC Clients # ### Handle Avatica RPC Requests # @@ -6805,14 +7016,14 @@ def jdbc_interface( path="/__jdbc_interface__", structure=mdls.JdbcInterface, query_params={"avatica_request": avatica_request}, - 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 # @@ -6836,8 +7047,8 @@ def all_looks( path="/looks", structure=Sequence[mdls.Look], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6865,8 +7076,8 @@ def create_look( structure=mdls.LookWithQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6945,9 +7156,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 @@ -6972,8 +7202,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 @@ -7017,8 +7247,8 @@ def update_look( structure=mdls.LookWithQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7044,8 +7274,8 @@ def delete_look( self.delete( path=f"/looks/{look_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7109,9 +7339,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 @@ -7140,8 +7383,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 @@ -7169,14 +7412,14 @@ 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 - #endregion + # endregion - #region LookmlModel: Manage LookML Models + # region LookmlModel: Manage LookML Models # ### Get information about all lookml models. # @@ -7198,8 +7441,8 @@ def all_lookml_models( path="/lookml_models", structure=Sequence[mdls.LookmlModel], query_params={"fields": fields, "limit": limit, "offset": offset}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7218,8 +7461,8 @@ def create_lookml_model( path="/lookml_models", structure=mdls.LookmlModel, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7242,8 +7485,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 @@ -7265,8 +7508,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 @@ -7286,8 +7529,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 @@ -7313,14 +7556,14 @@ def lookml_model_explore( path=f"/lookml_models/{lookml_model_name}/explores/{explore_name}", structure=mdls.LookmlModelExplore, query_params={"fields": fields}, - transport_options=transport_options - ) + 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 # @@ -7367,8 +7610,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 @@ -7388,8 +7631,8 @@ def get_model( self.get( path=f"/models/{model_name}", structure=mdls.Model, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7417,8 +7660,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 @@ -7443,8 +7686,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 @@ -7471,8 +7714,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 @@ -7509,9 +7752,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 @@ -7543,9 +7793,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 @@ -7572,8 +7829,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 @@ -7603,14 +7860,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 # ### Generate Lockfile for All LookML Dependencies # @@ -7637,8 +7894,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 @@ -7660,8 +7917,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 @@ -7683,8 +7940,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 @@ -7714,8 +7971,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 @@ -7744,8 +8001,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 @@ -7770,8 +8027,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 @@ -7796,8 +8053,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 @@ -7830,8 +8087,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 @@ -7862,8 +8119,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 @@ -7885,8 +8142,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 @@ -7908,8 +8165,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 @@ -7931,8 +8188,8 @@ def all_projects( path="/projects", structure=Sequence[mdls.Project], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7957,8 +8214,8 @@ def create_project( path="/projects", structure=mdls.Project, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7983,8 +8240,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 @@ -8030,8 +8287,8 @@ def update_project( structure=mdls.Project, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8053,8 +8310,8 @@ def manifest( self.get( path=f"/projects/{project_id}/manifest", structure=mdls.Manifest, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8076,8 +8333,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 @@ -8105,8 +8362,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 @@ -8140,8 +8397,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 @@ -8172,8 +8429,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 @@ -8198,8 +8455,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 @@ -8224,8 +8481,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 @@ -8252,8 +8509,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 @@ -8285,8 +8542,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 @@ -8319,9 +8576,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 @@ -8348,8 +8608,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 @@ -8378,8 +8638,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 @@ -8408,10 +8668,14 @@ 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 - ) + transport_options=transport_options, + ), ) return response @@ -8441,8 +8705,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 @@ -8470,8 +8734,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 @@ -8493,14 +8757,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 # @@ -8547,10 +8811,24 @@ 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, "image_width": image_width, "image_height": image_height, "fields": fields}, - body=body, - transport_options=transport_options - ) + 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, + "image_width": image_width, + "image_height": image_height, + "fields": fields, + }, + body=body, + transport_options=transport_options, + ), ) return response @@ -8576,8 +8854,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 @@ -8606,8 +8884,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 @@ -8649,8 +8927,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 @@ -8689,8 +8967,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 @@ -8729,8 +9007,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 @@ -8759,8 +9037,8 @@ def create_query( structure=mdls.Query, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8829,9 +9107,23 @@ 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, "source": source}, - 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, + "source": source, + }, + transport_options=transport_options, + ), ) return response @@ -8925,10 +9217,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 @@ -9005,8 +9310,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 @@ -9031,8 +9336,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 @@ -9070,8 +9375,8 @@ def create_merge_query( structure=mdls.MergeQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9088,8 +9393,8 @@ def all_running_queries( self.get( path="/running_queries", structure=Sequence[mdls.RunningQueries], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9109,8 +9414,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 @@ -9130,8 +9435,8 @@ def sql_query( self.get( path=f"/sql_queries/{slug}", structure=mdls.SqlQuery, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9152,8 +9457,8 @@ def create_sql_query( path="/sql_queries", structure=mdls.SqlQuery, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9179,14 +9484,14 @@ def run_sql_query( path=f"/sql_queries/{slug}/run/{result_format}", structure=Union[str, bytes], # type: ignore 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. # @@ -9218,8 +9523,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 @@ -9253,8 +9558,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 @@ -9294,10 +9599,17 @@ 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}, + query_params={ + "width": width, + "height": height, + "fields": fields, + "pdf_paper_size": pdf_paper_size, + "pdf_landscape": pdf_landscape, + "long_tables": long_tables, + }, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9324,8 +9636,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 @@ -9361,8 +9673,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 @@ -9396,14 +9708,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 Role: Manage Roles + # region Role: Manage Roles # ### Search model sets # Returns all model set records that match the given search criteria. @@ -9457,9 +9769,19 @@ 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}, - 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, + }, + transport_options=transport_options, + ), ) return response @@ -9482,8 +9804,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 @@ -9505,8 +9827,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 @@ -9526,8 +9848,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 @@ -9547,8 +9869,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 @@ -9567,8 +9889,8 @@ def create_model_set( path="/model_sets", structure=mdls.ModelSet, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9585,8 +9907,8 @@ def all_permissions( self.get( path="/permissions", structure=Sequence[mdls.Permission], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9642,9 +9964,19 @@ 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}, - 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, + }, + transport_options=transport_options, + ), ) return response @@ -9667,8 +9999,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 @@ -9690,8 +10022,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 @@ -9711,8 +10043,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 @@ -9732,8 +10064,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 @@ -9752,8 +10084,8 @@ def create_permission_set( path="/permission_sets", structure=mdls.PermissionSet, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9775,8 +10107,8 @@ def all_roles( path="/roles", structure=Sequence[mdls.Role], query_params={"fields": fields, "ids": ids}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9795,8 +10127,8 @@ def create_role( path="/roles", structure=mdls.Role, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9852,9 +10184,18 @@ def search_roles( self.get( path="/roles/search", structure=Sequence[mdls.Role], - 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 @@ -9911,9 +10252,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 @@ -9933,8 +10283,8 @@ def role( self.get( path=f"/roles/{role_id}", structure=mdls.Role, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9956,8 +10306,8 @@ def update_role( path=f"/roles/{role_id}", structure=mdls.Role, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9977,8 +10327,8 @@ def delete_role( self.delete( path=f"/roles/{role_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10001,8 +10351,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 @@ -10026,8 +10376,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 @@ -10051,9 +10401,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 @@ -10075,14 +10428,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 # @@ -10105,8 +10458,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 @@ -10131,8 +10484,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 @@ -10195,8 +10548,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 @@ -10220,8 +10573,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 @@ -10254,9 +10607,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 @@ -10332,8 +10689,8 @@ def create_scheduled_plan( path="/scheduled_plans", structure=mdls.ScheduledPlan, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10388,8 +10745,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 @@ -10425,9 +10782,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 @@ -10463,9 +10824,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 @@ -10501,9 +10866,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 @@ -10571,14 +10940,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 Session: Session Information + # region Session: Session Information # ### Get API Session # @@ -10595,8 +10964,8 @@ def session( self.get( path="/session", structure=mdls.ApiSession, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10634,14 +11003,14 @@ def update_session( path="/session", structure=mdls.ApiSession, 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 # @@ -10665,8 +11034,8 @@ def all_themes( path="/themes", structure=Sequence[mdls.Theme], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10699,8 +11068,8 @@ def create_theme( path="/themes", structure=mdls.Theme, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10772,9 +11141,19 @@ 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}, - 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, + }, + transport_options=transport_options, + ), ) return response @@ -10800,8 +11179,8 @@ def default_theme( path="/themes/default", structure=mdls.Theme, query_params={"ts": ts}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10831,8 +11210,8 @@ def set_default_theme( path="/themes/default", structure=mdls.Theme, query_params={"name": name}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10864,8 +11243,8 @@ def active_themes( path="/themes/active", structure=Sequence[mdls.Theme], query_params={"name": name, "ts": ts, "fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10892,8 +11271,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 @@ -10918,8 +11297,8 @@ def validate_theme( path="/themes/validate", structure=mdls.ValidationError, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10946,8 +11325,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 @@ -10971,8 +11350,8 @@ def update_theme( path=f"/themes/{theme_id}", structure=mdls.Theme, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11000,14 +11379,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 # @@ -11064,9 +11443,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 @@ -11086,8 +11474,8 @@ def me( path="/user", structure=mdls.User, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11118,9 +11506,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 @@ -11142,8 +11538,8 @@ def create_user( structure=mdls.User, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11221,9 +11617,26 @@ 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, "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}, - 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, + "embed_user": embed_user, + "email": email, + "is_disabled": is_disabled, + "filter_or": filter_or, + "content_metadata_id": content_metadata_id, + "group_id": group_id, + }, + transport_options=transport_options, + ), ) return response @@ -11272,9 +11685,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 @@ -11301,8 +11727,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 @@ -11327,8 +11753,8 @@ def update_user( structure=mdls.User, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11350,8 +11776,8 @@ def delete_user( self.delete( path=f"/users/{user_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11406,8 +11832,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 @@ -11432,8 +11858,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 @@ -11460,8 +11886,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 @@ -11488,8 +11914,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 @@ -11511,8 +11937,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 @@ -11537,8 +11963,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 @@ -11566,8 +11992,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 @@ -11589,8 +12015,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 @@ -11615,8 +12041,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 @@ -11638,8 +12064,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 @@ -11664,8 +12090,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 @@ -11687,8 +12113,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 @@ -11713,8 +12139,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 @@ -11736,8 +12162,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 @@ -11762,8 +12188,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 @@ -11785,8 +12211,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 @@ -11814,8 +12240,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 @@ -11840,8 +12266,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 @@ -11866,8 +12292,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 @@ -11892,8 +12318,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 @@ -11921,8 +12347,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 @@ -11947,8 +12373,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 @@ -11973,8 +12399,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 @@ -11999,8 +12425,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 @@ -12022,8 +12448,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 @@ -12051,8 +12477,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 @@ -12077,8 +12503,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 @@ -12103,8 +12529,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 @@ -12139,8 +12565,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 @@ -12164,9 +12590,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 @@ -12191,8 +12620,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 @@ -12235,9 +12664,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 @@ -12264,8 +12698,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 @@ -12293,8 +12727,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 @@ -12325,8 +12759,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 @@ -12358,8 +12792,8 @@ def wipeout_user_emails( structure=mdls.User, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12380,14 +12814,14 @@ def create_embed_user( path="/users/embed_user", structure=mdls.UserPublic, 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. # @@ -12407,8 +12841,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 @@ -12439,8 +12873,8 @@ def create_user_attribute( structure=mdls.UserAttribute, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12463,8 +12897,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 @@ -12489,8 +12923,8 @@ def update_user_attribute( structure=mdls.UserAttribute, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12510,8 +12944,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 @@ -12540,8 +12974,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 @@ -12582,14 +13016,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 # @@ -12606,8 +13040,8 @@ def all_workspaces( self.get( path="/workspaces", structure=Sequence[mdls.Workspace], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12655,9 +13089,9 @@ def workspace( self.get( path=f"/workspaces/{workspace_id}", structure=mdls.Workspace, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion \ No newline at end of file + # endregion diff --git a/python/looker_sdk/sdk/api40/models.py b/python/looker_sdk/sdk/api40/models.py index 97f8e7d32..26a411473 100644 --- a/python/looker_sdk/sdk/api40/models.py +++ b/python/looker_sdk/sdk/api40/models.py @@ -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 @@ -100,6 +104,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"] @@ -154,37 +159,42 @@ 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, - 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, - 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, + 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, + 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 @@ -223,16 +233,20 @@ class AlertAppliedDashboardFilter(model.Model): filter_value: Field Value. [Filter Expressions](https://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 @@ -246,12 +260,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 @@ -265,6 +283,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 @@ -273,14 +292,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 @@ -295,14 +317,18 @@ class AlertField(model.Model): name: Field's name. Has the format `.` Refer to [docs](https://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 @@ -316,14 +342,14 @@ class AlertFieldFilter(model.Model): field_value: Field Value. Depends on the type of field - numeric or string. For [location](https://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://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 @@ -342,6 +368,7 @@ class AlertNotifications(model.Model): ran_at: The time at which the alert query ran alert: """ + notification_id: Optional[str] = None alert_condition_id: Optional[str] = None user_id: Optional[str] = None @@ -351,15 +378,18 @@ class AlertNotifications(model.Model): ran_at: Optional[str] = None alert: Optional["MobilePayload"] = 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): + 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 + ): self.notification_id = notification_id self.alert_condition_id = alert_condition_id self.user_id = user_id @@ -380,18 +410,22 @@ class AlertPatch(model.Model): is_public: Set alert public or private threshold: New threshold value """ + owner_id: Optional[str] = None is_disabled: Optional[bool] = None disabled_reason: Optional[str] = None is_public: Optional[bool] = None threshold: Optional[float] = 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): + 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 + ): self.owner_id = owner_id self.is_disabled = is_disabled self.disabled_reason = disabled_reason @@ -404,6 +438,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" @@ -421,14 +456,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 @@ -444,18 +483,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 @@ -472,16 +515,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 @@ -503,6 +550,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 @@ -514,17 +562,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 @@ -544,12 +595,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 @@ -561,12 +611,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 @@ -583,6 +632,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 @@ -591,14 +641,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 @@ -625,6 +678,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 @@ -638,19 +692,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 @@ -697,6 +754,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 @@ -725,34 +783,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 @@ -798,6 +859,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 @@ -810,18 +872,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 @@ -840,6 +905,7 @@ class Category(enum.Enum): Field category Valid values are: "parameter", "filter", "measure", "dimension". (Enum defined in LookmlModelExploreField) """ + parameter = "parameter" filter = "filter" measure = "measure" @@ -861,18 +927,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 @@ -887,12 +957,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 @@ -906,16 +975,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 @@ -927,6 +1000,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://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" @@ -963,6 +1037,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 @@ -980,23 +1055,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 @@ -1028,6 +1106,7 @@ class ContentFavorite(model.Model): dashboard: board_id: Id of a board """ + id: Optional[str] = None user_id: Optional[str] = None content_metadata_id: Optional[str] = None @@ -1037,15 +1116,18 @@ class ContentFavorite(model.Model): dashboard: Optional["DashboardBase"] = None board_id: Optional[str] = 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): + 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 + ): self.id = id self.user_id = user_id self.content_metadata_id = content_metadata_id @@ -1072,6 +1154,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 @@ -1084,18 +1167,21 @@ 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, - 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, + 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 @@ -1122,6 +1208,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 @@ -1129,13 +1216,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 @@ -1158,6 +1248,7 @@ class ContentSearch(model.Model): view_count: Number of times the content has been viewed preferred_viewer: Preferred way of viewing the content (only applies to dashboards) """ + can: Optional[MutableMapping[str, bool]] = None content_id: Optional[str] = None type: Optional[str] = None @@ -1168,16 +1259,19 @@ class ContentSearch(model.Model): view_count: Optional[int] = None preferred_viewer: 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): + 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 + ): self.can = can self.content_id = content_id self.type = type @@ -1202,6 +1296,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 @@ -1211,15 +1306,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 @@ -1243,6 +1341,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 @@ -1252,15 +1351,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 @@ -1281,18 +1383,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 @@ -1321,6 +1427,7 @@ class ContentValidationDashboardElement(model.Model): rich_content_json: JSON with all the properties required for rich editor and buttons elements extension_id: Extension ID """ + body_text: Optional[str] = None dashboard_id: Optional[str] = None id: Optional[str] = None @@ -1338,23 +1445,26 @@ class ContentValidationDashboardElement(model.Model): rich_content_json: Optional[str] = None extension_id: 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, - 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): + 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, + 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 + ): self.body_text = body_text self.dashboard_id = dashboard_id self.id = id @@ -1387,6 +1497,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 @@ -1397,16 +1508,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 @@ -1428,18 +1542,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 @@ -1454,12 +1572,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 @@ -1473,16 +1590,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 @@ -1497,14 +1618,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 @@ -1517,12 +1642,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 @@ -1535,14 +1661,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 @@ -1563,6 +1693,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 @@ -1574,17 +1705,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 @@ -1614,6 +1750,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 @@ -1627,19 +1764,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 @@ -1663,16 +1803,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 @@ -1688,16 +1832,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 @@ -1712,10 +1860,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 @@ -1732,6 +1880,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 @@ -1741,15 +1890,18 @@ 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, - 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, + client_secret: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.id = id self.client_id = client_id @@ -1780,6 +1932,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 @@ -1796,22 +1949,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 @@ -1836,12 +1992,16 @@ class CreateDashboardRenderTask(model.Model): dashboard_filters: Filter values to apply to the dashboard queries, in URL query format dashboard_style: Dashboard layout style: single_column or tiled """ + dashboard_filters: Optional[str] = None dashboard_style: Optional[str] = None - def __init__(self, *, - dashboard_filters: Optional[str] = None, - dashboard_style: Optional[str] = None): + def __init__( + self, + *, + dashboard_filters: Optional[str] = None, + dashboard_style: Optional[str] = None + ): self.dashboard_filters = dashboard_filters self.dashboard_style = dashboard_style @@ -1852,10 +2012,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 @@ -1866,12 +2026,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 @@ -1887,6 +2046,7 @@ class CreateOAuthApplicationUserStateRequest(model.Model): refresh_token: refresh_token_expires_at: """ + user_id: str oauth_application_id: str access_token: str @@ -1894,13 +2054,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 @@ -1916,12 +2079,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 @@ -1938,6 +2100,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 @@ -1952,17 +2115,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 @@ -1984,6 +2150,7 @@ class CredentialsApi3(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 id: Optional[str] = None client_id: Optional[str] = None @@ -1992,14 +2159,17 @@ class CredentialsApi3(model.Model): type: 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, - 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, + url: Optional[str] = None + ): self.can = can self.id = id self.client_id = client_id @@ -2026,6 +2196,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 @@ -2039,19 +2210,22 @@ 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, - 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, + type: Optional[str] = None, + url: Optional[str] = None, + user_url: Optional[str] = None + ): self.can = can self.created_at = created_at self.email = email @@ -2083,6 +2257,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 @@ -2096,19 +2271,22 @@ 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, - 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, + type: Optional[str] = None, + url: Optional[str] = None, + user_url: Optional[str] = None + ): self.can = can self.created_at = created_at self.email = email @@ -2137,6 +2315,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 @@ -2147,16 +2326,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 @@ -2182,6 +2364,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 @@ -2192,16 +2375,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 @@ -2227,6 +2413,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 @@ -2237,16 +2424,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 @@ -2272,6 +2462,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 @@ -2282,16 +2473,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 @@ -2316,6 +2510,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 @@ -2325,15 +2520,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 @@ -2357,6 +2555,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 @@ -2366,15 +2565,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 @@ -2398,6 +2600,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 @@ -2405,13 +2608,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 @@ -2429,16 +2635,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 @@ -2499,6 +2709,7 @@ class Dashboard(model.Model): appearance: url: Relative URL of the dashboard """ + can: Optional[MutableMapping[str, bool]] = None content_favorite_id: Optional[str] = None content_metadata_id: Optional[str] = None @@ -2549,56 +2760,59 @@ class Dashboard(model.Model): appearance: Optional["DashboardAppearance"] = None url: Optional[str] = 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, - alert_sync_with_dashboard_filter_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, - url: Optional[str] = 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, + alert_sync_with_dashboard_filter_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, + url: Optional[str] = None + ): self.can = can self.content_favorite_id = content_favorite_id self.content_metadata_id = content_metadata_id @@ -2615,7 +2829,9 @@ def __init__(self, *, self.user_id = user_id self.slug = slug self.preferred_viewer = preferred_viewer - 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.background_color = background_color self.created_at = created_at self.crossfilter_enabled = crossfilter_enabled @@ -2657,12 +2873,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 @@ -2679,6 +2899,7 @@ class DashboardAppearance(model.Model): tile_shadow: Tile shadow on/off key_color: Key color """ + page_side_margins: Optional[int] = None page_background_color: Optional[str] = None tile_title_alignment: Optional[str] = None @@ -2687,14 +2908,17 @@ class DashboardAppearance(model.Model): tile_shadow: Optional[bool] = None key_color: Optional[str] = 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): + 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 + ): self.page_side_margins = page_side_margins self.page_background_color = page_background_color self.tile_title_alignment = tile_title_alignment @@ -2725,6 +2949,7 @@ class DashboardBase(model.Model): slug: Content Metadata Slug preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) """ + can: Optional[MutableMapping[str, bool]] = None content_favorite_id: Optional[str] = None content_metadata_id: Optional[str] = None @@ -2742,23 +2967,26 @@ class DashboardBase(model.Model): slug: Optional[str] = None preferred_viewer: Optional[str] = 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): + 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 + ): self.can = can self.content_favorite_id = content_favorite_id self.content_metadata_id = content_metadata_id @@ -2812,6 +3040,7 @@ class DashboardElement(model.Model): subtitle_text_as_html: Text tile subtitle text as Html extension_id: Extension ID """ + can: Optional[MutableMapping[str, bool]] = None body_text: Optional[str] = None body_text_as_html: Optional[str] = None @@ -2843,37 +3072,40 @@ class DashboardElement(model.Model): subtitle_text_as_html: Optional[str] = None extension_id: Optional[str] = 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, - 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, - 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): + 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, + 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, + 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 + ): self.can = can self.body_text = body_text self.body_text_as_html = body_text_as_html @@ -2927,6 +3159,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 @@ -2944,23 +3177,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 @@ -2994,6 +3230,7 @@ class DashboardLayout(model.Model): dashboard_title: Title extracted from the dashboard this layout represents. dashboard_layout_components: Components """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None dashboard_id: Optional[str] = None @@ -3005,17 +3242,22 @@ class DashboardLayout(model.Model): dashboard_title: Optional[str] = None dashboard_layout_components: Optional[Sequence["DashboardLayoutComponent"]] = 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): + 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 + ): self.can = can self.id = id self.dashboard_id = dashboard_id @@ -3045,6 +3287,7 @@ class DashboardLayoutComponent(model.Model): element_title_hidden: Whether or not the dashboard element title is displayed. vis_type: Visualization type, extracted from a query's vis_config """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None dashboard_layout_id: Optional[str] = None @@ -3058,19 +3301,22 @@ class DashboardLayoutComponent(model.Model): element_title_hidden: Optional[bool] = None vis_type: Optional[str] = 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): + 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 + ): self.can = can self.id = id self.dashboard_layout_id = dashboard_layout_id @@ -3093,14 +3339,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 @@ -3113,12 +3363,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 @@ -3137,6 +3391,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 @@ -3147,16 +3402,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 @@ -3175,12 +3433,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 @@ -3192,12 +3449,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 @@ -3212,18 +3473,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 @@ -3238,12 +3503,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 @@ -3263,6 +3529,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 @@ -3274,17 +3541,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 @@ -3349,6 +3619,7 @@ class DBConnection(model.Model): 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. """ + can: Optional[MutableMapping[str, bool]] = None name: Optional[str] = None dialect: Optional["Dialect"] = None @@ -3397,54 +3668,57 @@ class DBConnection(model.Model): cost_estimate_enabled: Optional[bool] = None pdt_api_control_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, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - uses_oauth: 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_billing_gigabytes: Optional[str] = None, - ssl: Optional[bool] = None, - verify_ssl: Optional[bool] = None, - tmp_db_name: 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, - cost_estimate_enabled: Optional[bool] = None, - pdt_api_control_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, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + uses_oauth: 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_billing_gigabytes: Optional[str] = None, + ssl: Optional[bool] = None, + verify_ssl: Optional[bool] = None, + tmp_db_name: 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, + cost_estimate_enabled: Optional[bool] = None, + pdt_api_control_enabled: Optional[bool] = None + ): self.can = can self.name = name self.dialect = dialect @@ -3504,18 +3778,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 @@ -3540,6 +3818,7 @@ class DBConnectionOverride(model.Model): jdbc_additional_params: Additional params to add to JDBC connection string after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature """ + context: Optional[str] = None host: Optional[str] = None port: Optional[str] = None @@ -3553,19 +3832,22 @@ class DBConnectionOverride(model.Model): jdbc_additional_params: Optional[str] = None after_connect_statements: Optional[str] = None - def __init__(self, *, - context: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - has_password: Optional[bool] = None, - certificate: Optional[str] = None, - file_type: Optional[str] = None, - database: Optional[str] = None, - schema: Optional[str] = None, - jdbc_additional_params: Optional[str] = None, - after_connect_statements: Optional[str] = None): + def __init__( + self, + *, + context: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + has_password: Optional[bool] = None, + certificate: Optional[str] = None, + file_type: Optional[str] = None, + database: Optional[str] = None, + schema: Optional[str] = None, + jdbc_additional_params: Optional[str] = None, + after_connect_statements: Optional[str] = None + ): self.context = context self.host = host self.port = port @@ -3590,18 +3872,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 @@ -3618,16 +3904,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 @@ -3640,10 +3930,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 @@ -3652,6 +3942,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" @@ -3668,6 +3959,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" @@ -3682,6 +3974,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" @@ -3710,6 +4003,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 @@ -3725,21 +4019,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 @@ -3748,7 +4045,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 @@ -3769,6 +4068,7 @@ class DialectInfo(model.Model): name: The name of the dialect supported_options: """ + can: Optional[MutableMapping[str, bool]] = None default_max_connections: Optional[str] = None default_port: Optional[str] = None @@ -3778,15 +4078,18 @@ class DialectInfo(model.Model): name: Optional[str] = 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, - installed: Optional[bool] = None, - label: Optional[str] = None, - label_for_database_equivalent: Optional[str] = None, - name: Optional[str] = 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, + installed: Optional[bool] = None, + label: Optional[str] = None, + label_for_database_equivalent: Optional[str] = None, + name: Optional[str] = None, + supported_options: Optional["DialectInfoOptions"] = None + ): self.can = can self.default_max_connections = default_max_connections self.default_port = default_port @@ -3823,6 +4126,7 @@ class DialectInfoOptions(model.Model): username: Username can be specified username_required: Username is required """ + additional_params: Optional[bool] = None after_connect_statements: Optional[bool] = None analytical_view_dataset: Optional[bool] = None @@ -3845,28 +4149,31 @@ class DialectInfoOptions(model.Model): username: Optional[bool] = None username_required: 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, - disable_context_comment: Optional[bool] = None, - host: Optional[bool] = None, - instance_name: 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): + 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, + disable_context_comment: Optional[bool] = None, + host: Optional[bool] = None, + instance_name: 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 + ): self.additional_params = additional_params self.after_connect_statements = after_connect_statements self.analytical_view_dataset = analytical_view_dataset @@ -3896,10 +4203,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 @@ -3909,10 +4216,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 @@ -3925,16 +4232,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 @@ -3947,10 +4258,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 @@ -3970,6 +4281,7 @@ class EmbedConfig(model.Model): 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 @@ -3982,18 +4294,21 @@ class EmbedConfig(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 @@ -4025,6 +4340,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 @@ -4039,20 +4355,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 @@ -4076,11 +4395,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 session. """ + authentication_token: Optional[str] = None authentication_token_ttl: Optional[int] = None navigation_token: Optional[str] = None @@ -4090,15 +4410,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 @@ -4115,16 +4438,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 @@ -4137,10 +4464,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 @@ -4148,13 +4476,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 @@ -4171,14 +4502,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 @@ -4196,6 +4531,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 @@ -4204,14 +4540,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 @@ -4240,6 +4579,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 @@ -4255,21 +4595,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 @@ -4292,10 +4635,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 @@ -4306,12 +4649,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 @@ -4328,6 +4670,7 @@ class ExternalOauthApplication(model.Model): dialect_name: The database dialect for this application. created_at: Creation time for this application """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None name: Optional[str] = None @@ -4336,14 +4679,17 @@ class ExternalOauthApplication(model.Model): dialect_name: Optional[str] = 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, - dialect_name: Optional[str] = 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, + dialect_name: Optional[str] = None, + created_at: Optional[datetime.datetime] = None + ): self.can = can self.id = id self.name = name @@ -4358,6 +4704,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" @@ -4390,6 +4737,7 @@ class Folder(model.Model): dashboards: Dashboards looks: Looks """ + name: str parent_id: Optional[str] = None id: Optional[str] = None @@ -4409,25 +4757,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 @@ -4469,6 +4820,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 @@ -4486,23 +4838,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 @@ -4526,6 +4881,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" @@ -4557,6 +4913,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 @@ -4575,24 +4932,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 @@ -4620,14 +4980,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 @@ -4642,16 +5006,20 @@ 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 @@ -4667,16 +5035,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 @@ -4697,6 +5069,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 @@ -4707,16 +5080,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 @@ -4744,6 +5120,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 @@ -4756,18 +5133,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 @@ -4789,10 +5169,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 @@ -4804,10 +5184,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 @@ -4826,6 +5206,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 @@ -4837,17 +5218,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 @@ -4893,6 +5277,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 @@ -4922,35 +5307,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 @@ -4999,6 +5387,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 @@ -5013,20 +5402,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 @@ -5051,16 +5443,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 @@ -5090,6 +5486,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 @@ -5100,7 +5497,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 @@ -5109,25 +5508,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 @@ -5164,6 +5570,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 @@ -5176,18 +5583,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 @@ -5216,6 +5626,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 @@ -5227,17 +5638,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 @@ -5258,14 +5672,18 @@ class IntegrationRequiredField(model.Model): any_tag: If present, supercedes 'tag' and matches a field that has any of the provided tags. all_tags: If present, supercedes '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 @@ -5279,14 +5697,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 @@ -5299,12 +5721,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 @@ -5317,14 +5743,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 @@ -5335,6 +5765,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" @@ -5349,10 +5780,10 @@ class JdbcInterface(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 @@ -5404,6 +5835,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 @@ -5448,50 +5880,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 @@ -5544,12 +5979,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 @@ -5566,6 +6002,7 @@ class LDAPConfigTestResult(model.Model): user: url: Link to ldap config """ + details: Optional[str] = None issues: Optional[Sequence["LDAPConfigTestIssue"]] = None message: Optional[str] = None @@ -5574,14 +6011,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 @@ -5602,6 +6042,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 @@ -5609,13 +6050,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 @@ -5635,6 +6079,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 @@ -5642,13 +6087,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 @@ -5672,6 +6120,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 @@ -5683,17 +6132,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 @@ -5715,16 +6167,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 @@ -5740,16 +6196,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 @@ -5774,6 +6234,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 @@ -5788,20 +6249,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 @@ -5825,14 +6289,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 @@ -5845,12 +6313,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 @@ -5890,6 +6362,7 @@ class Look(model.Model): updated_at: Time that the Look was updated. view_count: Number of times viewed in the Looker web UI """ + can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[str] = None id: Optional[str] = None @@ -5921,37 +6394,40 @@ class Look(model.Model): updated_at: Optional[datetime.datetime] = None view_count: Optional[int] = 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, - 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, - view_count: Optional[int] = 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, + 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, + view_count: Optional[int] = None + ): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -5994,18 +6470,22 @@ class LookBasic(model.Model): title: Look Title user_id: User Id """ + 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 - 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): + 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 + ): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -6026,6 +6506,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 @@ -6035,15 +6516,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 @@ -6098,6 +6582,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 @@ -6127,7 +6612,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 @@ -6135,49 +6622,58 @@ 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, - supports_cost_estimate: Optional[bool] = None, - connection_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, + supports_cost_estimate: Optional[bool] = None, + connection_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 @@ -6226,12 +6722,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 @@ -6243,12 +6740,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 @@ -6260,12 +6756,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 @@ -6277,12 +6772,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 @@ -6296,16 +6790,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 @@ -6371,6 +6869,7 @@ class LookmlModelExploreField(model.Model): times_used: The number of times this field has been used in queries original_view: The name of the view this field is defined in. This will be different than "view" when the view has been joined via a different name using the "from" parameter. """ + align: Optional["Align"] = None can_filter: Optional[bool] = None category: Optional["Category"] = None @@ -6426,61 +6925,66 @@ class LookmlModelExploreField(model.Model): times_used: Optional[int] = None original_view: Optional[str] = None - def __init__(self, *, - align: Optional["Align"] = 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, - 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, - 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, - map_layer: Optional["LookmlModelExploreFieldMapLayer"] = None, - measure: Optional[bool] = None, - name: Optional[str] = None, - strict_value_format: Optional[bool] = None, - parameter: Optional[bool] = 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, - tags: Optional[Sequence[str]] = None, - type: Optional[str] = None, - user_attribute_filter_types: Optional[Sequence["UserAttributeFilterTypes"]] = None, - value_format: 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): + def __init__( + self, + *, + align: Optional["Align"] = 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, + 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, + 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, + map_layer: Optional["LookmlModelExploreFieldMapLayer"] = None, + measure: Optional[bool] = None, + name: Optional[str] = None, + strict_value_format: Optional[bool] = None, + parameter: Optional[bool] = 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, + tags: Optional[Sequence[str]] = None, + type: Optional[str] = None, + user_attribute_filter_types: Optional[ + Sequence["UserAttributeFilterTypes"] + ] = None, + value_format: 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 + ): self.align = align self.can_filter = can_filter self.category = category @@ -6544,12 +7048,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 @@ -6569,6 +7072,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 @@ -6580,17 +7084,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 @@ -6610,12 +7117,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 @@ -6629,16 +7135,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 @@ -6652,12 +7162,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 @@ -6669,12 +7178,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 @@ -6697,6 +7205,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 @@ -6711,20 +7220,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 @@ -6747,12 +7259,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 @@ -6764,12 +7277,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 @@ -6784,18 +7301,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 @@ -6815,6 +7336,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 @@ -6823,14 +7345,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 @@ -6853,6 +7378,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 @@ -6862,15 +7388,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 @@ -6888,12 +7417,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 @@ -6934,6 +7462,7 @@ class LookWithDashboards(model.Model): view_count: Number of times viewed in the Looker web UI dashboards: Dashboards """ + can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[str] = None id: Optional[str] = None @@ -6966,38 +7495,41 @@ class LookWithDashboards(model.Model): view_count: Optional[int] = 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, - 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, - view_count: Optional[int] = 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, + 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, + view_count: Optional[int] = None, + dashboards: Optional[Sequence["DashboardBase"]] = None + ): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -7068,6 +7600,7 @@ class LookWithQuery(model.Model): query: url: Url """ + can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[str] = None id: Optional[str] = None @@ -7101,39 +7634,42 @@ 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, - 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, - view_count: Optional[int] = 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, + 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, + view_count: Optional[int] = None, + query: Optional["Query"] = None, + url: Optional[str] = None + ): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -7177,16 +7713,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 @@ -7201,14 +7741,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 @@ -7221,12 +7765,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 @@ -7238,12 +7786,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 @@ -7263,6 +7815,7 @@ class MergeQuery(model.Model): total: Total vis_config: Visualization Config """ + can: Optional[MutableMapping[str, bool]] = None column_limit: Optional[str] = None dynamic_fields: Optional[str] = None @@ -7274,17 +7827,20 @@ class MergeQuery(model.Model): total: Optional[bool] = 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, - 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, + vis_config: Optional[MutableMapping[str, Any]] = None + ): self.can = can self.column_limit = column_limit self.dynamic_fields = dynamic_fields @@ -7305,14 +7861,18 @@ class MergeQuerySourceQuery(model.Model): name: Display name query_id: Id of the query to merge """ + merge_fields: Optional[Sequence["MergeFields"]] = None name: Optional[str] = None query_id: Optional[str] = None - def __init__(self, *, - merge_fields: Optional[Sequence["MergeFields"]] = None, - name: Optional[str] = None, - query_id: Optional[str] = None): + def __init__( + self, + *, + merge_fields: Optional[Sequence["MergeFields"]] = None, + name: Optional[str] = None, + query_id: Optional[str] = None + ): self.merge_fields = merge_fields self.name = name self.query_id = query_id @@ -7325,12 +7885,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 @@ -7346,6 +7910,7 @@ class MobilePayload(model.Model): dashboard_id: ID of the dashboard on which the alert has been set query_slug: Slug of the query which runs the alert queries. """ + alert_id: str title: Optional[str] = None investigative_content_id: Optional[str] = None @@ -7353,13 +7918,16 @@ class MobilePayload(model.Model): dashboard_id: Optional[str] = None query_slug: 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): + 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 + ): self.alert_id = alert_id self.title = title self.investigative_content_id = investigative_content_id @@ -7376,14 +7944,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 @@ -7397,19 +7969,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 @@ -7423,14 +7995,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 @@ -7446,18 +8022,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 @@ -7474,16 +8054,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 @@ -7502,6 +8086,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 @@ -7510,14 +8095,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 @@ -7534,12 +8122,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 @@ -7549,6 +8138,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" @@ -7580,6 +8170,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 @@ -7590,16 +8181,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 @@ -7649,6 +8243,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 @@ -7683,40 +8278,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 @@ -7762,18 +8360,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 @@ -7791,18 +8393,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 @@ -7818,14 +8424,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 @@ -7839,14 +8449,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 @@ -7862,18 +8476,22 @@ class PasswordConfig(model.Model): require_upperlower: Require at least one uppercase and one lowercase letter require_special: Require at least one special character """ + 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 - 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): + 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 + ): self.can = can self.min_length = min_length self.require_numeric = require_numeric @@ -7890,16 +8508,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 @@ -7918,6 +8540,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 @@ -7926,14 +8549,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 @@ -7948,6 +8574,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" @@ -7977,6 +8604,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 @@ -7993,22 +8621,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 @@ -8053,6 +8684,7 @@ class Project(model.Model): is_example: If true the project is an example project and cannot be modified dependency_status: Status of dependencies in your manifest & lockfile """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None name: Optional[str] = None @@ -8076,29 +8708,32 @@ class Project(model.Model): is_example: 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, - 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, - 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, + 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, + dependency_status: Optional[str] = None + ): self.can = can self.id = id self.name = name @@ -8140,6 +8775,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 @@ -8153,19 +8789,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 @@ -8194,6 +8833,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 @@ -8204,16 +8844,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 @@ -8234,16 +8877,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 @@ -8260,18 +8907,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 @@ -8292,6 +8943,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 @@ -8301,15 +8953,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 @@ -8325,6 +8980,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" @@ -8367,6 +9023,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 @@ -8394,33 +9051,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 @@ -8473,6 +9133,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 @@ -8493,26 +9154,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 @@ -8559,6 +9223,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 @@ -8580,27 +9245,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 @@ -8636,6 +9304,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 @@ -8645,15 +9314,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 @@ -8669,6 +9341,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". (Enum defined in CreateQueryTask) """ + inline_json = "inline_json" json = "json" json_detail = "json_detail" @@ -8697,16 +9370,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 @@ -8720,12 +9397,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 @@ -8745,6 +9426,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 @@ -8756,17 +9438,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 @@ -8793,6 +9478,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 @@ -8803,16 +9489,19 @@ 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, - 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, + url: Optional[str] = None, + users_url: Optional[str] = None + ): self.can = can self.id = id self.name = name @@ -8839,6 +9528,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 @@ -8850,17 +9540,20 @@ 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, - 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, + user_count: Optional[int] = None, + url: Optional[str] = None, + users_url: Optional[str] = None + ): self.can = can self.id = id self.name = name @@ -8899,6 +9592,7 @@ class RunningQueries(model.Model): runtime: Number of seconds elapsed running the Query sql: SQL text of the query as run """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None user: Optional["UserPublic"] = None @@ -8921,28 +9615,31 @@ class RunningQueries(model.Model): runtime: Optional[float] = None 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): + 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 + ): self.can = can self.id = id self.user = user @@ -9004,6 +9701,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 @@ -9038,40 +9736,43 @@ 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_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_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 @@ -9118,6 +9819,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 @@ -9125,13 +9827,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 @@ -9151,6 +9856,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 @@ -9158,13 +9864,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 @@ -9182,16 +9891,20 @@ class SamlMetadataParseResult(model.Model): idp_url: Identify Provider Url idp_cert: Identify Provider Certificate """ + can: Optional[MutableMapping[str, bool]] = None idp_issuer: Optional[str] = None idp_url: Optional[str] = None idp_cert: Optional[str] = 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): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + idp_issuer: Optional[str] = None, + idp_url: Optional[str] = None, + idp_cert: Optional[str] = None + ): self.can = can self.idp_issuer = idp_issuer self.idp_url = idp_url @@ -9207,16 +9920,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 @@ -9232,16 +9949,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 @@ -9291,6 +10012,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 @@ -9330,45 +10052,50 @@ 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, - query_id: 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, - inline_table_width: Optional[int] = 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, + query_id: 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, + inline_table_width: Optional[int] = 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 @@ -9418,13 +10145,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 @@ -9437,18 +10165,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 @@ -9469,12 +10200,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 @@ -9493,6 +10225,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 @@ -9503,16 +10236,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 @@ -9533,16 +10269,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 @@ -9560,6 +10300,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 @@ -9567,13 +10308,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 @@ -9591,16 +10335,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 @@ -9612,6 +10360,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" @@ -9641,6 +10390,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 @@ -9657,22 +10407,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 @@ -9701,6 +10454,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 @@ -9708,13 +10462,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 @@ -9747,6 +10504,7 @@ class Setting(model.Model): embed_enabled: True if embedding is enabled https://cloud.google.com/looker/docs/r/looker-core-feature-embed, false otherwise embed_config: """ + extension_framework_enabled: Optional[bool] = None extension_load_url_enabled: Optional[bool] = None marketplace_auto_install_enabled: Optional[bool] = None @@ -9767,26 +10525,29 @@ class Setting(model.Model): embed_enabled: Optional[bool] = None embed_config: Optional["EmbedConfig"] = 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_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): + 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_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 + ): 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 @@ -9816,14 +10577,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 @@ -9842,6 +10607,7 @@ class SmtpSettings(model.Model): ssl_version: TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2". default_smtp: Whether to enable built-in Looker SMTP """ + address: Optional[str] = None from_: Optional[str] = None user_name: Optional[str] = None @@ -9851,15 +10617,18 @@ class SmtpSettings(model.Model): ssl_version: Optional["SslVersion"] = 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, - 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, + default_smtp: Optional[bool] = None + ): self.address = address self.from_ = from_ self.user_name = user_name @@ -9878,14 +10647,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 @@ -9899,14 +10672,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 @@ -9931,6 +10708,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 @@ -9946,21 +10724,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 @@ -9987,18 +10768,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 @@ -10012,10 +10797,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 @@ -10033,6 +10818,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 @@ -10043,16 +10829,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 @@ -10080,6 +10869,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 @@ -10092,18 +10882,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 @@ -10122,6 +10915,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" @@ -10139,12 +10933,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 @@ -10159,18 +10954,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 @@ -10184,10 +10983,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 @@ -10198,12 +10997,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 @@ -10213,6 +11016,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" @@ -10229,6 +11033,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" @@ -10243,6 +11048,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", "xlsx", "html", "wysiwyg_pdf", "assembled_pdf", "wysiwyg_png", "csv_zip". (Enum defined in Integration) """ + txt = "txt" csv = "csv" inline_json = "inline_json" @@ -10268,6 +11074,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" @@ -10282,6 +11089,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" @@ -10302,6 +11110,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 @@ -10309,13 +11118,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 @@ -10374,6 +11186,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 @@ -10420,52 +11233,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 @@ -10521,14 +11337,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 @@ -10543,16 +11363,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 @@ -10566,12 +11390,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 @@ -10618,6 +11441,7 @@ class User(model.Model): is_iam_admin: User is an IAM Admin - only available in Looker (Google Cloud core) url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None avatar_url: Optional[str] = None avatar_url_without_sizing: Optional[str] = None @@ -10656,44 +11480,47 @@ class User(model.Model): is_iam_admin: Optional[bool] = 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, - 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, - 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, + 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, + url: Optional[str] = None + ): self.can = can self.avatar_url = avatar_url self.avatar_url_without_sizing = avatar_url_without_sizing @@ -10750,6 +11577,7 @@ class UserAttribute(model.Model): 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. """ + name: str label: str type: str @@ -10763,19 +11591,22 @@ class UserAttribute(model.Model): user_can_edit: Optional[bool] = None hidden_value_domain_whitelist: 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): + 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 + ): self.name = name self.label = label self.type = type @@ -10795,6 +11626,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" @@ -10825,6 +11657,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 @@ -10833,14 +11666,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 @@ -10866,6 +11702,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 @@ -10878,18 +11715,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 @@ -10909,10 +11749,10 @@ class UserEmailOnly(model.Model): Attributes: email: Email Address """ + email: str - def __init__(self, *, - email: str): + def __init__(self, *, email: str): self.email = email @@ -10931,6 +11771,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 @@ -10942,17 +11783,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 @@ -10977,6 +11821,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 @@ -10985,14 +11830,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 @@ -11010,14 +11858,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 @@ -11032,16 +11884,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 @@ -11053,6 +11909,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" @@ -11075,14 +11932,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 @@ -11109,6 +11970,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 @@ -11126,23 +11988,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 @@ -11169,14 +12034,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 @@ -11185,33 +12054,34 @@ 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://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 minumum, 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" }]` - 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 - 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://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 minumum, 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" }]` + 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 + 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"] @@ -11256,32 +12126,37 @@ 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, - 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, - 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, + 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, + 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 @@ -11309,44 +12184,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 @@ -11357,25 +12236,29 @@ 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, user_id, primary_homepage + Dynamic writeable type for Board removes: + can, content_metadata_id, created_at, board_sections, id, updated_at, user_id, 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 + 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 """ + deleted_at: Optional[datetime.datetime] = None description: Optional[str] = None section_order: Optional[Sequence[str]] = None title: 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): + def __init__( + self, + *, + deleted_at: Optional[datetime.datetime] = None, + description: Optional[str] = None, + section_order: Optional[Sequence[str]] = None, + title: Optional[str] = None + ): self.deleted_at = deleted_at self.description = description self.section_order = section_order @@ -11385,24 +12268,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 - - 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 + 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 """ + custom_description: Optional[str] = None custom_title: Optional[str] = None custom_url: Optional[str] = None @@ -11417,20 +12301,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 @@ -11449,28 +12336,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 @@ -11481,25 +12372,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 @@ -11509,27 +12404,31 @@ 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 + Dynamic writeable type for ContentFavorite removes: + id, look_id, dashboard_id, board_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 + 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 """ + user_id: Optional[str] = None content_metadata_id: Optional[str] = None look: Optional["WriteLookBasic"] = None 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): + def __init__( + self, + *, + user_id: Optional[str] = None, + content_metadata_id: Optional[str] = None, + look: Optional["WriteLookBasic"] = None, + dashboard: Optional["WriteDashboardBase"] = None + ): self.user_id = user_id self.content_metadata_id = content_metadata_id self.look = look @@ -11539,40 +12438,41 @@ 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, content_type, inheriting_id, slug + Dynamic writeable type for ContentMeta removes: + can, id, name, parent_id, dashboard_id, look_id, folder_id, content_type, inheriting_id, slug - Attributes: - inherits: Whether content inherits its access levels from parent + Attributes: + inherits: Whether content inherits its access levels from parent """ + 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 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 @@ -11587,20 +12487,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 @@ -11619,17 +12522,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". - 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". + 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 @@ -11642,16 +12546,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 @@ -11663,19 +12570,23 @@ def __init__(self, *, @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, 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, 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 @@ -11683,37 +12594,38 @@ 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, user_id, 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, 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 - slug: Content Metadata Slug - preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) - alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes - 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://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: + Dynamic writeable type for Dashboard removes: + can, content_favorite_id, content_metadata_id, id, model, readonly, refresh_interval_to_i, user_id, 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, 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 + slug: Content Metadata Slug + preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) + alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes + 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://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: """ + description: Optional[str] = None hidden: Optional[bool] = None query_timezone: Optional[str] = None @@ -11740,32 +12652,35 @@ class WriteDashboard(model.Model): title_color: Optional[str] = None appearance: Optional["DashboardAppearance"] = 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, - slug: Optional[str] = None, - preferred_viewer: Optional[str] = None, - alert_sync_with_dashboard_filter_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): + 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, + slug: Optional[str] = None, + preferred_viewer: Optional[str] = None, + alert_sync_with_dashboard_filter_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 + ): self.description = description self.hidden = hidden self.query_timezone = query_timezone @@ -11774,7 +12689,9 @@ def __init__(self, *, self.title = title self.slug = slug self.preferred_viewer = preferred_viewer - 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.background_color = background_color self.crossfilter_enabled = crossfilter_enabled self.deleted = deleted @@ -11796,51 +12713,52 @@ 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 + 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 """ + folder: Optional["WriteFolderBase"] = None - def __init__(self, *, - folder: Optional["WriteFolderBase"] = None): + def __init__(self, *, folder: Optional["WriteFolderBase"] = None): self.folder = folder @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 - 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, view_count, 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 - refresh_interval: Refresh Interval - result_maker: Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: -id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config - 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 + 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 + 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, view_count, 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 + refresh_interval: Refresh Interval + result_maker: Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: + id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config + 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 """ + body_text: Optional[str] = None dashboard_id: Optional[str] = None look: Optional["WriteLookWithQuery"] = None @@ -11862,27 +12780,32 @@ class WriteDashboardElement(model.Model): rich_content_json: Optional[str] = None extension_id: Optional[str] = None - def __init__(self, *, - body_text: Optional[str] = None, - dashboard_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, - 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): + def __init__( + self, + *, + body_text: Optional[str] = None, + dashboard_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, + 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 + ): self.body_text = body_text self.dashboard_id = dashboard_id self.look = look @@ -11908,23 +12831,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 @@ -11938,19 +12862,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 @@ -11968,28 +12895,32 @@ 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 + Attributes: + dashboard_id: Id of Dashboard + type: Type + active: Is Active + column_width: Column Width + width: Width """ + dashboard_id: Optional[str] = None type: Optional[str] = None active: Optional[bool] = None column_width: Optional[int] = None width: Optional[int] = 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): + 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 + ): self.dashboard_id = dashboard_id self.type = type self.active = active @@ -12000,17 +12931,18 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDashboardLayoutComponent(model.Model): """ - Dynamic writeable type for DashboardLayoutComponent removes: -can, id, deleted, element_title, element_title_hidden, vis_type + Dynamic writeable type for DashboardLayoutComponent removes: + can, id, deleted, 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 + Attributes: + dashboard_layout_id: Id of Dashboard Layout + dashboard_element_id: Id Of Dashboard Element + row: Row + column: Column + width: Width + height: Height """ + dashboard_layout_id: Optional[str] = None dashboard_element_id: Optional[str] = None row: Optional[int] = None @@ -12018,13 +12950,16 @@ class WriteDashboardLayoutComponent(model.Model): width: Optional[int] = None 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): + 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 + ): self.dashboard_layout_id = dashboard_layout_id self.dashboard_element_id = dashboard_element_id self.row = row @@ -12036,19 +12971,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 @@ -12056,19 +12992,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 @@ -12076,47 +13013,48 @@ 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, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed - - Attributes: - name: Name of the connection. Also used as the unique identifier - 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 - certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). - file_type: (Write-Only) Certificate keyfile type - .json 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_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) - 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 - 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. + Dynamic writeable type for DBConnection removes: + can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed + + Attributes: + name: Name of the connection. Also used as the unique identifier + 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 + certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). + file_type: (Write-Only) Certificate keyfile type - .json 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_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) + 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 + 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. """ + name: Optional[str] = None host: Optional[str] = None port: Optional[str] = None @@ -12153,42 +13091,45 @@ class WriteDBConnection(model.Model): cost_estimate_enabled: Optional[bool] = None pdt_api_control_enabled: Optional[bool] = None - def __init__(self, *, - name: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = 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_billing_gigabytes: Optional[str] = None, - ssl: Optional[bool] = None, - verify_ssl: Optional[bool] = None, - tmp_db_name: 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, - cost_estimate_enabled: Optional[bool] = None, - pdt_api_control_enabled: Optional[bool] = None): + def __init__( + self, + *, + name: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = 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_billing_gigabytes: Optional[str] = None, + ssl: Optional[bool] = None, + verify_ssl: Optional[bool] = None, + tmp_db_name: 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, + cost_estimate_enabled: Optional[bool] = None, + pdt_api_control_enabled: Optional[bool] = None + ): self.name = name self.host = host self.port = port @@ -12229,22 +13170,23 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDBConnectionOverride(model.Model): """ - Dynamic writeable type for DBConnectionOverride removes: -has_password + 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 - port: Port number on server - username: Username for server authentication - password: (Write-Only) Password for server authentication - certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). - file_type: (Write-Only) Certificate keyfile type - .json or .p12 - database: Database name - schema: Schema name - jdbc_additional_params: Additional params to add to JDBC connection string - after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature + Attributes: + context: Context in which to override (`pdt` is the only allowed value) + host: Host name/address of server + port: Port number on server + username: Username for server authentication + password: (Write-Only) Password for server authentication + certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). + file_type: (Write-Only) Certificate keyfile type - .json or .p12 + database: Database name + schema: Schema name + jdbc_additional_params: Additional params to add to JDBC connection string + after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature """ + context: Optional[str] = None host: Optional[str] = None port: Optional[str] = None @@ -12257,18 +13199,21 @@ class WriteDBConnectionOverride(model.Model): jdbc_additional_params: Optional[str] = None after_connect_statements: Optional[str] = None - def __init__(self, *, - context: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - certificate: Optional[str] = None, - file_type: Optional[str] = None, - database: Optional[str] = None, - schema: Optional[str] = None, - jdbc_additional_params: Optional[str] = None, - after_connect_statements: Optional[str] = None): + def __init__( + self, + *, + context: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + certificate: Optional[str] = None, + file_type: Optional[str] = None, + database: Optional[str] = None, + schema: Optional[str] = None, + jdbc_additional_params: Optional[str] = None, + after_connect_statements: Optional[str] = None + ): self.context = context self.host = host self.port = port @@ -12285,22 +13230,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 @@ -12309,25 +13258,29 @@ 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 - dialect_name: The database dialect for this application. + 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 + dialect_name: The database dialect for this application. """ + name: Optional[str] = None client_id: Optional[str] = None client_secret: Optional[str] = None dialect_name: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - client_id: Optional[str] = None, - client_secret: Optional[str] = None, - dialect_name: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + client_id: Optional[str] = None, + client_secret: Optional[str] = None, + dialect_name: Optional[str] = None + ): self.name = name self.client_id = client_id self.client_secret = client_secret @@ -12337,19 +13290,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 @@ -12357,19 +13309,18 @@ 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 @@ -12377,19 +13328,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 @@ -12397,22 +13352,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 @@ -12421,19 +13380,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 @@ -12441,35 +13401,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 @@ -12477,45 +13441,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 @@ -12551,41 +13516,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 @@ -12625,57 +13593,61 @@ 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 + Attributes: + user_id: User Id """ + 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 @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 @@ -12685,23 +13657,24 @@ 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, view_count, url + 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, view_count, url - Attributes: - title: Look Title - user_id: User Id - 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 + Attributes: + title: Look Title + user_id: User Id + 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 deleted: Optional[bool] = None @@ -12713,17 +13686,20 @@ 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, - 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, + 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.deleted = deleted @@ -12739,18 +13715,19 @@ def __init__(self, *, @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 - 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 + vis_config: Visualization Config """ + column_limit: Optional[str] = None dynamic_fields: Optional[str] = None pivots: Optional[Sequence[str]] = None @@ -12759,14 +13736,17 @@ class WriteMergeQuery(model.Model): total: Optional[bool] = 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, - 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, + vis_config: Optional[MutableMapping[str, Any]] = None + ): self.column_limit = column_limit self.dynamic_fields = dynamic_fields self.pivots = pivots @@ -12779,23 +13759,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 @@ -12803,19 +13779,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 @@ -12823,28 +13800,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 @@ -12855,35 +13836,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 @@ -12909,31 +13891,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 @@ -12963,25 +13948,29 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WritePasswordConfig(model.Model): """ - Dynamic writeable type for PasswordConfig removes: -can + Dynamic writeable type for PasswordConfig removes: + can - 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 + 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 """ + min_length: Optional[int] = None require_numeric: Optional[bool] = None require_upperlower: Optional[bool] = None require_special: Optional[bool] = None - def __init__(self, *, - min_length: Optional[int] = None, - require_numeric: Optional[bool] = None, - require_upperlower: Optional[bool] = None, - require_special: Optional[bool] = None): + def __init__( + self, + *, + min_length: Optional[int] = None, + require_numeric: Optional[bool] = None, + require_upperlower: Optional[bool] = None, + require_special: Optional[bool] = None + ): self.min_length = min_length self.require_numeric = require_numeric self.require_upperlower = require_upperlower @@ -12991,19 +13980,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 @@ -13011,24 +14001,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 @@ -13043,20 +14034,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 @@ -13075,29 +14069,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_example - - 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_example + + 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 @@ -13117,25 +14112,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 @@ -13159,30 +14157,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 - 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: Limit - 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 + 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: Limit + 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 @@ -13203,26 +14202,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 @@ -13247,22 +14249,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 @@ -13271,47 +14277,51 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteResultMakerWithIdVisConfigAndDynamicFields(model.Model): """ - Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: -id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config + Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: + id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config - Attributes: - query: Dynamic writeable type for Query removes: -can, id, slug, share_url, expanded_share_url, url, has_table_calculations + Attributes: + query: Dynamic writeable type for Query removes: + can, id, slug, share_url, expanded_share_url, url, has_table_calculations """ + query: Optional["WriteQuery"] = None - def __init__(self, *, - query: Optional["WriteQuery"] = None): + def __init__(self, *, query: Optional["WriteQuery"] = None): self.query = query @attr.s(auto_attribs=True, init=False) class WriteRole(model.Model): """ - Dynamic writeable type for Role removes: -can, id, url, users_url + Dynamic writeable type for Role removes: + can, id, 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 @@ -13322,35 +14332,36 @@ 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_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_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_url: Optional[str] = None @@ -13376,31 +14387,34 @@ 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_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_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_url = idp_url @@ -13430,41 +14444,42 @@ 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) - query_id: Query id - 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 - inline_table_width: The pixel width at which we render the inline table visualizations + 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) + query_id: Query id + 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 + inline_table_width: The pixel width at which we render the inline table visualizations """ + name: Optional[str] = None user_id: Optional[str] = None run_as_recipient: Optional[bool] = None @@ -13496,37 +14511,42 @@ class WriteScheduledPlan(model.Model): long_tables: Optional[bool] = None inline_table_width: Optional[int] = 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, - query_id: 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, - inline_table_width: Optional[int] = 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, + query_id: 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, + inline_table_width: Optional[int] = None + ): self.name = name self.user_id = user_id self.run_as_recipient = run_as_recipient @@ -13562,28 +14582,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 @@ -13594,29 +14618,30 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteSetting(model.Model): """ - Dynamic writeable type for Setting removes: -marketplace_site, embed_enabled - - 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 Setting removes: + marketplace_site, embed_enabled + + 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: """ + extension_framework_enabled: Optional[bool] = None extension_load_url_enabled: Optional[bool] = None marketplace_auto_install_enabled: Optional[bool] = None @@ -13635,24 +14660,27 @@ class WriteSetting(model.Model): embed_cookieless_v2: Optional[bool] = None embed_config: Optional["EmbedConfig"] = 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["EmbedConfig"] = 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["EmbedConfig"] = 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 @@ -13675,25 +14703,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 @@ -13703,25 +14735,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 @@ -13731,25 +14767,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 @@ -13759,20 +14799,21 @@ 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, 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, 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, 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, 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, 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. + 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, 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. """ + credentials_email: Optional["WriteCredentialsEmail"] = None first_name: Optional[str] = None home_folder_id: Optional[str] = None @@ -13782,15 +14823,18 @@ class WriteUser(model.Model): models_dir_validated: Optional[bool] = None ui_state: Optional[MutableMapping[str, Any]] = 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): + 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 + ): self.credentials_email = credentials_email self.first_name = first_name self.home_folder_id = home_folder_id @@ -13804,19 +14848,20 @@ 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") - 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. + Attributes: + name: Name of user attribute + label: Human-friendly label for user attribute + type: Type of user attribute ("string", "number", "datetime", "yesno", "zipcode") + 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. """ + name: str label: str type: str @@ -13826,15 +14871,18 @@ class WriteUserAttribute(model.Model): user_can_edit: Optional[bool] = None hidden_value_domain_whitelist: 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): + 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 + ): self.name = name self.label = label self.type = type @@ -13848,40 +14896,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 @@ -13896,20 +14945,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 @@ -13924,6 +14976,7 @@ def __init__(self, *, self.alerts_links = alerts_links self.folders_mentions = folders_mentions + import functools # noqa:E402 forward_ref_structure_hook = functools.partial( @@ -13932,12 +14985,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 ) From e4a77d2fb2c8f304adb626b3e01e29815face5aa Mon Sep 17 00:00:00 2001 From: Jeremy Chang Date: Mon, 14 Aug 2023 19:07:07 +0000 Subject: [PATCH 5/5] feat: generate SDKs for Looker 23.14 Release-As: 23.14.0 --- bin/sdk_gen | 2 +- go/sdk/v4/methods.go | 12 +- go/sdk/v4/models.go | 68 +- packages/sdk/src/3.1/funcs.ts | 15 +- packages/sdk/src/3.1/methods.ts | 15 +- packages/sdk/src/3.1/methodsInterface.ts | 15 +- packages/sdk/src/3.1/models.ts | 116 +- packages/sdk/src/3.1/streams.ts | 15 +- packages/sdk/src/4.0/funcs.ts | 30 +- packages/sdk/src/4.0/methods.ts | 30 +- packages/sdk/src/4.0/methodsInterface.ts | 30 +- packages/sdk/src/4.0/models.ts | 206 +- packages/sdk/src/4.0/streams.ts | 30 +- python/looker_sdk/sdk/api31/methods.py | 1980 +++-- python/looker_sdk/sdk/api31/models.py | 6919 ++++++++---------- python/looker_sdk/sdk/api40/methods.py | 2394 +++---- python/looker_sdk/sdk/api40/models.py | 8357 ++++++++++------------ 17 files changed, 8988 insertions(+), 11246 deletions(-) diff --git a/bin/sdk_gen b/bin/sdk_gen index b0d6dcb54..5fdbbac57 100755 --- a/bin/sdk_gen +++ b/bin/sdk_gen @@ -23,7 +23,7 @@ async function sleep(ms) { /** wait for the Looker CI image to be responsive */ const waitForLooker = async () => { - const max_tries = 30 + const max_tries = 90 const delay = 5 let alive = false let tries = 1 diff --git a/go/sdk/v4/methods.go b/go/sdk/v4/methods.go index 91ba2707d..8c32c7168 100644 --- a/go/sdk/v4/methods.go +++ b/go/sdk/v4/methods.go @@ -3852,7 +3852,7 @@ func (l *LookerSDK) SearchGroups(request RequestSearchGroups, // Boolean search params accept only "true" and "false" as values. // // GET /groups/search/with_roles -> []GroupSearch -func (l *LookerSDK) SearchGroupsWithRoles(request RequestSearchGroups, +func (l *LookerSDK) SearchGroupsWithRoles(request RequestSearchGroupsWithRoles, options *rtl.ApiSettings) ([]GroupSearch, error) { var result []GroupSearch err := l.session.Do(&result, "GET", "/4.0", "/groups/search/with_roles", map[string]interface{}{"fields": request.Fields, "limit": request.Limit, "offset": request.Offset, "sorts": request.Sorts, "filter_or": request.FilterOr, "id": request.Id, "name": request.Name, "external_group_id": request.ExternalGroupId, "externally_managed": request.ExternallyManaged, "externally_orphaned": request.ExternallyOrphaned}, nil, options) @@ -3887,7 +3887,7 @@ func (l *LookerSDK) SearchGroupsWithRoles(request RequestSearchGroups, // Boolean search params accept only "true" and "false" as values. // // GET /groups/search/with_hierarchy -> []GroupHierarchy -func (l *LookerSDK) SearchGroupsWithHierarchy(request RequestSearchGroups, +func (l *LookerSDK) SearchGroupsWithHierarchy(request RequestSearchGroupsWithHierarchy, options *rtl.ApiSettings) ([]GroupHierarchy, error) { var result []GroupHierarchy err := l.session.Do(&result, "GET", "/4.0", "/groups/search/with_hierarchy", map[string]interface{}{"fields": request.Fields, "limit": request.Limit, "offset": request.Offset, "sorts": request.Sorts, "filter_or": request.FilterOr, "id": request.Id, "name": request.Name, "external_group_id": request.ExternalGroupId, "externally_managed": request.ExternallyManaged, "externally_orphaned": request.ExternallyOrphaned}, nil, options) @@ -4462,7 +4462,7 @@ func (l *LookerSDK) MoveLook( // ### Get information about all lookml models. // // GET /lookml_models -> []LookmlModel -func (l *LookerSDK) AllLookmlModels(request RequestArtifactNamespaces, +func (l *LookerSDK) AllLookmlModels(request RequestAllLookmlModels, options *rtl.ApiSettings) ([]LookmlModel, error) { var result []LookmlModel err := l.session.Do(&result, "GET", "/4.0", "/lookml_models", map[string]interface{}{"fields": request.Fields, "limit": request.Limit, "offset": request.Offset}, nil, options) @@ -6013,7 +6013,7 @@ func (l *LookerSDK) AllPermissions( // Boolean search params accept only "true" and "false" as values. // // GET /permission_sets/search -> []PermissionSet -func (l *LookerSDK) SearchPermissionSets(request RequestSearchModelSets, +func (l *LookerSDK) SearchPermissionSets(request RequestSearchPermissionSets, options *rtl.ApiSettings) ([]PermissionSet, error) { var result []PermissionSet err := l.session.Do(&result, "GET", "/4.0", "/permission_sets/search", map[string]interface{}{"fields": request.Fields, "limit": request.Limit, "offset": request.Offset, "sorts": request.Sorts, "id": request.Id, "name": request.Name, "all_access": request.AllAccess, "built_in": request.BuiltIn, "filter_or": request.FilterOr}, nil, options) @@ -6170,7 +6170,7 @@ func (l *LookerSDK) SearchRoles(request RequestSearchRoles, // Boolean search params accept only "true" and "false" as values. // // GET /roles/search/with_user_count -> []RoleSearch -func (l *LookerSDK) SearchRolesWithUserCount(request RequestSearchRoles, +func (l *LookerSDK) SearchRolesWithUserCount(request RequestSearchRolesWithUserCount, options *rtl.ApiSettings) ([]RoleSearch, error) { var result []RoleSearch err := l.session.Do(&result, "GET", "/4.0", "/roles/search/with_user_count", map[string]interface{}{"fields": request.Fields, "limit": request.Limit, "offset": request.Offset, "sorts": request.Sorts, "id": request.Id, "name": request.Name, "built_in": request.BuiltIn, "filter_or": request.FilterOr}, nil, options) @@ -7765,7 +7765,7 @@ func (l *LookerSDK) CreateEmbedUser( // ### Get information about all user attributes. // // GET /user_attributes -> []UserAttribute -func (l *LookerSDK) AllUserAttributes(request RequestAllBoardSections, +func (l *LookerSDK) AllUserAttributes(request RequestAllUserAttributes, options *rtl.ApiSettings) ([]UserAttribute, error) { var result []UserAttribute err := l.session.Do(&result, "GET", "/4.0", "/user_attributes", map[string]interface{}{"fields": request.Fields, "sorts": request.Sorts}, nil, options) diff --git a/go/sdk/v4/models.go b/go/sdk/v4/models.go index a7dfae9d5..751e011c5 100644 --- a/go/sdk/v4/models.go +++ b/go/sdk/v4/models.go @@ -26,7 +26,7 @@ SOFTWARE. /* -389 API models: 247 Spec, 60 Request, 60 Write, 22 Enum +394 API models: 247 Spec, 66 Request, 59 Write, 22 Enum */ // NOTE: Do not edit this file generated by Looker SDK Codegen for API v4 @@ -2424,6 +2424,13 @@ type RequestAllIntegrations struct { IntegrationHubId *string `json:"integration_hub_id,omitempty"` // Filter to a specific provider } +// Dynamically generated request type for all_lookml_models +type RequestAllLookmlModels struct { + Fields *string `json:"fields,omitempty"` // Requested fields. + Limit *int64 `json:"limit,omitempty"` // Number of results to return. (can be used with offset) + Offset *int64 `json:"offset,omitempty"` // Number of results to skip before returning any. (Defaults to 0 if not set when limit is used) +} + // Dynamically generated request type for all_roles type RequestAllRoles struct { Fields *string `json:"fields,omitempty"` // Requested fields. @@ -2437,6 +2444,12 @@ type RequestAllScheduledPlans struct { AllUsers *bool `json:"all_users,omitempty"` // Return scheduled plans belonging to all users (caller needs see_schedules permission) } +// Dynamically generated request type for all_user_attributes +type RequestAllUserAttributes struct { + Fields *string `json:"fields,omitempty"` // Requested fields. + Sorts *string `json:"sorts,omitempty"` // Fields to order the results by. Sortable fields include: name, label +} + // Dynamically generated request type for all_users type RequestAllUsers struct { Fields *string `json:"fields,omitempty"` // Requested fields. @@ -2879,6 +2892,34 @@ type RequestSearchGroups struct { ExternallyOrphaned *bool `json:"externally_orphaned,omitempty"` // Match group externally_orphaned. } +// Dynamically generated request type for search_groups_with_hierarchy +type RequestSearchGroupsWithHierarchy struct { + Fields *string `json:"fields,omitempty"` // Requested fields. + Limit *int64 `json:"limit,omitempty"` // Number of results to return (used with `offset`). + Offset *int64 `json:"offset,omitempty"` // Number of results to skip before returning any (used with `limit`). + Sorts *string `json:"sorts,omitempty"` // Fields to sort by. + FilterOr *bool `json:"filter_or,omitempty"` // Combine given search criteria in a boolean OR expression + Id *string `json:"id,omitempty"` // Match group id. + Name *string `json:"name,omitempty"` // Match group name. + ExternalGroupId *string `json:"external_group_id,omitempty"` // Match group external_group_id. + ExternallyManaged *bool `json:"externally_managed,omitempty"` // Match group externally_managed. + ExternallyOrphaned *bool `json:"externally_orphaned,omitempty"` // Match group externally_orphaned. +} + +// Dynamically generated request type for search_groups_with_roles +type RequestSearchGroupsWithRoles struct { + Fields *string `json:"fields,omitempty"` // Requested fields. + Limit *int64 `json:"limit,omitempty"` // Number of results to return (used with `offset`). + Offset *int64 `json:"offset,omitempty"` // Number of results to skip before returning any (used with `limit`). + Sorts *string `json:"sorts,omitempty"` // Fields to sort by. + FilterOr *bool `json:"filter_or,omitempty"` // Combine given search criteria in a boolean OR expression + Id *string `json:"id,omitempty"` // Match group id. + Name *string `json:"name,omitempty"` // Match group name. + ExternalGroupId *string `json:"external_group_id,omitempty"` // Match group external_group_id. + ExternallyManaged *bool `json:"externally_managed,omitempty"` // Match group externally_managed. + ExternallyOrphaned *bool `json:"externally_orphaned,omitempty"` // Match group externally_orphaned. +} + // Dynamically generated request type for search_looks type RequestSearchLooks struct { Id *string `json:"id,omitempty"` // Match look id. @@ -2914,6 +2955,19 @@ type RequestSearchModelSets struct { FilterOr *bool `json:"filter_or,omitempty"` // Combine given search criteria in a boolean OR expression. } +// Dynamically generated request type for search_permission_sets +type RequestSearchPermissionSets struct { + Fields *string `json:"fields,omitempty"` // Requested fields. + Limit *int64 `json:"limit,omitempty"` // Number of results to return (used with `offset`). + Offset *int64 `json:"offset,omitempty"` // Number of results to skip before returning any (used with `limit`). + Sorts *string `json:"sorts,omitempty"` // Fields to sort by. + Id *string `json:"id,omitempty"` // Match permission set id. + Name *string `json:"name,omitempty"` // Match permission set name. + AllAccess *bool `json:"all_access,omitempty"` // Match permission sets by all_access status. + BuiltIn *bool `json:"built_in,omitempty"` // Match permission sets by built_in status. + FilterOr *bool `json:"filter_or,omitempty"` // Combine given search criteria in a boolean OR expression. +} + // Dynamically generated request type for search_roles type RequestSearchRoles struct { Fields *string `json:"fields,omitempty"` // Requested fields. @@ -2926,6 +2980,18 @@ type RequestSearchRoles struct { FilterOr *bool `json:"filter_or,omitempty"` // Combine given search criteria in a boolean OR expression. } +// Dynamically generated request type for search_roles_with_user_count +type RequestSearchRolesWithUserCount struct { + Fields *string `json:"fields,omitempty"` // Requested fields. + Limit *int64 `json:"limit,omitempty"` // Number of results to return (used with `offset`). + Offset *int64 `json:"offset,omitempty"` // Number of results to skip before returning any (used with `limit`). + Sorts *string `json:"sorts,omitempty"` // Fields to sort by. + Id *string `json:"id,omitempty"` // Match role id. + Name *string `json:"name,omitempty"` // Match role name. + BuiltIn *bool `json:"built_in,omitempty"` // Match roles by built_in status. + FilterOr *bool `json:"filter_or,omitempty"` // Combine given search criteria in a boolean OR expression. +} + // Dynamically generated request type for search_themes type RequestSearchThemes struct { Id *string `json:"id,omitempty"` // Match theme id. diff --git a/packages/sdk/src/3.1/funcs.ts b/packages/sdk/src/3.1/funcs.ts index a57181824..412f3938e 100644 --- a/packages/sdk/src/3.1/funcs.ts +++ b/packages/sdk/src/3.1/funcs.ts @@ -138,6 +138,7 @@ import type { IRequestAllIntegrations, IRequestAllRoles, IRequestAllScheduledPlans, + IRequestAllUserAttributes, IRequestAllUsers, IRequestContentThumbnail, IRequestCreateDashboardElement, @@ -164,10 +165,12 @@ import type { IRequestSearchContentViews, IRequestSearchDashboardElements, IRequestSearchDashboards, + IRequestSearchFolders, IRequestSearchGroups, IRequestSearchHomepages, IRequestSearchLooks, IRequestSearchModelSets, + IRequestSearchPermissionSets, IRequestSearchRoles, IRequestSearchSpaces, IRequestSearchThemes, @@ -3815,13 +3818,13 @@ export const stop_pdt_build = async ( * GET /folders/search -> IFolder[] * * @param sdk IAPIMethods implementation - * @param request composed interface "IRequestSearchSpaces" for complex method parameters + * @param request composed interface "IRequestSearchFolders" for complex method parameters * @param options one-time API call overrides * */ export const search_folders = async ( sdk: IAPIMethods, - request: IRequestSearchSpaces, + request: IRequestSearchFolders, options?: Partial ): Promise> => { return sdk.get( @@ -7767,13 +7770,13 @@ export const all_permissions = async ( * GET /permission_sets/search -> IPermissionSet[] * * @param sdk IAPIMethods implementation - * @param request composed interface "IRequestSearchModelSets" for complex method parameters + * @param request composed interface "IRequestSearchPermissionSets" for complex method parameters * @param options one-time API call overrides * */ export const search_permission_sets = async ( sdk: IAPIMethods, - request: IRequestSearchModelSets, + request: IRequestSearchPermissionSets, options?: Partial ): Promise> => { return sdk.get( @@ -10731,13 +10734,13 @@ export const delete_user_attribute_user_value = async ( * GET /user_attributes -> IUserAttribute[] * * @param sdk IAPIMethods implementation - * @param request composed interface "IRequestAllHomepageSections" for complex method parameters + * @param request composed interface "IRequestAllUserAttributes" for complex method parameters * @param options one-time API call overrides * */ export const all_user_attributes = async ( sdk: IAPIMethods, - request: IRequestAllHomepageSections, + request: IRequestAllUserAttributes, options?: Partial ): Promise> => { return sdk.get( diff --git a/packages/sdk/src/3.1/methods.ts b/packages/sdk/src/3.1/methods.ts index eb980bfdc..60efac03c 100644 --- a/packages/sdk/src/3.1/methods.ts +++ b/packages/sdk/src/3.1/methods.ts @@ -136,6 +136,7 @@ import type { IRequestAllIntegrations, IRequestAllRoles, IRequestAllScheduledPlans, + IRequestAllUserAttributes, IRequestAllUsers, IRequestContentThumbnail, IRequestCreateDashboardElement, @@ -162,10 +163,12 @@ import type { IRequestSearchContentViews, IRequestSearchDashboardElements, IRequestSearchDashboards, + IRequestSearchFolders, IRequestSearchGroups, IRequestSearchHomepages, IRequestSearchLooks, IRequestSearchModelSets, + IRequestSearchPermissionSets, IRequestSearchRoles, IRequestSearchSpaces, IRequestSearchThemes, @@ -3568,12 +3571,12 @@ export class Looker31SDK extends APIMethods implements ILooker31SDK { * * GET /folders/search -> IFolder[] * - * @param request composed interface "IRequestSearchSpaces" for complex method parameters + * @param request composed interface "IRequestSearchFolders" for complex method parameters * @param options one-time API call overrides * */ async search_folders( - request: IRequestSearchSpaces, + request: IRequestSearchFolders, options?: Partial ): Promise> { return this.get( @@ -7288,12 +7291,12 @@ export class Looker31SDK extends APIMethods implements ILooker31SDK { * * GET /permission_sets/search -> IPermissionSet[] * - * @param request composed interface "IRequestSearchModelSets" for complex method parameters + * @param request composed interface "IRequestSearchPermissionSets" for complex method parameters * @param options one-time API call overrides * */ async search_permission_sets( - request: IRequestSearchModelSets, + request: IRequestSearchPermissionSets, options?: Partial ): Promise> { return this.get( @@ -10079,12 +10082,12 @@ export class Looker31SDK extends APIMethods implements ILooker31SDK { * * GET /user_attributes -> IUserAttribute[] * - * @param request composed interface "IRequestAllHomepageSections" for complex method parameters + * @param request composed interface "IRequestAllUserAttributes" for complex method parameters * @param options one-time API call overrides * */ async all_user_attributes( - request: IRequestAllHomepageSections, + request: IRequestAllUserAttributes, options?: Partial ): Promise> { return this.get( diff --git a/packages/sdk/src/3.1/methodsInterface.ts b/packages/sdk/src/3.1/methodsInterface.ts index 1ae6779b1..e15274be8 100644 --- a/packages/sdk/src/3.1/methodsInterface.ts +++ b/packages/sdk/src/3.1/methodsInterface.ts @@ -133,6 +133,7 @@ import type { IRequestAllIntegrations, IRequestAllRoles, IRequestAllScheduledPlans, + IRequestAllUserAttributes, IRequestAllUsers, IRequestContentThumbnail, IRequestCreateDashboardElement, @@ -159,10 +160,12 @@ import type { IRequestSearchContentViews, IRequestSearchDashboardElements, IRequestSearchDashboards, + IRequestSearchFolders, IRequestSearchGroups, IRequestSearchHomepages, IRequestSearchLooks, IRequestSearchModelSets, + IRequestSearchPermissionSets, IRequestSearchRoles, IRequestSearchSpaces, IRequestSearchThemes, @@ -2595,12 +2598,12 @@ export interface ILooker31SDK extends IAPIMethods { * * GET /folders/search -> IFolder[] * - * @param request composed interface "IRequestSearchSpaces" for complex method parameters + * @param request composed interface "IRequestSearchFolders" for complex method parameters * @param options one-time API call overrides * */ search_folders( - request: IRequestSearchSpaces, + request: IRequestSearchFolders, options?: Partial ): Promise> @@ -5217,12 +5220,12 @@ export interface ILooker31SDK extends IAPIMethods { * * GET /permission_sets/search -> IPermissionSet[] * - * @param request composed interface "IRequestSearchModelSets" for complex method parameters + * @param request composed interface "IRequestSearchPermissionSets" for complex method parameters * @param options one-time API call overrides * */ search_permission_sets( - request: IRequestSearchModelSets, + request: IRequestSearchPermissionSets, options?: Partial ): Promise> @@ -7267,12 +7270,12 @@ export interface ILooker31SDK extends IAPIMethods { * * GET /user_attributes -> IUserAttribute[] * - * @param request composed interface "IRequestAllHomepageSections" for complex method parameters + * @param request composed interface "IRequestAllUserAttributes" for complex method parameters * @param options one-time API call overrides * */ all_user_attributes( - request: IRequestAllHomepageSections, + request: IRequestAllUserAttributes, options?: Partial ): Promise> diff --git a/packages/sdk/src/3.1/models.ts b/packages/sdk/src/3.1/models.ts index 433fae991..f916b172e 100644 --- a/packages/sdk/src/3.1/models.ts +++ b/packages/sdk/src/3.1/models.ts @@ -25,7 +25,7 @@ */ /** - * 308 API models: 190 Spec, 50 Request, 51 Write, 17 Enum + * 311 API models: 190 Spec, 53 Request, 51 Write, 17 Enum */ import type { IDictionary, Url, DelimArray } from '@looker/sdk-rtl' @@ -6006,6 +6006,20 @@ export interface IRequestAllScheduledPlans { all_users?: boolean | null } +/** + * Dynamically generated request type for all_user_attributes + */ +export interface IRequestAllUserAttributes { + /** + * Requested fields. + */ + fields?: string | null + /** + * Fields to order the results by. Sortable fields include: name, label + */ + sorts?: string | null +} + /** * Dynamically generated request type for all_users */ @@ -6882,6 +6896,64 @@ export interface IRequestSearchDashboards { filter_or?: boolean | null } +/** + * Dynamically generated request type for search_folders + */ +export interface IRequestSearchFolders { + /** + * Requested fields. + */ + fields?: string | null + /** + * Return only page N of paginated results + */ + page?: number | null + /** + * Return N rows of data per page + */ + per_page?: number | null + /** + * Number of results to return. (used with offset and takes priority over page and per_page) + */ + limit?: number | null + /** + * Number of results to skip before returning any. (used with limit and takes priority over page and per_page) + */ + offset?: number | null + /** + * Fields to sort by. + */ + sorts?: string | null + /** + * Match Space title. + */ + name?: string | null + /** + * Match Space id + */ + id?: number | null + /** + * Filter on a children of a particular folder. + */ + parent_id?: string | null + /** + * Filter on folder created by a particular user. + */ + creator_id?: string | null + /** + * Combine given search criteria in a boolean OR expression + */ + filter_or?: boolean | null + /** + * Match is shared root + */ + is_shared_root?: boolean | null + /** + * Match is users root + */ + is_users_root?: boolean | null +} + /** * Dynamically generated request type for search_groups */ @@ -7094,6 +7166,48 @@ export interface IRequestSearchModelSets { filter_or?: boolean | null } +/** + * Dynamically generated request type for search_permission_sets + */ +export interface IRequestSearchPermissionSets { + /** + * Requested fields. + */ + fields?: string | null + /** + * Number of results to return (used with `offset`). + */ + limit?: number | null + /** + * Number of results to skip before returning any (used with `limit`). + */ + offset?: number | null + /** + * Fields to sort by. + */ + sorts?: string | null + /** + * Match permission set id. + */ + id?: number | null + /** + * Match permission set name. + */ + name?: string | null + /** + * Match permission sets by all_access status. + */ + all_access?: boolean | null + /** + * Match permission sets by built_in status. + */ + built_in?: boolean | null + /** + * Combine given search criteria in a boolean OR expression. + */ + filter_or?: boolean | null +} + /** * Dynamically generated request type for search_roles */ diff --git a/packages/sdk/src/3.1/streams.ts b/packages/sdk/src/3.1/streams.ts index c3fa5ae8d..8f25ba154 100644 --- a/packages/sdk/src/3.1/streams.ts +++ b/packages/sdk/src/3.1/streams.ts @@ -135,6 +135,7 @@ import type { IRequestAllIntegrations, IRequestAllRoles, IRequestAllScheduledPlans, + IRequestAllUserAttributes, IRequestAllUsers, IRequestContentThumbnail, IRequestCreateDashboardElement, @@ -161,10 +162,12 @@ import type { IRequestSearchContentViews, IRequestSearchDashboardElements, IRequestSearchDashboards, + IRequestSearchFolders, IRequestSearchGroups, IRequestSearchHomepages, IRequestSearchLooks, IRequestSearchModelSets, + IRequestSearchPermissionSets, IRequestSearchRoles, IRequestSearchSpaces, IRequestSearchThemes, @@ -4102,13 +4105,13 @@ export class Looker31SDKStream extends APIMethods { * GET /folders/search -> IFolder[] * * @param callback streaming output function - * @param request composed interface "IRequestSearchSpaces" for complex method parameters + * @param request composed interface "IRequestSearchFolders" for complex method parameters * @param options one-time API call overrides * */ async search_folders( callback: (readable: Readable) => Promise, - request: IRequestSearchSpaces, + request: IRequestSearchFolders, options?: Partial ) { return this.authStream( @@ -8355,13 +8358,13 @@ export class Looker31SDKStream extends APIMethods { * GET /permission_sets/search -> IPermissionSet[] * * @param callback streaming output function - * @param request composed interface "IRequestSearchModelSets" for complex method parameters + * @param request composed interface "IRequestSearchPermissionSets" for complex method parameters * @param options one-time API call overrides * */ async search_permission_sets( callback: (readable: Readable) => Promise, - request: IRequestSearchModelSets, + request: IRequestSearchPermissionSets, options?: Partial ) { return this.authStream( @@ -11562,13 +11565,13 @@ export class Looker31SDKStream extends APIMethods { * GET /user_attributes -> IUserAttribute[] * * @param callback streaming output function - * @param request composed interface "IRequestAllHomepageSections" for complex method parameters + * @param request composed interface "IRequestAllUserAttributes" for complex method parameters * @param options one-time API call overrides * */ async all_user_attributes( callback: (readable: Readable) => Promise, - request: IRequestAllHomepageSections, + request: IRequestAllUserAttributes, options?: Partial ) { return this.authStream( diff --git a/packages/sdk/src/4.0/funcs.ts b/packages/sdk/src/4.0/funcs.ts index 8614f6764..599213e43 100644 --- a/packages/sdk/src/4.0/funcs.ts +++ b/packages/sdk/src/4.0/funcs.ts @@ -170,8 +170,10 @@ import type { IRequestAllGroups, IRequestAllGroupUsers, IRequestAllIntegrations, + IRequestAllLookmlModels, IRequestAllRoles, IRequestAllScheduledPlans, + IRequestAllUserAttributes, IRequestAllUsers, IRequestArtifact, IRequestArtifactNamespaces, @@ -211,9 +213,13 @@ import type { IRequestSearchDashboards, IRequestSearchFolders, IRequestSearchGroups, + IRequestSearchGroupsWithHierarchy, + IRequestSearchGroupsWithRoles, IRequestSearchLooks, IRequestSearchModelSets, + IRequestSearchPermissionSets, IRequestSearchRoles, + IRequestSearchRolesWithUserCount, IRequestSearchThemes, IRequestSearchUserLoginLockouts, IRequestSearchUsers, @@ -6779,13 +6785,13 @@ export const search_groups = async ( * GET /groups/search/with_roles -> IGroupSearch[] * * @param sdk IAPIMethods implementation - * @param request composed interface "IRequestSearchGroups" for complex method parameters + * @param request composed interface "IRequestSearchGroupsWithRoles" for complex method parameters * @param options one-time API call overrides * */ export const search_groups_with_roles = async ( sdk: IAPIMethods, - request: IRequestSearchGroups, + request: IRequestSearchGroupsWithRoles, options?: Partial ): Promise> => { return sdk.get( @@ -6837,13 +6843,13 @@ export const search_groups_with_roles = async ( * GET /groups/search/with_hierarchy -> IGroupHierarchy[] * * @param sdk IAPIMethods implementation - * @param request composed interface "IRequestSearchGroups" for complex method parameters + * @param request composed interface "IRequestSearchGroupsWithHierarchy" for complex method parameters * @param options one-time API call overrides * */ export const search_groups_with_hierarchy = async ( sdk: IAPIMethods, - request: IRequestSearchGroups, + request: IRequestSearchGroupsWithHierarchy, options?: Partial ): Promise> => { return sdk.get( @@ -7858,13 +7864,13 @@ export const move_look = async ( * GET /lookml_models -> ILookmlModel[] * * @param sdk IAPIMethods implementation - * @param request composed interface "IRequestArtifactNamespaces" for complex method parameters + * @param request composed interface "IRequestAllLookmlModels" for complex method parameters * @param options one-time API call overrides * */ export const all_lookml_models = async ( sdk: IAPIMethods, - request: IRequestArtifactNamespaces, + request: IRequestAllLookmlModels, options?: Partial ): Promise> => { return sdk.get( @@ -10364,13 +10370,13 @@ export const all_permissions = async ( * GET /permission_sets/search -> IPermissionSet[] * * @param sdk IAPIMethods implementation - * @param request composed interface "IRequestSearchModelSets" for complex method parameters + * @param request composed interface "IRequestSearchPermissionSets" for complex method parameters * @param options one-time API call overrides * */ export const search_permission_sets = async ( sdk: IAPIMethods, - request: IRequestSearchModelSets, + request: IRequestSearchPermissionSets, options?: Partial ): Promise> => { return sdk.get( @@ -10644,13 +10650,13 @@ export const search_roles = async ( * GET /roles/search/with_user_count -> IRoleSearch[] * * @param sdk IAPIMethods implementation - * @param request composed interface "IRequestSearchRoles" for complex method parameters + * @param request composed interface "IRequestSearchRolesWithUserCount" for complex method parameters * @param options one-time API call overrides * */ export const search_roles_with_user_count = async ( sdk: IAPIMethods, - request: IRequestSearchRoles, + request: IRequestSearchRolesWithUserCount, options?: Partial ): Promise> => { return sdk.get( @@ -13223,13 +13229,13 @@ export const create_embed_user = async ( * GET /user_attributes -> IUserAttribute[] * * @param sdk IAPIMethods implementation - * @param request composed interface "IRequestAllBoardSections" for complex method parameters + * @param request composed interface "IRequestAllUserAttributes" for complex method parameters * @param options one-time API call overrides * */ export const all_user_attributes = async ( sdk: IAPIMethods, - request: IRequestAllBoardSections, + request: IRequestAllUserAttributes, options?: Partial ): Promise> => { return sdk.get( diff --git a/packages/sdk/src/4.0/methods.ts b/packages/sdk/src/4.0/methods.ts index 226f43c90..3faf5409f 100644 --- a/packages/sdk/src/4.0/methods.ts +++ b/packages/sdk/src/4.0/methods.ts @@ -168,8 +168,10 @@ import type { IRequestAllGroups, IRequestAllGroupUsers, IRequestAllIntegrations, + IRequestAllLookmlModels, IRequestAllRoles, IRequestAllScheduledPlans, + IRequestAllUserAttributes, IRequestAllUsers, IRequestArtifact, IRequestArtifactNamespaces, @@ -209,9 +211,13 @@ import type { IRequestSearchDashboards, IRequestSearchFolders, IRequestSearchGroups, + IRequestSearchGroupsWithHierarchy, + IRequestSearchGroupsWithRoles, IRequestSearchLooks, IRequestSearchModelSets, + IRequestSearchPermissionSets, IRequestSearchRoles, + IRequestSearchRolesWithUserCount, IRequestSearchThemes, IRequestSearchUserLoginLockouts, IRequestSearchUsers, @@ -6354,12 +6360,12 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * * GET /groups/search/with_roles -> IGroupSearch[] * - * @param request composed interface "IRequestSearchGroups" for complex method parameters + * @param request composed interface "IRequestSearchGroupsWithRoles" for complex method parameters * @param options one-time API call overrides * */ async search_groups_with_roles( - request: IRequestSearchGroups, + request: IRequestSearchGroupsWithRoles, options?: Partial ): Promise> { return this.get( @@ -6410,12 +6416,12 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * * GET /groups/search/with_hierarchy -> IGroupHierarchy[] * - * @param request composed interface "IRequestSearchGroups" for complex method parameters + * @param request composed interface "IRequestSearchGroupsWithHierarchy" for complex method parameters * @param options one-time API call overrides * */ async search_groups_with_hierarchy( - request: IRequestSearchGroups, + request: IRequestSearchGroupsWithHierarchy, options?: Partial ): Promise> { return this.get( @@ -7369,12 +7375,12 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * * GET /lookml_models -> ILookmlModel[] * - * @param request composed interface "IRequestArtifactNamespaces" for complex method parameters + * @param request composed interface "IRequestAllLookmlModels" for complex method parameters * @param options one-time API call overrides * */ async all_lookml_models( - request: IRequestArtifactNamespaces, + request: IRequestAllLookmlModels, options?: Partial ): Promise> { return this.get( @@ -9739,12 +9745,12 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * * GET /permission_sets/search -> IPermissionSet[] * - * @param request composed interface "IRequestSearchModelSets" for complex method parameters + * @param request composed interface "IRequestSearchPermissionSets" for complex method parameters * @param options one-time API call overrides * */ async search_permission_sets( - request: IRequestSearchModelSets, + request: IRequestSearchPermissionSets, options?: Partial ): Promise> { return this.get( @@ -10001,12 +10007,12 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * * GET /roles/search/with_user_count -> IRoleSearch[] * - * @param request composed interface "IRequestSearchRoles" for complex method parameters + * @param request composed interface "IRequestSearchRolesWithUserCount" for complex method parameters * @param options one-time API call overrides * */ async search_roles_with_user_count( - request: IRequestSearchRoles, + request: IRequestSearchRolesWithUserCount, options?: Partial ): Promise> { return this.get( @@ -12439,12 +12445,12 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * * GET /user_attributes -> IUserAttribute[] * - * @param request composed interface "IRequestAllBoardSections" for complex method parameters + * @param request composed interface "IRequestAllUserAttributes" for complex method parameters * @param options one-time API call overrides * */ async all_user_attributes( - request: IRequestAllBoardSections, + request: IRequestAllUserAttributes, options?: Partial ): Promise> { return this.get( diff --git a/packages/sdk/src/4.0/methodsInterface.ts b/packages/sdk/src/4.0/methodsInterface.ts index 7da0edb36..d154ef25f 100644 --- a/packages/sdk/src/4.0/methodsInterface.ts +++ b/packages/sdk/src/4.0/methodsInterface.ts @@ -165,8 +165,10 @@ import type { IRequestAllGroups, IRequestAllGroupUsers, IRequestAllIntegrations, + IRequestAllLookmlModels, IRequestAllRoles, IRequestAllScheduledPlans, + IRequestAllUserAttributes, IRequestAllUsers, IRequestArtifact, IRequestArtifactNamespaces, @@ -206,9 +208,13 @@ import type { IRequestSearchDashboards, IRequestSearchFolders, IRequestSearchGroups, + IRequestSearchGroupsWithHierarchy, + IRequestSearchGroupsWithRoles, IRequestSearchLooks, IRequestSearchModelSets, + IRequestSearchPermissionSets, IRequestSearchRoles, + IRequestSearchRolesWithUserCount, IRequestSearchThemes, IRequestSearchUserLoginLockouts, IRequestSearchUsers, @@ -4553,12 +4559,12 @@ export interface ILooker40SDK extends IAPIMethods { * * GET /groups/search/with_roles -> IGroupSearch[] * - * @param request composed interface "IRequestSearchGroups" for complex method parameters + * @param request composed interface "IRequestSearchGroupsWithRoles" for complex method parameters * @param options one-time API call overrides * */ search_groups_with_roles( - request: IRequestSearchGroups, + request: IRequestSearchGroupsWithRoles, options?: Partial ): Promise> @@ -4591,12 +4597,12 @@ export interface ILooker40SDK extends IAPIMethods { * * GET /groups/search/with_hierarchy -> IGroupHierarchy[] * - * @param request composed interface "IRequestSearchGroups" for complex method parameters + * @param request composed interface "IRequestSearchGroupsWithHierarchy" for complex method parameters * @param options one-time API call overrides * */ search_groups_with_hierarchy( - request: IRequestSearchGroups, + request: IRequestSearchGroupsWithHierarchy, options?: Partial ): Promise> @@ -5239,12 +5245,12 @@ export interface ILooker40SDK extends IAPIMethods { * * GET /lookml_models -> ILookmlModel[] * - * @param request composed interface "IRequestArtifactNamespaces" for complex method parameters + * @param request composed interface "IRequestAllLookmlModels" for complex method parameters * @param options one-time API call overrides * */ all_lookml_models( - request: IRequestArtifactNamespaces, + request: IRequestAllLookmlModels, options?: Partial ): Promise> @@ -6926,12 +6932,12 @@ export interface ILooker40SDK extends IAPIMethods { * * GET /permission_sets/search -> IPermissionSet[] * - * @param request composed interface "IRequestSearchModelSets" for complex method parameters + * @param request composed interface "IRequestSearchPermissionSets" for complex method parameters * @param options one-time API call overrides * */ search_permission_sets( - request: IRequestSearchModelSets, + request: IRequestSearchPermissionSets, options?: Partial ): Promise> @@ -7103,12 +7109,12 @@ export interface ILooker40SDK extends IAPIMethods { * * GET /roles/search/with_user_count -> IRoleSearch[] * - * @param request composed interface "IRequestSearchRoles" for complex method parameters + * @param request composed interface "IRequestSearchRolesWithUserCount" for complex method parameters * @param options one-time API call overrides * */ search_roles_with_user_count( - request: IRequestSearchRoles, + request: IRequestSearchRolesWithUserCount, options?: Partial ): Promise> @@ -8870,12 +8876,12 @@ export interface ILooker40SDK extends IAPIMethods { * * GET /user_attributes -> IUserAttribute[] * - * @param request composed interface "IRequestAllBoardSections" for complex method parameters + * @param request composed interface "IRequestAllUserAttributes" for complex method parameters * @param options one-time API call overrides * */ all_user_attributes( - request: IRequestAllBoardSections, + request: IRequestAllUserAttributes, options?: Partial ): Promise> diff --git a/packages/sdk/src/4.0/models.ts b/packages/sdk/src/4.0/models.ts index e94cb2194..355e02737 100644 --- a/packages/sdk/src/4.0/models.ts +++ b/packages/sdk/src/4.0/models.ts @@ -25,7 +25,7 @@ */ /** - * 389 API models: 247 Spec, 60 Request, 60 Write, 22 Enum + * 395 API models: 247 Spec, 66 Request, 60 Write, 22 Enum */ import type { IDictionary, DelimArray } from '@looker/sdk-rtl' @@ -7375,6 +7375,24 @@ export interface IRequestAllIntegrations { integration_hub_id?: string | null } +/** + * Dynamically generated request type for all_lookml_models + */ +export interface IRequestAllLookmlModels { + /** + * Requested fields. + */ + fields?: string | null + /** + * Number of results to return. (can be used with offset) + */ + limit?: number | null + /** + * Number of results to skip before returning any. (Defaults to 0 if not set when limit is used) + */ + offset?: number | null +} + /** * Dynamically generated request type for all_roles */ @@ -7407,6 +7425,20 @@ export interface IRequestAllScheduledPlans { all_users?: boolean | null } +/** + * Dynamically generated request type for all_user_attributes + */ +export interface IRequestAllUserAttributes { + /** + * Requested fields. + */ + fields?: string | null + /** + * Fields to order the results by. Sortable fields include: name, label + */ + sorts?: string | null +} + /** * Dynamically generated request type for all_users */ @@ -8785,6 +8817,98 @@ export interface IRequestSearchGroups { externally_orphaned?: boolean | null } +/** + * Dynamically generated request type for search_groups_with_hierarchy + */ +export interface IRequestSearchGroupsWithHierarchy { + /** + * Requested fields. + */ + fields?: string | null + /** + * Number of results to return (used with `offset`). + */ + limit?: number | null + /** + * Number of results to skip before returning any (used with `limit`). + */ + offset?: number | null + /** + * Fields to sort by. + */ + sorts?: string | null + /** + * Combine given search criteria in a boolean OR expression + */ + filter_or?: boolean | null + /** + * Match group id. + */ + id?: string | null + /** + * Match group name. + */ + name?: string | null + /** + * Match group external_group_id. + */ + external_group_id?: string | null + /** + * Match group externally_managed. + */ + externally_managed?: boolean | null + /** + * Match group externally_orphaned. + */ + externally_orphaned?: boolean | null +} + +/** + * Dynamically generated request type for search_groups_with_roles + */ +export interface IRequestSearchGroupsWithRoles { + /** + * Requested fields. + */ + fields?: string | null + /** + * Number of results to return (used with `offset`). + */ + limit?: number | null + /** + * Number of results to skip before returning any (used with `limit`). + */ + offset?: number | null + /** + * Fields to sort by. + */ + sorts?: string | null + /** + * Combine given search criteria in a boolean OR expression + */ + filter_or?: boolean | null + /** + * Match group id. + */ + id?: string | null + /** + * Match group name. + */ + name?: string | null + /** + * Match group external_group_id. + */ + external_group_id?: string | null + /** + * Match group externally_managed. + */ + externally_managed?: boolean | null + /** + * Match group externally_orphaned. + */ + externally_orphaned?: boolean | null +} + /** * Dynamically generated request type for search_looks */ @@ -8905,6 +9029,48 @@ export interface IRequestSearchModelSets { filter_or?: boolean | null } +/** + * Dynamically generated request type for search_permission_sets + */ +export interface IRequestSearchPermissionSets { + /** + * Requested fields. + */ + fields?: string | null + /** + * Number of results to return (used with `offset`). + */ + limit?: number | null + /** + * Number of results to skip before returning any (used with `limit`). + */ + offset?: number | null + /** + * Fields to sort by. + */ + sorts?: string | null + /** + * Match permission set id. + */ + id?: string | null + /** + * Match permission set name. + */ + name?: string | null + /** + * Match permission sets by all_access status. + */ + all_access?: boolean | null + /** + * Match permission sets by built_in status. + */ + built_in?: boolean | null + /** + * Combine given search criteria in a boolean OR expression. + */ + filter_or?: boolean | null +} + /** * Dynamically generated request type for search_roles */ @@ -8943,6 +9109,44 @@ export interface IRequestSearchRoles { filter_or?: boolean | null } +/** + * Dynamically generated request type for search_roles_with_user_count + */ +export interface IRequestSearchRolesWithUserCount { + /** + * Requested fields. + */ + fields?: string | null + /** + * Number of results to return (used with `offset`). + */ + limit?: number | null + /** + * Number of results to skip before returning any (used with `limit`). + */ + offset?: number | null + /** + * Fields to sort by. + */ + sorts?: string | null + /** + * Match role id. + */ + id?: string | null + /** + * Match role name. + */ + name?: string | null + /** + * Match roles by built_in status. + */ + built_in?: boolean | null + /** + * Combine given search criteria in a boolean OR expression. + */ + filter_or?: boolean | null +} + /** * Dynamically generated request type for search_themes */ diff --git a/packages/sdk/src/4.0/streams.ts b/packages/sdk/src/4.0/streams.ts index 63defaa02..f848f24c9 100644 --- a/packages/sdk/src/4.0/streams.ts +++ b/packages/sdk/src/4.0/streams.ts @@ -167,8 +167,10 @@ import type { IRequestAllGroups, IRequestAllGroupUsers, IRequestAllIntegrations, + IRequestAllLookmlModels, IRequestAllRoles, IRequestAllScheduledPlans, + IRequestAllUserAttributes, IRequestAllUsers, IRequestArtifact, IRequestArtifactNamespaces, @@ -208,9 +210,13 @@ import type { IRequestSearchDashboards, IRequestSearchFolders, IRequestSearchGroups, + IRequestSearchGroupsWithHierarchy, + IRequestSearchGroupsWithRoles, IRequestSearchLooks, IRequestSearchModelSets, + IRequestSearchPermissionSets, IRequestSearchRoles, + IRequestSearchRolesWithUserCount, IRequestSearchThemes, IRequestSearchUserLoginLockouts, IRequestSearchUsers, @@ -7293,13 +7299,13 @@ export class Looker40SDKStream extends APIMethods { * GET /groups/search/with_roles -> IGroupSearch[] * * @param callback streaming output function - * @param request composed interface "IRequestSearchGroups" for complex method parameters + * @param request composed interface "IRequestSearchGroupsWithRoles" for complex method parameters * @param options one-time API call overrides * */ async search_groups_with_roles( callback: (readable: Readable) => Promise, - request: IRequestSearchGroups, + request: IRequestSearchGroupsWithRoles, options?: Partial ) { return this.authStream( @@ -7353,13 +7359,13 @@ export class Looker40SDKStream extends APIMethods { * GET /groups/search/with_hierarchy -> IGroupHierarchy[] * * @param callback streaming output function - * @param request composed interface "IRequestSearchGroups" for complex method parameters + * @param request composed interface "IRequestSearchGroupsWithHierarchy" for complex method parameters * @param options one-time API call overrides * */ async search_groups_with_hierarchy( callback: (readable: Readable) => Promise, - request: IRequestSearchGroups, + request: IRequestSearchGroupsWithHierarchy, options?: Partial ) { return this.authStream( @@ -8458,13 +8464,13 @@ export class Looker40SDKStream extends APIMethods { * GET /lookml_models -> ILookmlModel[] * * @param callback streaming output function - * @param request composed interface "IRequestArtifactNamespaces" for complex method parameters + * @param request composed interface "IRequestAllLookmlModels" for complex method parameters * @param options one-time API call overrides * */ async all_lookml_models( callback: (readable: Readable) => Promise, - request: IRequestArtifactNamespaces, + request: IRequestAllLookmlModels, options?: Partial ) { return this.authStream( @@ -11142,13 +11148,13 @@ export class Looker40SDKStream extends APIMethods { * GET /permission_sets/search -> IPermissionSet[] * * @param callback streaming output function - * @param request composed interface "IRequestSearchModelSets" for complex method parameters + * @param request composed interface "IRequestSearchPermissionSets" for complex method parameters * @param options one-time API call overrides * */ async search_permission_sets( callback: (readable: Readable) => Promise, - request: IRequestSearchModelSets, + request: IRequestSearchPermissionSets, options?: Partial ) { return this.authStream( @@ -11440,13 +11446,13 @@ export class Looker40SDKStream extends APIMethods { * GET /roles/search/with_user_count -> IRoleSearch[] * * @param callback streaming output function - * @param request composed interface "IRequestSearchRoles" for complex method parameters + * @param request composed interface "IRequestSearchRolesWithUserCount" for complex method parameters * @param options one-time API call overrides * */ async search_roles_with_user_count( callback: (readable: Readable) => Promise, - request: IRequestSearchRoles, + request: IRequestSearchRolesWithUserCount, options?: Partial ) { return this.authStream( @@ -14225,13 +14231,13 @@ export class Looker40SDKStream extends APIMethods { * GET /user_attributes -> IUserAttribute[] * * @param callback streaming output function - * @param request composed interface "IRequestAllBoardSections" for complex method parameters + * @param request composed interface "IRequestAllUserAttributes" for complex method parameters * @param options one-time API call overrides * */ async all_user_attributes( callback: (readable: Readable) => Promise, - request: IRequestAllBoardSections, + request: IRequestAllUserAttributes, options?: Partial ) { return this.authStream( diff --git a/python/looker_sdk/sdk/api31/methods.py b/python/looker_sdk/sdk/api31/methods.py index 029576dd8..09b1aed74 100644 --- a/python/looker_sdk/sdk/api31/methods.py +++ b/python/looker_sdk/sdk/api31/methods.py @@ -33,9 +33,9 @@ from looker_sdk.rtl import api_methods from looker_sdk.rtl import transport - class Looker31SDK(api_methods.APIMethods): - # region ApiAuth: API Authentication + + #region ApiAuth: API Authentication # ### Present client credentials to obtain an authorization token # @@ -82,8 +82,8 @@ def login( path="/login", structure=mdls.AccessToken, query_params={"client_id": client_id, "client_secret": client_secret}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -116,17 +116,15 @@ def login_user( transport_options: Optional[transport.TransportOptions] = None, ) -> mdls.AccessToken: """Login user""" - 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, query_params={"associative": associative}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -141,14 +139,16 @@ 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 Auth: Manage User Authentication Configuration + #region Auth: Manage User Authentication Configuration # ### Create Signed Embed URL # @@ -205,8 +205,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 @@ -240,8 +240,8 @@ def ldap_config( self.get( path="/ldap_config", structure=mdls.LDAPConfig, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -272,8 +272,8 @@ def update_ldap_config( path="/ldap_config", structure=mdls.LDAPConfig, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -311,8 +311,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 @@ -352,8 +352,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 @@ -382,8 +382,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 @@ -412,8 +412,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 @@ -443,8 +443,8 @@ def oidc_config( self.get( path="/oidc_config", structure=mdls.OIDCConfig, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -473,8 +473,8 @@ def update_oidc_config( path="/oidc_config", structure=mdls.OIDCConfig, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -496,8 +496,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 @@ -519,8 +519,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 @@ -541,8 +541,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 @@ -561,8 +561,8 @@ def password_config( self.get( path="/password_config", structure=mdls.PasswordConfig, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -583,8 +583,8 @@ def update_password_config( path="/password_config", structure=mdls.PasswordConfig, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -603,8 +603,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 @@ -634,8 +634,8 @@ def saml_config( self.get( path="/saml_config", structure=mdls.SamlConfig, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -664,8 +664,8 @@ def update_saml_config( path="/saml_config", structure=mdls.SamlConfig, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -687,8 +687,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 @@ -710,8 +710,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 @@ -732,8 +732,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 @@ -754,8 +754,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 @@ -778,8 +778,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 @@ -796,8 +796,8 @@ def session_config( self.get( path="/session_config", structure=mdls.SessionConfig, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -816,8 +816,8 @@ def update_session_config( path="/session_config", structure=mdls.SessionConfig, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -837,8 +837,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 @@ -873,19 +873,9 @@ 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, - "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, "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 @@ -905,14 +895,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 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) @@ -937,8 +927,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 @@ -965,8 +955,8 @@ def create_color_collection( path="/color_collections", structure=mdls.ColorCollection, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -991,8 +981,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 @@ -1017,8 +1007,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 @@ -1039,8 +1029,8 @@ def default_color_collection( self.get( path="/color_collections/default", structure=mdls.ColorCollection, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1063,8 +1053,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 @@ -1096,8 +1086,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 @@ -1120,8 +1110,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 @@ -1148,14 +1138,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 # ### WARNING: The Looker internal database backup function has been deprecated. # @@ -1170,8 +1160,8 @@ def backup_configuration( self.get( path="/backup_configuration", structure=mdls.BackupConfiguration, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1190,8 +1180,8 @@ def update_backup_configuration( path="/backup_configuration", structure=mdls.BackupConfiguration, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1208,8 +1198,8 @@ def cloud_storage_configuration( self.get( path="/cloud_storage", structure=mdls.BackupConfiguration, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1228,8 +1218,8 @@ def update_cloud_storage_configuration( path="/cloud_storage", structure=mdls.BackupConfiguration, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1246,8 +1236,8 @@ def custom_welcome_email( self.get( path="/custom_welcome_email", structure=mdls.CustomWelcomeEmail, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1269,8 +1259,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 @@ -1282,15 +1272,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 @@ -1307,8 +1297,8 @@ def digest_emails_enabled( self.get( path="/digest_emails_enabled", structure=mdls.DigestEmails, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1327,8 +1317,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 @@ -1347,8 +1337,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 @@ -1365,8 +1355,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 @@ -1385,8 +1375,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 @@ -1403,8 +1393,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 @@ -1423,8 +1413,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 @@ -1443,8 +1433,8 @@ def all_legacy_features( self.get( path="/legacy_features", structure=Sequence[mdls.LegacyFeature], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1465,8 +1455,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 @@ -1489,8 +1479,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 @@ -1507,8 +1497,8 @@ def all_locales( self.get( path="/locales", structure=Sequence[mdls.Locale], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1529,8 +1519,8 @@ def set_smtp_settings( path="/smtp_settings", structure=None, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1547,8 +1537,8 @@ def all_timezones( self.get( path="/timezones", structure=Sequence[mdls.Timezone], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1568,8 +1558,8 @@ def versions( path="/versions", structure=mdls.ApiVersion, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1590,8 +1580,8 @@ def whitelabel_configuration( path="/whitelabel_configuration", structure=mdls.WhitelabelConfiguration, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1610,14 +1600,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. # @@ -1635,8 +1625,8 @@ def all_connections( path="/connections", structure=Sequence[mdls.DBConnection], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1655,8 +1645,8 @@ def create_connection( path="/connections", structure=mdls.DBConnection, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1679,8 +1669,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 @@ -1702,8 +1692,8 @@ def update_connection( path=f"/connections/{connection_name}", structure=mdls.DBConnection, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1723,8 +1713,8 @@ def delete_connection( self.delete( path=f"/connections/{connection_name}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1747,8 +1737,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 @@ -1778,8 +1768,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 @@ -1808,8 +1798,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 @@ -1829,14 +1819,14 @@ 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 - # endregion + #endregion - # region Content: Manage Content + #region Content: Manage Content # ### Search Favorite Content # @@ -1892,20 +1882,9 @@ 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, - "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, "limit": limit, "offset": offset, "sorts": sorts, "fields": fields, "filter_or": filter_or}, + transport_options=transport_options + ) ) return response @@ -1927,8 +1906,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 @@ -1947,8 +1926,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 @@ -1967,8 +1946,8 @@ def create_content_favorite( path="/content_favorite", structure=mdls.ContentFavorite, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1990,8 +1969,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 @@ -2013,8 +1992,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 @@ -2035,8 +2014,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 @@ -2057,12 +2036,9 @@ 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 @@ -2083,12 +2059,10 @@ 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 @@ -2110,8 +2084,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 @@ -2130,8 +2104,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 @@ -2167,15 +2141,9 @@ 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 @@ -2198,8 +2166,8 @@ def content_validation( path="/content_validation", structure=mdls.ContentValidation, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2263,23 +2231,9 @@ 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 @@ -2310,14 +2264,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 Dashboard: Manage Dashboards + #region Dashboard: Manage Dashboards # ### Get information about all active dashboards. # @@ -2341,8 +2295,8 @@ def all_dashboards( path="/dashboards", structure=Sequence[mdls.DashboardBase], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2374,8 +2328,8 @@ def create_dashboard( path="/dashboards", structure=mdls.Dashboard, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2455,27 +2409,9 @@ 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, - "space_id": space_id, - "folder_id": folder_id, - "deleted": deleted, - "user_id": user_id, - "view_count": view_count, - "content_metadata_id": content_metadata_id, - "curate": curate, - "fields": fields, - "page": page, - "per_page": per_page, - "sorts": sorts, - "filter_or": filter_or, - }, - transport_options=transport_options, - ), + query_params={"id": id, "slug": slug, "title": title, "description": description, "content_favorite_id": content_favorite_id, "space_id": space_id, "folder_id": folder_id, "deleted": deleted, "user_id": user_id, "view_count": view_count, "content_metadata_id": content_metadata_id, "curate": curate, "fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "filter_or": filter_or}, + transport_options=transport_options + ) ) return response @@ -2514,8 +2450,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 @@ -2548,8 +2484,8 @@ def sync_lookml_dashboard( structure=Sequence[int], query_params={"raw_locale": raw_locale}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2578,8 +2514,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 @@ -2610,8 +2546,8 @@ def update_dashboard( path=f"/dashboards/{dashboard_id}", structure=mdls.Dashboard, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2637,8 +2573,8 @@ def delete_dashboard( self.delete( path=f"/dashboards/{dashboard_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2660,8 +2596,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 @@ -2683,8 +2619,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 @@ -2738,17 +2674,9 @@ 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 @@ -2771,8 +2699,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 @@ -2797,8 +2725,8 @@ def update_dashboard_element( structure=mdls.DashboardElement, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2818,8 +2746,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 @@ -2842,8 +2770,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 @@ -2867,8 +2795,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 @@ -2891,8 +2819,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 @@ -2917,8 +2845,8 @@ def update_dashboard_filter( structure=mdls.DashboardFilter, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2938,8 +2866,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 @@ -2962,8 +2890,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 @@ -2985,8 +2913,8 @@ def create_dashboard_filter( structure=mdls.DashboardFilter, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3002,17 +2930,15 @@ 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 @@ -3029,9 +2955,7 @@ 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( @@ -3039,8 +2963,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 @@ -3063,8 +2987,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 @@ -3087,8 +3011,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 @@ -3113,8 +3037,8 @@ def update_dashboard_layout( structure=mdls.DashboardLayout, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3134,8 +3058,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 @@ -3158,8 +3082,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 @@ -3181,14 +3105,14 @@ def create_dashboard_layout( structure=mdls.DashboardLayout, query_params={"fields": fields}, 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. # @@ -3205,8 +3129,8 @@ def perform_data_action( path="/data_actions", structure=mdls.DataActionResponse, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3225,14 +3149,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. # @@ -3247,8 +3171,8 @@ def all_datagroups( self.get( path="/datagroups", structure=Sequence[mdls.Datagroup], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3268,8 +3192,8 @@ def datagroup( self.get( path=f"/datagroups/{datagroup_id}", structure=mdls.Datagroup, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3291,14 +3215,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 # @@ -3321,8 +3245,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 @@ -3347,8 +3271,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 @@ -3379,14 +3303,9 @@ 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 @@ -3406,8 +3325,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 @@ -3430,14 +3349,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 # @@ -3478,23 +3397,9 @@ 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 @@ -3517,8 +3422,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 @@ -3540,8 +3445,8 @@ def update_folder( path=f"/folders/{folder_id}", structure=mdls.Folder, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3562,8 +3467,8 @@ def delete_folder( self.delete( path=f"/folders/{folder_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3588,8 +3493,8 @@ def all_folders( path="/folders", structure=Sequence[mdls.Folder], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3611,8 +3516,8 @@ def create_folder( path="/folders", structure=mdls.Folder, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3640,14 +3545,9 @@ 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, - "sorts": sorts, - }, - transport_options=transport_options, - ), + query_params={"fields": fields, "page": page, "per_page": per_page, "sorts": sorts}, + transport_options=transport_options + ) ) return response @@ -3674,8 +3574,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 @@ -3698,8 +3598,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 @@ -3722,8 +3622,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 @@ -3748,8 +3648,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 @@ -3772,14 +3672,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. # @@ -3808,17 +3708,9 @@ def all_groups( self.get( path="/groups", structure=Sequence[mdls.Group], - query_params={ - "fields": fields, - "page": page, - "per_page": per_page, - "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, "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 @@ -3840,8 +3732,8 @@ def create_group( structure=mdls.Group, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3901,20 +3793,9 @@ 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 @@ -3936,8 +3817,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 @@ -3961,8 +3842,8 @@ def update_group( structure=mdls.Group, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3981,8 +3862,8 @@ def delete_group( self.delete( path=f"/groups/{group_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4004,8 +3885,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 @@ -4027,8 +3908,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 @@ -4055,14 +3936,9 @@ 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, - "sorts": sorts, - }, - transport_options=transport_options, - ), + query_params={"fields": fields, "page": page, "per_page": per_page, "sorts": sorts}, + transport_options=transport_options + ) ) return response @@ -4084,8 +3960,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 @@ -4106,8 +3982,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 @@ -4128,8 +4004,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 @@ -4155,8 +4031,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 @@ -4177,14 +4053,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 all homepages. # @@ -4202,8 +4078,8 @@ def all_homepages( path="/homepages", structure=Sequence[mdls.Homepage], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4225,8 +4101,8 @@ def create_homepage( structure=mdls.Homepage, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4290,23 +4166,9 @@ def search_homepages( self.get( path="/homepages/search", structure=Sequence[mdls.Homepage], - query_params={ - "title": title, - "created_at": created_at, - "first_name": first_name, - "last_name": last_name, - "fields": fields, - "favorited": favorited, - "creator_id": creator_id, - "page": page, - "per_page": per_page, - "offset": offset, - "limit": limit, - "sorts": sorts, - "filter_or": filter_or, - }, - 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, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "sorts": sorts, "filter_or": filter_or}, + transport_options=transport_options + ) ) return response @@ -4328,8 +4190,8 @@ def homepage( path=f"/homepages/{homepage_id}", structure=mdls.Homepage, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4353,8 +4215,8 @@ def update_homepage( structure=mdls.Homepage, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4373,8 +4235,8 @@ def delete_homepage( self.delete( path=f"/homepages/{homepage_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4397,13 +4259,9 @@ def all_homepage_items( self.get( path="/homepage_items", structure=Sequence[mdls.HomepageItem], - query_params={ - "fields": fields, - "sorts": sorts, - "homepage_section_id": homepage_section_id, - }, - transport_options=transport_options, - ), + query_params={"fields": fields, "sorts": sorts, "homepage_section_id": homepage_section_id}, + transport_options=transport_options + ) ) return response @@ -4425,8 +4283,8 @@ def create_homepage_item( structure=mdls.HomepageItem, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4448,8 +4306,8 @@ def homepage_item( path=f"/homepage_items/{homepage_item_id}", structure=mdls.HomepageItem, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4473,8 +4331,8 @@ def update_homepage_item( structure=mdls.HomepageItem, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4493,8 +4351,8 @@ def delete_homepage_item( self.delete( path=f"/homepage_items/{homepage_item_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4516,8 +4374,8 @@ def all_homepage_sections( path="/homepage_sections", structure=Sequence[mdls.HomepageSection], query_params={"fields": fields, "sorts": sorts}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4539,8 +4397,8 @@ def create_homepage_section( structure=mdls.HomepageSection, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4562,8 +4420,8 @@ def homepage_section( path=f"/homepage_sections/{homepage_section_id}", structure=mdls.HomepageSection, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4587,8 +4445,8 @@ def update_homepage_section( structure=mdls.HomepageSection, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4607,8 +4465,8 @@ def delete_homepage_section( self.delete( path=f"/homepage_sections/{homepage_section_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4628,14 +4486,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. # @@ -4653,8 +4511,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 @@ -4678,8 +4536,8 @@ def create_integration_hub( structure=mdls.IntegrationHub, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4701,8 +4559,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 @@ -4728,8 +4586,8 @@ def update_integration_hub( structure=mdls.IntegrationHub, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4748,8 +4606,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 @@ -4768,8 +4626,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 @@ -4790,12 +4648,9 @@ 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 @@ -4818,8 +4673,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 @@ -4844,8 +4699,8 @@ def update_integration( structure=mdls.Integration, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4867,8 +4722,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 @@ -4888,14 +4743,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 Look: Run and Manage Looks + #region Look: Run and Manage Looks # ### Get information about all active Looks # @@ -4919,8 +4774,8 @@ def all_looks( path="/looks", structure=Sequence[mdls.Look], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4948,8 +4803,8 @@ def create_look( structure=mdls.LookWithQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5022,25 +4877,9 @@ 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, - "space_id": space_id, - "user_id": user_id, - "view_count": view_count, - "deleted": deleted, - "query_id": query_id, - "curate": curate, - "fields": fields, - "page": page, - "per_page": per_page, - "sorts": sorts, - "filter_or": filter_or, - }, - transport_options=transport_options, - ), + query_params={"id": id, "title": title, "description": description, "content_favorite_id": content_favorite_id, "space_id": space_id, "user_id": user_id, "view_count": view_count, "deleted": deleted, "query_id": query_id, "curate": curate, "fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "filter_or": filter_or}, + transport_options=transport_options + ) ) return response @@ -5064,8 +4903,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 @@ -5108,8 +4947,8 @@ def update_look( structure=mdls.LookWithQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5134,8 +4973,8 @@ def delete_look( self.delete( path=f"/looks/{look_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5198,28 +5037,15 @@ 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 - # endregion + #endregion - # region LookmlModel: Manage LookML Models + #region LookmlModel: Manage LookML Models # ### Get information about all lookml models. # @@ -5237,8 +5063,8 @@ def all_lookml_models( path="/lookml_models", structure=Sequence[mdls.LookmlModel], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5257,8 +5083,8 @@ def create_lookml_model( path="/lookml_models", structure=mdls.LookmlModel, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5281,8 +5107,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 @@ -5304,8 +5130,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 @@ -5325,8 +5151,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 @@ -5352,14 +5178,14 @@ def lookml_model_explore( path=f"/lookml_models/{lookml_model_name}/explores/{explore_name}", structure=mdls.LookmlModelExplore, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response - # endregion + #endregion - # region Project: Manage Projects + #region Project: Manage Projects # ### Get All Git Branches # @@ -5379,8 +5205,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 @@ -5402,8 +5228,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 @@ -5433,8 +5259,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 @@ -5463,8 +5289,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 @@ -5489,8 +5315,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 @@ -5515,8 +5341,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 @@ -5549,8 +5375,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 @@ -5581,8 +5407,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 @@ -5604,8 +5430,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 @@ -5627,8 +5453,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 @@ -5650,8 +5476,8 @@ def all_projects( path="/projects", structure=Sequence[mdls.Project], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5676,8 +5502,8 @@ def create_project( path="/projects", structure=mdls.Project, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5702,8 +5528,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 @@ -5749,8 +5575,8 @@ def update_project( structure=mdls.Project, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5772,8 +5598,8 @@ def manifest( self.get( path=f"/projects/{project_id}/manifest", structure=mdls.Manifest, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5795,8 +5621,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 @@ -5824,8 +5650,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 @@ -5859,8 +5685,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 @@ -5891,8 +5717,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 @@ -5917,8 +5743,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 @@ -5943,8 +5769,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 @@ -5971,8 +5797,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 @@ -6004,8 +5830,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 @@ -6038,12 +5864,9 @@ 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 @@ -6070,8 +5893,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 @@ -6100,8 +5923,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 @@ -6130,14 +5953,10 @@ 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, - ), + transport_options=transport_options + ) ) return response @@ -6167,8 +5986,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 @@ -6196,8 +6015,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 @@ -6219,14 +6038,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 # @@ -6273,24 +6092,10 @@ 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, - "image_width": image_width, - "image_height": image_height, - "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, "image_width": image_width, "image_height": image_height, "fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -6316,8 +6121,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 @@ -6346,8 +6151,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 @@ -6389,8 +6194,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 @@ -6428,8 +6233,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 @@ -6468,8 +6273,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 @@ -6498,8 +6303,8 @@ def create_query( structure=mdls.Query, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -6565,22 +6370,9 @@ 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 @@ -6674,23 +6466,10 @@ 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, - }, + 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, - ), + transport_options=transport_options + ) ) return response @@ -6767,8 +6546,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 @@ -6793,8 +6572,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 @@ -6832,8 +6611,8 @@ def create_merge_query( structure=mdls.MergeQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -6850,8 +6629,8 @@ def all_running_queries( self.get( path="/running_queries", structure=Sequence[mdls.RunningQueries], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -6871,8 +6650,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 @@ -6892,8 +6671,8 @@ def sql_query( self.get( path=f"/sql_queries/{slug}", structure=mdls.SqlQuery, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -6914,8 +6693,8 @@ def create_sql_query( path="/sql_queries", structure=mdls.SqlQuery, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -6941,14 +6720,14 @@ def run_sql_query( path=f"/sql_queries/{slug}/run/{result_format}", structure=Union[str, bytes], # type: ignore 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 lookml dashboard to a document or image. # @@ -6986,16 +6765,10 @@ def create_lookml_dashboard_render_task( self.post( path=f"/render_tasks/lookml_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, - }, + query_params={"width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7028,8 +6801,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 @@ -7062,8 +6835,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 @@ -7100,16 +6873,10 @@ 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, - }, + query_params={"width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7136,8 +6903,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 @@ -7173,14 +6940,14 @@ 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 - # endregion + #endregion - # region Role: Manage Roles + #region Role: Manage Roles # ### Search model sets # Returns all model set records that match the given search criteria. @@ -7234,19 +7001,9 @@ 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, - }, - 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}, + transport_options=transport_options + ) ) return response @@ -7268,8 +7025,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 @@ -7290,8 +7047,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 @@ -7310,8 +7067,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 @@ -7331,8 +7088,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 @@ -7351,8 +7108,8 @@ def create_model_set( path="/model_sets", structure=mdls.ModelSet, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7369,8 +7126,8 @@ def all_permissions( self.get( path="/permissions", structure=Sequence[mdls.Permission], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7426,19 +7183,9 @@ 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, - }, - 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}, + transport_options=transport_options + ) ) return response @@ -7460,8 +7207,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 @@ -7482,8 +7229,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 @@ -7502,8 +7249,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 @@ -7523,8 +7270,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 @@ -7543,8 +7290,8 @@ def create_permission_set( path="/permission_sets", structure=mdls.PermissionSet, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7566,8 +7313,8 @@ def all_roles( path="/roles", structure=Sequence[mdls.Role], query_params={"fields": fields, "ids": ids}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7586,8 +7333,8 @@ def create_role( path="/roles", structure=mdls.Role, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7643,18 +7390,9 @@ def search_roles( self.get( path="/roles/search", structure=Sequence[mdls.Role], - 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 @@ -7673,8 +7411,8 @@ def role( self.get( path=f"/roles/{role_id}", structure=mdls.Role, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7695,8 +7433,8 @@ def update_role( path=f"/roles/{role_id}", structure=mdls.Role, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7715,8 +7453,8 @@ def delete_role( self.delete( path=f"/roles/{role_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7738,8 +7476,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 @@ -7762,8 +7500,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 @@ -7786,12 +7524,9 @@ 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 @@ -7812,14 +7547,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 # @@ -7841,8 +7576,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 @@ -7866,8 +7601,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 @@ -7929,8 +7664,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 @@ -7953,8 +7688,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 @@ -7987,13 +7722,9 @@ 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 @@ -8069,8 +7800,8 @@ def create_scheduled_plan( path="/scheduled_plans", structure=mdls.ScheduledPlan, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8125,8 +7856,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 @@ -8161,13 +7892,9 @@ 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 @@ -8202,13 +7929,9 @@ 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 @@ -8244,13 +7967,9 @@ 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 @@ -8317,14 +8036,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 Session: Session Information + #region Session: Session Information # ### Get API Session # @@ -8341,8 +8060,8 @@ def session( self.get( path="/session", structure=mdls.ApiSession, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8380,14 +8099,14 @@ def update_session( path="/session", structure=mdls.ApiSession, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response - # endregion + #endregion - # region Space: Manage Spaces + #region Space: Manage Spaces # ### Search Spaces # @@ -8456,23 +8175,9 @@ def search_spaces( self.get( path="/spaces/search", structure=Sequence[mdls.Space], - 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 @@ -8495,8 +8200,8 @@ def space( path=f"/spaces/{space_id}", structure=mdls.Space, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8518,8 +8223,8 @@ def update_space( path=f"/spaces/{space_id}", structure=mdls.Space, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8540,8 +8245,8 @@ def delete_space( self.delete( path=f"/spaces/{space_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8566,8 +8271,8 @@ def all_spaces( path="/spaces", structure=Sequence[mdls.SpaceBase], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8589,8 +8294,8 @@ def create_space( path="/spaces", structure=mdls.Space, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8618,14 +8323,9 @@ def space_children( self.get( path=f"/spaces/{space_id}/children", structure=Sequence[mdls.Space], - query_params={ - "fields": fields, - "page": page, - "per_page": per_page, - "sorts": sorts, - }, - transport_options=transport_options, - ), + query_params={"fields": fields, "page": page, "per_page": per_page, "sorts": sorts}, + transport_options=transport_options + ) ) return response @@ -8652,8 +8352,8 @@ def space_children_search( path=f"/spaces/{space_id}/children/search", structure=Sequence[mdls.Space], query_params={"fields": fields, "sorts": sorts, "name": name}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8676,8 +8376,8 @@ def space_parent( path=f"/spaces/{space_id}/parent", structure=mdls.Space, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8700,8 +8400,8 @@ def space_ancestors( path=f"/spaces/{space_id}/ancestors", structure=Sequence[mdls.Space], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8726,8 +8426,8 @@ def space_looks( path=f"/spaces/{space_id}/looks", structure=Sequence[mdls.LookWithQuery], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8750,14 +8450,14 @@ def space_dashboards( path=f"/spaces/{space_id}/dashboards", structure=Sequence[mdls.Dashboard], query_params={"fields": fields}, - 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 # @@ -8781,8 +8481,8 @@ def all_themes( path="/themes", structure=Sequence[mdls.Theme], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8815,8 +8515,8 @@ def create_theme( path="/themes", structure=mdls.Theme, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8888,19 +8588,9 @@ 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, - }, - 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}, + transport_options=transport_options + ) ) return response @@ -8926,8 +8616,8 @@ def default_theme( path="/themes/default", structure=mdls.Theme, query_params={"ts": ts}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8957,8 +8647,8 @@ def set_default_theme( path="/themes/default", structure=mdls.Theme, query_params={"name": name}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8990,8 +8680,8 @@ def active_themes( path="/themes/active", structure=Sequence[mdls.Theme], query_params={"name": name, "ts": ts, "fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9018,8 +8708,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 @@ -9044,8 +8734,8 @@ def validate_theme( path="/themes/validate", structure=mdls.ValidationError, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9072,8 +8762,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 @@ -9097,8 +8787,8 @@ def update_theme( path=f"/themes/{theme_id}", structure=mdls.Theme, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9126,14 +8816,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 # ### Get information about the current user; i.e. the user account currently calling the API. # @@ -9151,8 +8841,8 @@ def me( path="/user", structure=mdls.User, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9179,15 +8869,9 @@ def all_users( self.get( path="/users", structure=Sequence[mdls.User], - query_params={ - "fields": fields, - "page": page, - "per_page": per_page, - "sorts": sorts, - "ids": ids, - }, - transport_options=transport_options, - ), + query_params={"fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "ids": ids}, + transport_options=transport_options + ) ) return response @@ -9209,8 +8893,8 @@ def create_user( structure=mdls.User, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9284,24 +8968,9 @@ def search_users( self.get( path="/users/search", structure=Sequence[mdls.User], - query_params={ - "fields": fields, - "page": page, - "per_page": per_page, - "sorts": sorts, - "id": id, - "first_name": first_name, - "last_name": last_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, - }, - transport_options=transport_options, - ), + query_params={"fields": fields, "page": page, "per_page": per_page, "sorts": sorts, "id": id, "first_name": first_name, "last_name": last_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}, + transport_options=transport_options + ) ) return response @@ -9346,20 +9015,9 @@ 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, - "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, "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 @@ -9385,8 +9043,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 @@ -9410,8 +9068,8 @@ def update_user( structure=mdls.User, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9432,8 +9090,8 @@ def delete_user( self.delete( path=f"/users/{user_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9488,8 +9146,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 @@ -9513,8 +9171,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 @@ -9540,8 +9198,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 @@ -9567,8 +9225,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 @@ -9589,8 +9247,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 @@ -9614,8 +9272,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 @@ -9642,8 +9300,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 @@ -9664,8 +9322,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 @@ -9689,8 +9347,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 @@ -9711,8 +9369,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 @@ -9736,8 +9394,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 @@ -9758,8 +9416,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 @@ -9783,8 +9441,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 @@ -9805,8 +9463,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 @@ -9830,8 +9488,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 @@ -9852,8 +9510,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 @@ -9879,8 +9537,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 @@ -9903,8 +9561,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 @@ -9928,8 +9586,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 @@ -9956,8 +9614,8 @@ def create_user_credentials_api3( structure=mdls.CredentialsApi3, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9983,8 +9641,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 @@ -10007,8 +9665,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 @@ -10032,8 +9690,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 @@ -10057,8 +9715,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 @@ -10079,8 +9737,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 @@ -10106,8 +9764,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 @@ -10130,8 +9788,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 @@ -10155,8 +9813,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 @@ -10190,8 +9848,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 @@ -10214,12 +9872,9 @@ 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 @@ -10243,8 +9898,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 @@ -10286,14 +9941,9 @@ 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 @@ -10318,8 +9968,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 @@ -10345,14 +9995,14 @@ 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 - # endregion + #endregion - # region UserAttribute: Manage User Attributes + #region UserAttribute: Manage User Attributes # ### Get information about all user attributes. # @@ -10372,8 +10022,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 @@ -10404,8 +10054,8 @@ def create_user_attribute( structure=mdls.UserAttribute, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -10427,8 +10077,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 @@ -10452,8 +10102,8 @@ def update_user_attribute( structure=mdls.UserAttribute, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -10472,8 +10122,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 @@ -10501,8 +10151,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 @@ -10542,14 +10192,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 # @@ -10566,8 +10216,8 @@ def all_workspaces( self.get( path="/workspaces", structure=Sequence[mdls.Workspace], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -10615,12 +10265,10 @@ def workspace( self.get( path=f"/workspaces/{workspace_id}", structure=mdls.Workspace, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response - # endregion - - -LookerSDK = Looker31SDK + #endregion +LookerSDK = Looker31SDK \ No newline at end of file diff --git a/python/looker_sdk/sdk/api31/models.py b/python/looker_sdk/sdk/api31/models.py index 582f8b7f8..92095fcfb 100644 --- a/python/looker_sdk/sdk/api31/models.py +++ b/python/looker_sdk/sdk/api31/models.py @@ -51,18 +51,14 @@ class AccessToken(model.Model): token_type: Type of Token expires_in: Number of seconds before the token expires """ - access_token: Optional[str] = None token_type: Optional[str] = None expires_in: Optional[int] = None - def __init__( - self, - *, - access_token: Optional[str] = None, - token_type: Optional[str] = None, - expires_in: Optional[int] = None - ): + def __init__(self, *, + access_token: Optional[str] = None, + token_type: Optional[str] = None, + expires_in: Optional[int] = None): self.access_token = access_token self.token_type = token_type self.expires_in = expires_in @@ -73,7 +69,6 @@ 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" @@ -91,18 +86,14 @@ 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[int] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - workspace_id: Optional[str] = None, - sudo_user_id: Optional[int] = None - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + workspace_id: Optional[str] = None, + sudo_user_id: Optional[int] = None): self.can = can self.workspace_id = workspace_id self.sudo_user_id = sudo_user_id @@ -118,22 +109,18 @@ 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 @@ -150,20 +137,16 @@ 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 @@ -182,7 +165,6 @@ 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 @@ -191,17 +173,14 @@ 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 @@ -216,7 +195,6 @@ class Category(enum.Enum): Field category Valid values are: "parameter", "filter", "measure", "dimension". (Enum defined in LookmlModelExploreField) """ - parameter = "parameter" filter = "filter" measure = "measure" @@ -238,22 +216,18 @@ 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 @@ -268,11 +242,12 @@ 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 @@ -289,7 +264,6 @@ class ContentFavorite(model.Model): look: dashboard: """ - id: Optional[int] = None user_id: Optional[int] = None content_metadata_id: Optional[int] = None @@ -298,17 +272,14 @@ class ContentFavorite(model.Model): look: Optional["LookBasic"] = None dashboard: Optional["DashboardBase"] = None - def __init__( - self, - *, - id: Optional[int] = None, - user_id: Optional[int] = None, - content_metadata_id: Optional[int] = None, - look_id: Optional[int] = None, - dashboard_id: Optional[int] = None, - look: Optional["LookBasic"] = None, - dashboard: Optional["DashboardBase"] = None - ): + def __init__(self, *, + id: Optional[int] = None, + user_id: Optional[int] = None, + content_metadata_id: Optional[int] = None, + look_id: Optional[int] = None, + dashboard_id: Optional[int] = None, + look: Optional["LookBasic"] = None, + dashboard: Optional["DashboardBase"] = None): self.id = id self.user_id = user_id self.content_metadata_id = content_metadata_id @@ -335,7 +306,6 @@ class ContentMeta(model.Model): slug: Content Slug space_id: Id of associated space when content_type is "space" """ - can: Optional[MutableMapping[str, bool]] = None id: Optional[int] = None name: Optional[str] = None @@ -349,22 +319,19 @@ class ContentMeta(model.Model): slug: Optional[str] = None space_id: Optional[str] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = None, - name: Optional[str] = None, - parent_id: Optional[int] = None, - dashboard_id: Optional[str] = None, - look_id: Optional[int] = None, - folder_id: Optional[str] = None, - content_type: Optional[str] = None, - inherits: Optional[bool] = None, - inheriting_id: Optional[int] = None, - slug: Optional[str] = None, - space_id: Optional[str] = None - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = None, + name: Optional[str] = None, + parent_id: Optional[int] = None, + dashboard_id: Optional[str] = None, + look_id: Optional[int] = None, + folder_id: Optional[str] = None, + content_type: Optional[str] = None, + inherits: Optional[bool] = None, + inheriting_id: Optional[int] = None, + slug: Optional[str] = None, + space_id: Optional[str] = None): self.can = can self.id = id self.name = name @@ -392,7 +359,6 @@ 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 @@ -400,16 +366,13 @@ class ContentMetaGroupUser(model.Model): group_id: Optional[int] = None user_id: Optional[int] = 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[int] = None, - user_id: Optional[int] = 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[int] = None, + user_id: Optional[int] = None): self.can = can self.id = id self.content_metadata_id = content_metadata_id @@ -431,7 +394,6 @@ 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 @@ -441,18 +403,15 @@ 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 @@ -476,7 +435,6 @@ 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[int] = None lookml_dashboard_id: Optional[str] = None lookml_link_id: Optional[str] = None @@ -486,18 +444,15 @@ class ContentValidationAlert(model.Model): show_custom_url: Optional[bool] = None custom_title: Optional[str] = None - def __init__( - self, - *, - id: Optional[int] = 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[int] = 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 @@ -518,22 +473,18 @@ class ContentValidationDashboard(model.Model): title: Dashboard Title space: """ - description: Optional[str] = None id: Optional[str] = None folder: Optional["ContentValidationFolder"] = None title: Optional[str] = None space: Optional["ContentValidationSpace"] = None - def __init__( - self, - *, - description: Optional[str] = None, - id: Optional[str] = None, - folder: Optional["ContentValidationFolder"] = None, - title: Optional[str] = None, - space: Optional["ContentValidationSpace"] = None - ): + def __init__(self, *, + description: Optional[str] = None, + id: Optional[str] = None, + folder: Optional["ContentValidationFolder"] = None, + title: Optional[str] = None, + space: Optional["ContentValidationSpace"] = None): self.description = description self.id = id self.folder = folder @@ -561,7 +512,6 @@ class ContentValidationDashboardElement(model.Model): type: Type rich_content_json: JSON with all the properties required for rich editor and buttons elements """ - body_text: Optional[str] = None dashboard_id: Optional[str] = None id: Optional[str] = None @@ -578,25 +528,22 @@ class ContentValidationDashboardElement(model.Model): type: Optional[str] = None rich_content_json: 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[int] = 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 - ): + 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[int] = 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): self.body_text = body_text self.dashboard_id = dashboard_id self.id = id @@ -628,7 +575,6 @@ 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 @@ -639,19 +585,16 @@ 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 @@ -673,22 +616,18 @@ 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 @@ -703,11 +642,12 @@ 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 @@ -722,22 +662,18 @@ class ContentValidationLook(model.Model): folder: space: """ - id: Optional[int] = None title: Optional[str] = None short_url: Optional[str] = None folder: Optional["ContentValidationFolder"] = None space: Optional["ContentValidationSpace"] = None - def __init__( - self, - *, - id: Optional[int] = None, - title: Optional[str] = None, - short_url: Optional[str] = None, - folder: Optional["ContentValidationFolder"] = None, - space: Optional["ContentValidationSpace"] = None - ): + def __init__(self, *, + id: Optional[int] = None, + title: Optional[str] = None, + short_url: Optional[str] = None, + folder: Optional["ContentValidationFolder"] = None, + space: Optional["ContentValidationSpace"] = None): self.id = id self.title = title self.short_url = short_url @@ -754,20 +690,16 @@ class ContentValidationLookMLDashboard(model.Model): space_id: ID of Space space: """ - id: Optional[str] = None title: Optional[str] = None space_id: Optional[str] = None space: Optional["SpaceBase"] = None - def __init__( - self, - *, - id: Optional[str] = None, - title: Optional[str] = None, - space_id: Optional[str] = None, - space: Optional["SpaceBase"] = None - ): + def __init__(self, *, + id: Optional[str] = None, + title: Optional[str] = None, + space_id: Optional[str] = None, + space: Optional["SpaceBase"] = None): self.id = id self.title = title self.space_id = space_id @@ -781,13 +713,12 @@ 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 @@ -800,18 +731,14 @@ class ContentValidationScheduledPlan(model.Model): look_id: Id of a look id: Unique Id """ - name: Optional[str] = None look_id: Optional[int] = None id: Optional[int] = None - def __init__( - self, - *, - name: Optional[str] = None, - look_id: Optional[int] = None, - id: Optional[int] = None - ): + def __init__(self, *, + name: Optional[str] = None, + look_id: Optional[int] = None, + id: Optional[int] = None): self.name = name self.look_id = look_id self.id = id @@ -824,11 +751,12 @@ class ContentValidationSpace(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 @@ -848,7 +776,6 @@ 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 @@ -860,22 +787,17 @@ 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 @@ -905,7 +827,6 @@ 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[int] = None look_id: Optional[int] = None @@ -919,22 +840,19 @@ 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[int] = None, - look_id: Optional[int] = None, - dashboard_id: Optional[int] = None, - title: Optional[str] = None, - content_metadata_id: Optional[int] = None, - user_id: Optional[int] = None, - group_id: Optional[int] = 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[int] = None, + look_id: Optional[int] = None, + dashboard_id: Optional[int] = None, + title: Optional[str] = None, + content_metadata_id: Optional[int] = None, + user_id: Optional[int] = None, + group_id: Optional[int] = 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 @@ -958,20 +876,16 @@ 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 @@ -998,7 +912,6 @@ 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 @@ -1015,25 +928,22 @@ 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 @@ -1058,16 +968,12 @@ class CreateDashboardRenderTask(model.Model): dashboard_filters: Filter values to apply to the dashboard queries, in URL query format dashboard_style: Dashboard layout style: single_column or tiled """ - dashboard_filters: Optional[str] = None dashboard_style: Optional[str] = None - def __init__( - self, - *, - dashboard_filters: Optional[str] = None, - dashboard_style: Optional[str] = None - ): + def __init__(self, *, + dashboard_filters: Optional[str] = None, + dashboard_style: Optional[str] = None): self.dashboard_filters = dashboard_filters self.dashboard_style = dashboard_style @@ -1079,11 +985,12 @@ 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 @@ -1100,7 +1007,6 @@ class CreateQueryTask(model.Model): look_id: Id of look associated with query. dashboard_id: Id of dashboard associated with query. """ - query_id: int result_format: "ResultFormat" can: Optional[MutableMapping[str, bool]] = None @@ -1115,20 +1021,17 @@ class CreateQueryTask(model.Model): "source": Optional[str], "deferred": Optional[bool], "look_id": Optional[int], - "dashboard_id": Optional[str], + "dashboard_id": Optional[str] } - def __init__( - self, - *, - query_id: int, - result_format: "ResultFormat", - can: Optional[MutableMapping[str, bool]] = None, - source: Optional[str] = None, - deferred: Optional[bool] = None, - look_id: Optional[int] = None, - dashboard_id: Optional[str] = None - ): + def __init__(self, *, + query_id: int, + result_format: "ResultFormat", + can: Optional[MutableMapping[str, bool]] = None, + source: Optional[str] = None, + deferred: Optional[bool] = None, + look_id: Optional[int] = None, + dashboard_id: Optional[str] = None): self.query_id = query_id self.result_format = result_format self.can = can @@ -1145,11 +1048,12 @@ class CreateSpace(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 @@ -1168,7 +1072,6 @@ class CredentialsApi3(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 id: Optional[int] = None client_id: Optional[str] = None @@ -1177,17 +1080,14 @@ class CredentialsApi3(model.Model): type: Optional[str] = None url: Optional[str] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = None, - client_id: Optional[str] = None, - created_at: Optional[str] = None, - is_disabled: Optional[bool] = None, - type: Optional[str] = None, - url: Optional[str] = None - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = None, + client_id: Optional[str] = None, + created_at: Optional[str] = None, + is_disabled: Optional[bool] = None, + type: Optional[str] = None, + url: Optional[str] = None): self.can = can self.id = id self.client_id = client_id @@ -1214,7 +1114,6 @@ 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 @@ -1228,22 +1127,19 @@ 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, - 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, + type: Optional[str] = None, + url: Optional[str] = None, + user_url: Optional[str] = None): self.can = can self.created_at = created_at self.email = email @@ -1272,7 +1168,6 @@ 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 @@ -1283,19 +1178,16 @@ 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[int] = 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[int] = 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 @@ -1321,7 +1213,6 @@ 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 @@ -1332,19 +1223,16 @@ 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 @@ -1370,7 +1258,6 @@ 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 @@ -1381,19 +1268,16 @@ 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 @@ -1419,7 +1303,6 @@ 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 @@ -1430,19 +1313,16 @@ 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 @@ -1467,7 +1347,6 @@ 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 @@ -1477,18 +1356,15 @@ 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 @@ -1512,7 +1388,6 @@ 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 @@ -1522,18 +1397,15 @@ 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 @@ -1557,7 +1429,6 @@ 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 @@ -1565,16 +1436,13 @@ 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 @@ -1593,22 +1461,18 @@ 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. """ - can: Optional[MutableMapping[str, bool]] = None enabled: Optional[bool] = None content: Optional[str] = None subject: Optional[str] = None header: Optional[str] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - enabled: Optional[bool] = None, - content: Optional[str] = None, - subject: Optional[str] = None, - header: Optional[str] = None - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + enabled: Optional[bool] = None, + content: Optional[str] = None, + subject: Optional[str] = None, + header: Optional[str] = None): self.can = can self.enabled = enabled self.content = content @@ -1671,7 +1535,6 @@ class Dashboard(model.Model): view_count: Number of times viewed in the Looker web UI appearance: """ - can: Optional[MutableMapping[str, bool]] = None content_favorite_id: Optional[int] = None content_metadata_id: Optional[int] = None @@ -1723,60 +1586,57 @@ class Dashboard(model.Model): view_count: Optional[int] = None appearance: Optional["DashboardAppearance"] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - content_favorite_id: Optional[int] = None, - content_metadata_id: Optional[int] = 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[int] = None, - slug: Optional[str] = None, - preferred_viewer: Optional[str] = None, - space: Optional["SpaceBase"] = None, - alert_sync_with_dashboard_filter_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[int] = 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[int] = 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, - space_id: Optional[str] = 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 - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + content_favorite_id: Optional[int] = None, + content_metadata_id: Optional[int] = 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[int] = None, + slug: Optional[str] = None, + preferred_viewer: Optional[str] = None, + space: Optional["SpaceBase"] = None, + alert_sync_with_dashboard_filter_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[int] = 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[int] = 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, + space_id: Optional[str] = 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): self.can = can self.content_favorite_id = content_favorite_id self.content_metadata_id = content_metadata_id @@ -1794,9 +1654,7 @@ def __init__( self.slug = slug self.preferred_viewer = preferred_viewer self.space = space - 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.background_color = background_color self.created_at = created_at self.crossfilter_enabled = crossfilter_enabled @@ -1838,16 +1696,12 @@ 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 @@ -1864,7 +1718,6 @@ class DashboardAppearance(model.Model): tile_shadow: Tile shadow on/off key_color: Key color """ - page_side_margins: Optional[int] = None page_background_color: Optional[str] = None tile_title_alignment: Optional[str] = None @@ -1873,17 +1726,14 @@ class DashboardAppearance(model.Model): tile_shadow: Optional[bool] = None key_color: Optional[str] = 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 - ): + 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): self.page_side_margins = page_side_margins self.page_background_color = page_background_color self.tile_title_alignment = tile_title_alignment @@ -1915,7 +1765,6 @@ class DashboardBase(model.Model): preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) space: """ - can: Optional[MutableMapping[str, bool]] = None content_favorite_id: Optional[int] = None content_metadata_id: Optional[int] = None @@ -1934,27 +1783,24 @@ class DashboardBase(model.Model): preferred_viewer: Optional[str] = None space: Optional["SpaceBase"] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - content_favorite_id: Optional[int] = None, - content_metadata_id: Optional[int] = 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[int] = None, - slug: Optional[str] = None, - preferred_viewer: Optional[str] = None, - space: Optional["SpaceBase"] = None - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + content_favorite_id: Optional[int] = None, + content_metadata_id: Optional[int] = 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[int] = None, + slug: Optional[str] = None, + preferred_viewer: Optional[str] = None, + space: Optional["SpaceBase"] = None): self.can = can self.content_favorite_id = content_favorite_id self.content_metadata_id = content_metadata_id @@ -2008,7 +1854,6 @@ class DashboardElement(model.Model): title_text_as_html: Text tile title text as Html subtitle_text_as_html: Text tile subtitle text as Html """ - can: Optional[MutableMapping[str, bool]] = None body_text: Optional[str] = None body_text_as_html: Optional[str] = None @@ -2039,39 +1884,36 @@ class DashboardElement(model.Model): title_text_as_html: Optional[str] = None subtitle_text_as_html: Optional[str] = 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, - 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[int] = None, - refresh_interval: Optional[str] = None, - refresh_interval_to_i: Optional[int] = None, - result_maker: Optional["ResultMakerWithIdVisConfigAndDynamicFields"] = None, - result_maker_id: Optional[int] = 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 - ): + 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, + 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[int] = None, + refresh_interval: Optional[str] = None, + refresh_interval_to_i: Optional[int] = None, + result_maker: Optional["ResultMakerWithIdVisConfigAndDynamicFields"] = None, + result_maker_id: Optional[int] = 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): self.can = can self.body_text = body_text self.body_text_as_html = body_text_as_html @@ -2124,7 +1966,6 @@ 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 @@ -2142,26 +1983,23 @@ 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 @@ -2195,7 +2033,6 @@ class DashboardLayout(model.Model): dashboard_title: Title extracted from the dashboard this layout represents. dashboard_layout_components: Components """ - can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None dashboard_id: Optional[str] = None @@ -2207,22 +2044,17 @@ class DashboardLayout(model.Model): dashboard_title: Optional[str] = None dashboard_layout_components: Optional[Sequence["DashboardLayoutComponent"]] = 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 - ): + 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): self.can = can self.id = id self.dashboard_id = dashboard_id @@ -2252,7 +2084,6 @@ class DashboardLayoutComponent(model.Model): element_title_hidden: Whether or not the dashboard element title is displayed. vis_type: Visualization type, extracted from a query's vis_config """ - can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None dashboard_layout_id: Optional[str] = None @@ -2266,22 +2097,19 @@ class DashboardLayoutComponent(model.Model): element_title_hidden: Optional[bool] = None vis_type: Optional[str] = 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 - ): + 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): self.can = can self.id = id self.dashboard_layout_id = dashboard_layout_id @@ -2304,18 +2132,14 @@ 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 @@ -2328,16 +2152,12 @@ 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 @@ -2356,7 +2176,6 @@ 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 @@ -2367,19 +2186,16 @@ 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 @@ -2398,11 +2214,12 @@ 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 @@ -2414,16 +2231,12 @@ 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 @@ -2438,22 +2251,18 @@ 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 @@ -2468,13 +2277,12 @@ 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 @@ -2494,7 +2302,6 @@ 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[int] = None @@ -2506,20 +2313,17 @@ 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[int] = 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[int] = 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 @@ -2576,7 +2380,6 @@ class DBConnection(model.Model): managed: Is this connection created and managed by Looker uses_tns: Enable Transparent Network Substrate (TNS) connections """ - can: Optional[MutableMapping[str, bool]] = None name: Optional[str] = None dialect: Optional["Dialect"] = None @@ -2617,49 +2420,46 @@ class DBConnection(model.Model): managed: Optional[bool] = None uses_tns: 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, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - uses_oauth: 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_billing_gigabytes: Optional[str] = None, - ssl: Optional[bool] = None, - verify_ssl: Optional[bool] = None, - tmp_db_name: 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, - uses_tns: 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, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + uses_oauth: 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_billing_gigabytes: Optional[str] = None, + ssl: Optional[bool] = None, + verify_ssl: Optional[bool] = None, + tmp_db_name: 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, + uses_tns: Optional[bool] = None): self.can = can self.name = name self.dialect = dialect @@ -2711,22 +2511,18 @@ 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 @@ -2751,7 +2547,6 @@ class DBConnectionOverride(model.Model): jdbc_additional_params: Additional params to add to JDBC connection string after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature """ - context: Optional[str] = None host: Optional[str] = None port: Optional[str] = None @@ -2765,22 +2560,19 @@ class DBConnectionOverride(model.Model): jdbc_additional_params: Optional[str] = None after_connect_statements: Optional[str] = None - def __init__( - self, - *, - context: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - has_password: Optional[bool] = None, - certificate: Optional[str] = None, - file_type: Optional[str] = None, - database: Optional[str] = None, - schema: Optional[str] = None, - jdbc_additional_params: Optional[str] = None, - after_connect_statements: Optional[str] = None - ): + def __init__(self, *, + context: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + has_password: Optional[bool] = None, + certificate: Optional[str] = None, + file_type: Optional[str] = None, + database: Optional[str] = None, + schema: Optional[str] = None, + jdbc_additional_params: Optional[str] = None, + after_connect_statements: Optional[str] = None): self.context = context self.host = host self.port = port @@ -2805,22 +2597,18 @@ 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 @@ -2837,20 +2625,16 @@ 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[int] = None success: Optional[bool] = None - def __init__( - self, - *, - name: Optional[str] = None, - installation_target_id: Optional[str] = None, - installation_id: Optional[int] = None, - success: Optional[bool] = None - ): + def __init__(self, *, + name: Optional[str] = None, + installation_target_id: Optional[str] = None, + installation_id: Optional[int] = None, + success: Optional[bool] = None): self.name = name self.installation_target_id = installation_target_id self.installation_id = installation_id @@ -2863,10 +2647,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 @@ -2875,7 +2659,6 @@ 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" @@ -2906,7 +2689,6 @@ 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 @@ -2922,24 +2704,21 @@ 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 @@ -2948,9 +2727,7 @@ def __init__( 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 @@ -2971,7 +2748,6 @@ class DialectInfo(model.Model): name: The name of the dialect supported_options: """ - can: Optional[MutableMapping[str, bool]] = None default_max_connections: Optional[str] = None default_port: Optional[str] = None @@ -2981,18 +2757,15 @@ class DialectInfo(model.Model): name: Optional[str] = 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, - installed: Optional[bool] = None, - label: Optional[str] = None, - label_for_database_equivalent: Optional[str] = None, - name: Optional[str] = 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, + installed: Optional[bool] = None, + label: Optional[str] = None, + label_for_database_equivalent: Optional[str] = None, + name: Optional[str] = None, + supported_options: Optional["DialectInfoOptions"] = None): self.can = can self.default_max_connections = default_max_connections self.default_port = default_port @@ -3030,7 +2803,6 @@ class DialectInfoOptions(model.Model): username_required: Username is required can: Operations the current user is able to perform on this object """ - additional_params: Optional[bool] = None after_connect_statements: Optional[bool] = None analytical_view_dataset: Optional[bool] = None @@ -3054,32 +2826,29 @@ class DialectInfoOptions(model.Model): username_required: Optional[bool] = None can: Optional[MutableMapping[str, 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, - disable_context_comment: Optional[bool] = None, - host: Optional[bool] = None, - instance_name: 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, - can: Optional[MutableMapping[str, 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, + disable_context_comment: Optional[bool] = None, + host: Optional[bool] = None, + instance_name: 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, + can: Optional[MutableMapping[str, bool]] = None): self.additional_params = additional_params self.after_connect_statements = after_connect_statements self.analytical_view_dataset = analytical_view_dataset @@ -3110,10 +2879,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 @@ -3123,10 +2892,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 @@ -3139,20 +2908,16 @@ 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 @@ -3178,7 +2943,6 @@ 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 @@ -3194,24 +2958,21 @@ class EmbedSsoParams(model.Model): secret_id: Optional[int] = 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[int]] = None, - external_group_id: Optional[str] = None, - user_attributes: Optional[MutableMapping[str, Any]] = None, - secret_id: Optional[int] = 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[int]] = None, + external_group_id: Optional[str] = None, + user_attributes: Optional[MutableMapping[str, Any]] = None, + secret_id: Optional[int] = None, + embed_domain: Optional[str] = None): self.target_url = target_url self.session_length = session_length self.force_logout_login = force_logout_login @@ -3234,10 +2995,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 @@ -3248,11 +3009,12 @@ 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 @@ -3262,7 +3024,6 @@ 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" @@ -3295,7 +3056,6 @@ class Folder(model.Model): dashboards: Dashboards looks: Looks """ - name: str parent_id: Optional[str] = None id: Optional[str] = None @@ -3315,28 +3075,25 @@ 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[int] = None, - created_at: Optional[datetime.datetime] = None, - creator_id: Optional[int] = 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[int] = None, + created_at: Optional[datetime.datetime] = None, + creator_id: Optional[int] = 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 @@ -3378,7 +3135,6 @@ 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 @@ -3396,26 +3152,23 @@ 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[int] = None, - created_at: Optional[datetime.datetime] = None, - creator_id: Optional[int] = 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[int] = None, + created_at: Optional[datetime.datetime] = None, + creator_id: Optional[int] = 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 @@ -3439,7 +3192,6 @@ 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" @@ -3471,7 +3223,6 @@ 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 @@ -3490,27 +3241,24 @@ 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 @@ -3538,18 +3286,14 @@ 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 @@ -3564,20 +3308,16 @@ 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 @@ -3594,22 +3334,18 @@ class GitStatus(model.Model): text: Git description of the action can: Operations the current user is able to perform on this object """ - action: Optional[str] = None conflict: Optional[bool] = None revertable: Optional[bool] = None text: Optional[str] = None can: Optional[MutableMapping[str, bool]] = None - def __init__( - self, - *, - action: Optional[str] = None, - conflict: Optional[bool] = None, - revertable: Optional[bool] = None, - text: Optional[str] = None, - can: Optional[MutableMapping[str, bool]] = None - ): + def __init__(self, *, + action: Optional[str] = None, + conflict: Optional[bool] = None, + revertable: Optional[bool] = None, + text: Optional[str] = None, + can: Optional[MutableMapping[str, bool]] = None): self.action = action self.conflict = conflict self.revertable = revertable @@ -3631,7 +3367,6 @@ 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 @@ -3642,19 +3377,16 @@ 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[int] = 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[int] = 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 @@ -3674,10 +3406,10 @@ class GroupIdForGroupInclusion(model.Model): Attributes: group_id: Id of group """ - group_id: Optional[int] = None - def __init__(self, *, group_id: Optional[int] = None): + def __init__(self, *, + group_id: Optional[int] = None): self.group_id = group_id @@ -3689,10 +3421,10 @@ class GroupIdForGroupUserInclusion(model.Model): Attributes: user_id: Id of user """ - user_id: Optional[int] = None - def __init__(self, *, user_id: Optional[int] = None): + def __init__(self, *, + user_id: Optional[int] = None): self.user_id = user_id @@ -3713,7 +3445,6 @@ class Homepage(model.Model): user_id: User id of homepage creator primary_homepage: Whether the homepage is the primary homepage or not """ - can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[int] = None created_at: Optional[datetime.datetime] = None @@ -3727,22 +3458,19 @@ class Homepage(model.Model): user_id: Optional[int] = None primary_homepage: Optional[bool] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - content_metadata_id: Optional[int] = None, - created_at: Optional[datetime.datetime] = None, - deleted_at: Optional[datetime.datetime] = None, - description: Optional[str] = None, - homepage_sections: Optional[Sequence["HomepageSection"]] = None, - id: Optional[int] = None, - section_order: Optional[Sequence[int]] = None, - title: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None, - user_id: Optional[int] = None, - primary_homepage: Optional[bool] = None - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[int] = None, + created_at: Optional[datetime.datetime] = None, + deleted_at: Optional[datetime.datetime] = None, + description: Optional[str] = None, + homepage_sections: Optional[Sequence["HomepageSection"]] = None, + id: Optional[int] = None, + section_order: Optional[Sequence[int]] = None, + title: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None, + user_id: Optional[int] = None, + primary_homepage: Optional[bool] = None): self.can = can self.content_metadata_id = content_metadata_id self.created_at = created_at @@ -3790,7 +3518,6 @@ 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[int] = None @@ -3820,38 +3547,35 @@ 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[int] = None, - content_metadata_id: Optional[int] = 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[int] = None, - description: Optional[str] = None, - favorite_count: Optional[int] = None, - homepage_section_id: Optional[int] = None, - id: Optional[int] = None, - image_url: Optional[str] = None, - location: Optional[str] = None, - look_id: Optional[int] = 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[int] = None, + content_metadata_id: Optional[int] = 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[int] = None, + description: Optional[str] = None, + favorite_count: Optional[int] = None, + homepage_section_id: Optional[int] = None, + id: Optional[int] = None, + image_url: Optional[str] = None, + location: Optional[str] = None, + look_id: Optional[int] = 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 @@ -3900,7 +3624,6 @@ 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 @@ -3915,23 +3638,20 @@ 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[int] = None, - homepage_items: Optional[Sequence["HomepageItem"]] = None, - id: Optional[int] = None, - is_header: Optional[bool] = None, - item_order: Optional[Sequence[int]] = 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[int] = None, + homepage_items: Optional[Sequence["HomepageItem"]] = None, + id: Optional[int] = None, + is_header: Optional[bool] = None, + item_order: Optional[Sequence[int]] = 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 @@ -3957,22 +3677,18 @@ class ImportedProject(model.Model): is_remote: Flag signifying if a dependency is remote or local can: Operations the current user is able to perform on this object """ - name: Optional[str] = None url: Optional[str] = None ref: Optional[str] = None is_remote: Optional[bool] = None can: Optional[MutableMapping[str, bool]] = None - def __init__( - self, - *, - name: Optional[str] = None, - url: Optional[str] = None, - ref: Optional[str] = None, - is_remote: Optional[bool] = None, - can: Optional[MutableMapping[str, bool]] = None - ): + def __init__(self, *, + name: Optional[str] = None, + url: Optional[str] = None, + ref: Optional[str] = None, + is_remote: Optional[bool] = None, + can: Optional[MutableMapping[str, bool]] = None): self.name = name self.url = url self.ref = ref @@ -4003,7 +3719,6 @@ 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[int] = None @@ -4014,9 +3729,7 @@ 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 @@ -4025,32 +3738,25 @@ class Integration(model.Model): delegate_oauth: Optional[bool] = None installed_delegate_oauth_targets: Optional[Sequence[int]] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - integration_hub_id: Optional[int] = 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[int]] = None - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + integration_hub_id: Optional[int] = 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[int]] = None): self.can = can self.id = id self.integration_hub_id = integration_hub_id @@ -4087,7 +3793,6 @@ 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[int] = None url: Optional[str] = None @@ -4100,21 +3805,18 @@ 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[int] = 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[int] = 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 @@ -4143,7 +3845,6 @@ 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 @@ -4155,20 +3856,17 @@ 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 @@ -4189,18 +3887,14 @@ class IntegrationRequiredField(model.Model): any_tag: If present, supercedes 'tag' and matches a field that has any of the provided tags. all_tags: If present, supercedes '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 @@ -4214,18 +3908,14 @@ 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 @@ -4238,16 +3928,12 @@ 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 @@ -4260,18 +3946,14 @@ 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 @@ -4325,7 +4007,6 @@ 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 @@ -4370,53 +4051,50 @@ 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[int]] = None, - default_new_user_groups: Optional[Sequence["Group"]] = None, - default_new_user_role_ids: Optional[Sequence[int]] = 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[int]] = None, + default_new_user_groups: Optional[Sequence["Group"]] = None, + default_new_user_role_ids: Optional[Sequence[int]] = 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 @@ -4470,18 +4148,14 @@ class LDAPConfigTestIssue(model.Model): message: Message describing the issue can: Operations the current user is able to perform on this object """ - severity: Optional[str] = None message: Optional[str] = None can: Optional[MutableMapping[str, bool]] = None - def __init__( - self, - *, - severity: Optional[str] = None, - message: Optional[str] = None, - can: Optional[MutableMapping[str, bool]] = None - ): + def __init__(self, *, + severity: Optional[str] = None, + message: Optional[str] = None, + can: Optional[MutableMapping[str, bool]] = None): self.severity = severity self.message = message self.can = can @@ -4499,7 +4173,6 @@ class LDAPConfigTestResult(model.Model): user: url: Link to ldap config """ - details: Optional[str] = None issues: Optional[Sequence["LDAPConfigTestIssue"]] = None message: Optional[str] = None @@ -4508,17 +4181,14 @@ 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 @@ -4539,7 +4209,6 @@ class LDAPGroupRead(model.Model): roles: Looker Roles url: Link to ldap config """ - id: Optional[int] = None looker_group_id: Optional[int] = None looker_group_name: Optional[str] = None @@ -4547,16 +4216,13 @@ class LDAPGroupRead(model.Model): roles: Optional[Sequence["Role"]] = None url: Optional[str] = None - def __init__( - self, - *, - id: Optional[int] = None, - looker_group_id: Optional[int] = 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[int] = None, + looker_group_id: Optional[int] = 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 @@ -4576,7 +4242,6 @@ class LDAPGroupWrite(model.Model): role_ids: Looker Role Ids url: Link to ldap config """ - id: Optional[int] = None looker_group_id: Optional[int] = None looker_group_name: Optional[str] = None @@ -4584,16 +4249,13 @@ class LDAPGroupWrite(model.Model): role_ids: Optional[Sequence[int]] = None url: Optional[str] = None - def __init__( - self, - *, - id: Optional[int] = None, - looker_group_id: Optional[int] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - role_ids: Optional[Sequence[int]] = None, - url: Optional[str] = None - ): + def __init__(self, *, + id: Optional[int] = None, + looker_group_id: Optional[int] = None, + looker_group_name: Optional[str] = None, + name: Optional[str] = None, + role_ids: Optional[Sequence[int]] = None, + url: Optional[str] = None): self.id = id self.looker_group_id = looker_group_id self.looker_group_name = looker_group_name @@ -4618,7 +4280,6 @@ class LDAPUser(model.Model): can: Operations the current user is able to perform on this object url: Link to ldap config """ - all_emails: Optional[Sequence[str]] = None attributes: Optional[MutableMapping[str, Any]] = None email: Optional[str] = None @@ -4631,21 +4292,18 @@ class LDAPUser(model.Model): can: Optional[MutableMapping[str, bool]] = 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, - can: Optional[MutableMapping[str, bool]] = 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, + can: Optional[MutableMapping[str, bool]] = None, + url: Optional[str] = None): self.all_emails = all_emails self.attributes = attributes self.email = email @@ -4668,20 +4326,16 @@ 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 @@ -4697,20 +4351,16 @@ 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[int]] = None url: Optional[str] = None - def __init__( - self, - *, - name: Optional[str] = None, - required: Optional[bool] = None, - user_attribute_ids: Optional[Sequence[int]] = None, - url: Optional[str] = None - ): + def __init__(self, *, + name: Optional[str] = None, + required: Optional[bool] = None, + user_attribute_ids: Optional[Sequence[int]] = None, + url: Optional[str] = None): self.name = name self.required = required self.user_attribute_ids = user_attribute_ids @@ -4735,7 +4385,6 @@ 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 @@ -4750,23 +4399,20 @@ 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 @@ -4790,18 +4436,14 @@ 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 @@ -4815,18 +4457,14 @@ class LocalizationSettings(model.Model): localization_level: Localization level - strict or permissive can: Operations the current user is able to perform on this object """ - default_locale: Optional[str] = None localization_level: Optional[str] = None can: Optional[MutableMapping[str, bool]] = None - def __init__( - self, - *, - default_locale: Optional[str] = None, - localization_level: Optional[str] = None, - can: Optional[MutableMapping[str, bool]] = None - ): + def __init__(self, *, + default_locale: Optional[str] = None, + localization_level: Optional[str] = None, + can: Optional[MutableMapping[str, bool]] = None): self.default_locale = default_locale self.localization_level = localization_level self.can = can @@ -4870,7 +4508,6 @@ class Look(model.Model): space_id: Space Id space: """ - can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[int] = None id: Optional[int] = None @@ -4905,43 +4542,40 @@ class Look(model.Model): space_id: Optional[str] = None space: Optional["SpaceBase"] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - content_metadata_id: Optional[int] = None, - id: Optional[int] = None, - title: Optional[str] = None, - content_favorite_id: Optional[int] = None, - created_at: Optional[datetime.datetime] = None, - deleted: Optional[bool] = None, - deleted_at: Optional[datetime.datetime] = None, - deleter_id: Optional[int] = 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[int] = 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[int] = None, - short_url: Optional[str] = None, - folder: Optional["FolderBase"] = None, - folder_id: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None, - user_id: Optional[int] = None, - view_count: Optional[int] = None, - user: Optional["UserIdOnly"] = None, - space_id: Optional[str] = None, - space: Optional["SpaceBase"] = None - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[int] = None, + id: Optional[int] = None, + title: Optional[str] = None, + content_favorite_id: Optional[int] = None, + created_at: Optional[datetime.datetime] = None, + deleted: Optional[bool] = None, + deleted_at: Optional[datetime.datetime] = None, + deleter_id: Optional[int] = 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[int] = 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[int] = None, + short_url: Optional[str] = None, + folder: Optional["FolderBase"] = None, + folder_id: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None, + user_id: Optional[int] = None, + view_count: Optional[int] = None, + user: Optional["UserIdOnly"] = None, + space_id: Optional[str] = None, + space: Optional["SpaceBase"] = None): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -4986,20 +4620,16 @@ class LookBasic(model.Model): id: Unique Id title: Look Title """ - can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[int] = None id: Optional[int] = None title: Optional[str] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - content_metadata_id: Optional[int] = None, - id: Optional[int] = None, - title: Optional[str] = None - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[int] = None, + id: Optional[int] = None, + title: Optional[str] = None): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -5019,7 +4649,6 @@ 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 @@ -5029,18 +4658,15 @@ 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 @@ -5090,7 +4716,6 @@ class LookmlModelExplore(model.Model): group_label: Label used to group explores in the navigation menus 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. """ - id: Optional[str] = None name: Optional[str] = None description: Optional[str] = None @@ -5116,9 +4741,7 @@ 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 @@ -5126,52 +4749,43 @@ 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 - - def __init__( - self, - *, - id: Optional[str] = None, - name: Optional[str] = None, - description: Optional[str] = None, - label: Optional[str] = None, - scopes: Optional[Sequence[str]] = None, - can_total: Optional[bool] = 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, - supports_cost_estimate: Optional[bool] = None, - connection_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 - ): + supported_measure_types: Optional[Sequence["LookmlModelExploreSupportedMeasureType"]] = None + + def __init__(self, *, + id: Optional[str] = None, + name: Optional[str] = None, + description: Optional[str] = None, + label: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + can_total: Optional[bool] = 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, + supports_cost_estimate: Optional[bool] = None, + connection_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): self.id = id self.name = name self.description = description @@ -5215,13 +4829,12 @@ 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 @@ -5233,11 +4846,12 @@ 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 @@ -5249,11 +4863,12 @@ 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 @@ -5265,11 +4880,12 @@ 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 @@ -5283,20 +4899,16 @@ 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 @@ -5360,7 +4972,6 @@ class LookmlModelExploreField(model.Model): dynamic: Whether this field was specified in "dynamic_fields" and is not part of the model. week_start_day: The name of the starting day of the week. Valid values are: "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday". """ - align: Optional["Align"] = None can_filter: Optional[bool] = None category: Optional["Category"] = None @@ -5414,64 +5025,59 @@ class LookmlModelExploreField(model.Model): dynamic: Optional[bool] = None week_start_day: Optional["WeekStartDay"] = None - def __init__( - self, - *, - align: Optional["Align"] = 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, - 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, - 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, - map_layer: Optional["LookmlModelExploreFieldMapLayer"] = None, - measure: Optional[bool] = None, - name: Optional[str] = None, - strict_value_format: Optional[bool] = None, - parameter: Optional[bool] = 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, - tags: Optional[Sequence[str]] = None, - type: Optional[str] = None, - user_attribute_filter_types: Optional[ - Sequence["UserAttributeFilterTypes"] - ] = None, - value_format: Optional[str] = None, - view: Optional[str] = None, - view_label: Optional[str] = None, - dynamic: Optional[bool] = None, - week_start_day: Optional["WeekStartDay"] = None - ): + def __init__(self, *, + align: Optional["Align"] = 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, + 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, + 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, + map_layer: Optional["LookmlModelExploreFieldMapLayer"] = None, + measure: Optional[bool] = None, + name: Optional[str] = None, + strict_value_format: Optional[bool] = None, + parameter: Optional[bool] = 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, + tags: Optional[Sequence[str]] = None, + type: Optional[str] = None, + user_attribute_filter_types: Optional[Sequence["UserAttributeFilterTypes"]] = None, + value_format: Optional[str] = None, + view: Optional[str] = None, + view_label: Optional[str] = None, + dynamic: Optional[bool] = None, + week_start_day: Optional["WeekStartDay"] = None): self.align = align self.can_filter = can_filter self.category = category @@ -5533,11 +5139,12 @@ 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 @@ -5557,7 +5164,6 @@ 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 @@ -5569,20 +5175,17 @@ 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 @@ -5602,11 +5205,12 @@ 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 @@ -5620,20 +5224,16 @@ 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 @@ -5647,11 +5247,12 @@ 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 @@ -5663,11 +5264,12 @@ 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 @@ -5690,7 +5292,6 @@ 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 @@ -5705,23 +5306,20 @@ 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 @@ -5744,13 +5342,12 @@ 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 @@ -5762,16 +5359,12 @@ 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 @@ -5787,7 +5380,6 @@ class LookmlModelNavExplore(model.Model): group_label: Label used to group explores in the navigation menus can: Operations the current user is able to perform on this object """ - name: Optional[str] = None description: Optional[str] = None label: Optional[str] = None @@ -5795,16 +5387,13 @@ class LookmlModelNavExplore(model.Model): group_label: Optional[str] = None can: Optional[MutableMapping[str, bool]] = 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, - can: Optional[MutableMapping[str, bool]] = 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, + can: Optional[MutableMapping[str, bool]] = None): self.name = name self.description = description self.label = label @@ -5825,7 +5414,6 @@ 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 @@ -5834,17 +5422,14 @@ 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 @@ -5867,7 +5452,6 @@ 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 @@ -5877,18 +5461,15 @@ 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 @@ -5906,11 +5487,12 @@ 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 @@ -5954,7 +5536,6 @@ class LookWithDashboards(model.Model): space: dashboards: Dashboards """ - can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[int] = None id: Optional[int] = None @@ -5990,44 +5571,41 @@ class LookWithDashboards(model.Model): space: Optional["SpaceBase"] = None dashboards: Optional[Sequence["DashboardBase"]] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - content_metadata_id: Optional[int] = None, - id: Optional[int] = None, - title: Optional[str] = None, - content_favorite_id: Optional[int] = None, - created_at: Optional[datetime.datetime] = None, - deleted: Optional[bool] = None, - deleted_at: Optional[datetime.datetime] = None, - deleter_id: Optional[int] = 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[int] = 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[int] = None, - short_url: Optional[str] = None, - folder: Optional["FolderBase"] = None, - folder_id: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None, - user_id: Optional[int] = None, - view_count: Optional[int] = None, - user: Optional["UserIdOnly"] = None, - space_id: Optional[str] = None, - space: Optional["SpaceBase"] = None, - dashboards: Optional[Sequence["DashboardBase"]] = None - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[int] = None, + id: Optional[int] = None, + title: Optional[str] = None, + content_favorite_id: Optional[int] = None, + created_at: Optional[datetime.datetime] = None, + deleted: Optional[bool] = None, + deleted_at: Optional[datetime.datetime] = None, + deleter_id: Optional[int] = 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[int] = 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[int] = None, + short_url: Optional[str] = None, + folder: Optional["FolderBase"] = None, + folder_id: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None, + user_id: Optional[int] = None, + view_count: Optional[int] = None, + user: Optional["UserIdOnly"] = None, + space_id: Optional[str] = None, + space: Optional["SpaceBase"] = None, + dashboards: Optional[Sequence["DashboardBase"]] = None): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -6104,7 +5682,6 @@ class LookWithQuery(model.Model): query: url: Url """ - can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[int] = None id: Optional[int] = None @@ -6141,45 +5718,42 @@ 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[int] = None, - id: Optional[int] = None, - title: Optional[str] = None, - content_favorite_id: Optional[int] = None, - created_at: Optional[datetime.datetime] = None, - deleted: Optional[bool] = None, - deleted_at: Optional[datetime.datetime] = None, - deleter_id: Optional[int] = 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[int] = 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[int] = None, - short_url: Optional[str] = None, - folder: Optional["FolderBase"] = None, - folder_id: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None, - user_id: Optional[int] = None, - view_count: Optional[int] = None, - user: Optional["UserIdOnly"] = None, - space_id: Optional[str] = None, - space: Optional["SpaceBase"] = None, - query: Optional["Query"] = None, - url: Optional[str] = None - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[int] = None, + id: Optional[int] = None, + title: Optional[str] = None, + content_favorite_id: Optional[int] = None, + created_at: Optional[datetime.datetime] = None, + deleted: Optional[bool] = None, + deleted_at: Optional[datetime.datetime] = None, + deleter_id: Optional[int] = 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[int] = 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[int] = None, + short_url: Optional[str] = None, + folder: Optional["FolderBase"] = None, + folder_id: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None, + user_id: Optional[int] = None, + view_count: Optional[int] = None, + user: Optional["UserIdOnly"] = None, + space_id: Optional[str] = None, + space: Optional["SpaceBase"] = None, + query: Optional["Query"] = None, + url: Optional[str] = None): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -6226,20 +5800,16 @@ 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 @@ -6253,16 +5823,12 @@ 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 @@ -6274,16 +5840,12 @@ 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 @@ -6303,7 +5865,6 @@ class MergeQuery(model.Model): total: Total vis_config: Visualization Config """ - can: Optional[MutableMapping[str, bool]] = None column_limit: Optional[str] = None dynamic_fields: Optional[str] = None @@ -6315,20 +5876,17 @@ class MergeQuery(model.Model): total: Optional[bool] = 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[int] = None, - sorts: Optional[Sequence[str]] = None, - source_queries: Optional[Sequence["MergeQuerySourceQuery"]] = None, - total: Optional[bool] = 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[int] = None, + sorts: Optional[Sequence[str]] = None, + source_queries: Optional[Sequence["MergeQuerySourceQuery"]] = None, + total: Optional[bool] = None, + vis_config: Optional[MutableMapping[str, Any]] = None): self.can = can self.column_limit = column_limit self.dynamic_fields = dynamic_fields @@ -6349,18 +5907,14 @@ class MergeQuerySourceQuery(model.Model): name: Display name query_id: Id of the query to merge """ - merge_fields: Optional[Sequence["MergeFields"]] = None name: Optional[str] = None query_id: Optional[int] = None - def __init__( - self, - *, - merge_fields: Optional[Sequence["MergeFields"]] = None, - name: Optional[str] = None, - query_id: Optional[int] = None - ): + def __init__(self, *, + merge_fields: Optional[Sequence["MergeFields"]] = None, + name: Optional[str] = None, + query_id: Optional[int] = None): self.merge_fields = merge_fields self.name = name self.query_id = query_id @@ -6378,7 +5932,6 @@ 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 @@ -6387,17 +5940,14 @@ 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[int] = 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[int] = 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 @@ -6414,13 +5964,12 @@ 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 @@ -6430,7 +5979,6 @@ 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" @@ -6486,7 +6034,6 @@ 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 @@ -6521,43 +6068,40 @@ 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[int]] = None, - default_new_user_groups: Optional[Sequence["Group"]] = None, - default_new_user_role_ids: Optional[Sequence[int]] = 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[int] = 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[int]] = None, + default_new_user_groups: Optional[Sequence["Group"]] = None, + default_new_user_role_ids: Optional[Sequence[int]] = 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[int] = 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 @@ -6603,22 +6147,18 @@ class OIDCGroupRead(model.Model): name: Name of group in OIDC roles: Looker Roles """ - id: Optional[int] = None looker_group_id: Optional[int] = None looker_group_name: Optional[str] = None name: Optional[str] = None roles: Optional[Sequence["Role"]] = None - def __init__( - self, - *, - id: Optional[int] = None, - looker_group_id: Optional[int] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - roles: Optional[Sequence["Role"]] = None - ): + def __init__(self, *, + id: Optional[int] = None, + looker_group_id: Optional[int] = 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 @@ -6637,7 +6177,6 @@ class OIDCGroupWrite(model.Model): role_ids: Looker Role Ids can: Operations the current user is able to perform on this object """ - id: Optional[int] = None looker_group_id: Optional[int] = None looker_group_name: Optional[str] = None @@ -6645,16 +6184,13 @@ class OIDCGroupWrite(model.Model): role_ids: Optional[Sequence[int]] = None can: Optional[MutableMapping[str, bool]] = None - def __init__( - self, - *, - id: Optional[int] = None, - looker_group_id: Optional[int] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - role_ids: Optional[Sequence[int]] = None, - can: Optional[MutableMapping[str, bool]] = None - ): + def __init__(self, *, + id: Optional[int] = None, + looker_group_id: Optional[int] = None, + looker_group_name: Optional[str] = None, + name: Optional[str] = None, + role_ids: Optional[Sequence[int]] = None, + can: Optional[MutableMapping[str, bool]] = None): self.id = id self.looker_group_id = looker_group_id self.looker_group_name = looker_group_name @@ -6671,18 +6207,14 @@ 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 @@ -6697,20 +6229,16 @@ class OIDCUserAttributeWrite(model.Model): user_attribute_ids: Looker User Attribute Ids can: Operations the current user is able to perform on this object """ - name: Optional[str] = None required: Optional[bool] = None user_attribute_ids: Optional[Sequence[int]] = None can: Optional[MutableMapping[str, bool]] = None - def __init__( - self, - *, - name: Optional[str] = None, - required: Optional[bool] = None, - user_attribute_ids: Optional[Sequence[int]] = None, - can: Optional[MutableMapping[str, bool]] = None - ): + def __init__(self, *, + name: Optional[str] = None, + required: Optional[bool] = None, + user_attribute_ids: Optional[Sequence[int]] = None, + can: Optional[MutableMapping[str, bool]] = None): self.name = name self.required = required self.user_attribute_ids = user_attribute_ids @@ -6727,22 +6255,18 @@ class PasswordConfig(model.Model): require_upperlower: Require at least one uppercase and one lowercase letter require_special: Require at least one special character """ - 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 - 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 - ): + 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): self.can = can self.min_length = min_length self.require_numeric = require_numeric @@ -6759,20 +6283,16 @@ 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 @@ -6791,7 +6311,6 @@ 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 @@ -6800,17 +6319,14 @@ 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[int] = 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[int] = 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 @@ -6825,7 +6341,6 @@ 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" @@ -6861,7 +6376,6 @@ class Project(model.Model): 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). is_example: If true the project is an example project and cannot be modified """ - can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None name: Optional[str] = None @@ -6884,31 +6398,28 @@ class Project(model.Model): allow_warnings: Optional[bool] = None is_example: Optional[bool] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - name: Optional[str] = None, - uses_git: 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 - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + name: Optional[str] = None, + uses_git: 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): self.can = can self.id = id self.name = name @@ -6949,7 +6460,6 @@ 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 @@ -6963,22 +6473,19 @@ 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 @@ -7007,7 +6514,6 @@ 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 @@ -7018,19 +6524,16 @@ 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 @@ -7051,20 +6554,16 @@ 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 @@ -7081,22 +6580,18 @@ 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 @@ -7117,7 +6612,6 @@ 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 @@ -7127,18 +6621,15 @@ 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 @@ -7154,7 +6645,6 @@ 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" @@ -7198,7 +6688,6 @@ class Query(model.Model): has_table_calculations: Has Table Calculations runtime: (DEPRECATED) Runtime (Deprecated) """ - model: str view: str can: Optional[MutableMapping[str, bool]] = None @@ -7227,37 +6716,34 @@ class Query(model.Model): has_table_calculations: Optional[bool] = None runtime: Optional[float] = None - def __init__( - self, - *, - model: str, - view: str, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = 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, - runtime: Optional[float] = None - ): + def __init__(self, *, + model: str, + view: str, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = 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, + runtime: Optional[float] = None): self.model = model self.view = view self.can = can @@ -7311,7 +6797,6 @@ 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[int] = None @@ -7332,29 +6817,26 @@ 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[int] = 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[int] = 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[int] = 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[int] = None, + dashboard_id: Optional[str] = None, + result_format: Optional[str] = None): self.can = can self.id = id self.query_id = query_id @@ -7401,7 +6883,6 @@ 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 @@ -7423,30 +6904,27 @@ class RenderTask(model.Model): user_id: Optional[int] = 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[int] = None, - dashboard_style: Optional[str] = None, - finalized_at: Optional[str] = None, - height: Optional[int] = None, - id: Optional[str] = None, - look_id: Optional[int] = None, - lookml_dashboard_id: Optional[str] = None, - query_id: Optional[int] = 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[int] = 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[int] = None, + dashboard_style: Optional[str] = None, + finalized_at: Optional[str] = None, + height: Optional[int] = None, + id: Optional[str] = None, + look_id: Optional[int] = None, + lookml_dashboard_id: Optional[str] = None, + query_id: Optional[int] = 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[int] = None, + width: Optional[int] = None): self.can = can self.created_at = created_at self.dashboard_filters = dashboard_filters @@ -7482,7 +6960,6 @@ 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 @@ -7492,18 +6969,15 @@ 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 @@ -7519,7 +6993,6 @@ 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". (Enum defined in CreateQueryTask) """ - inline_json = "inline_json" json = "json" json_detail = "json_detail" @@ -7548,20 +7021,16 @@ 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 @@ -7575,16 +7044,12 @@ 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 @@ -7604,7 +7069,6 @@ class ResultMakerWithIdVisConfigAndDynamicFields(model.Model): query: vis_config: Vis config of the constituent Query, or Merge Query. """ - id: Optional[int] = None dynamic_fields: Optional[str] = None filterables: Optional[Sequence["ResultMakerFilterables"]] = None @@ -7616,20 +7080,17 @@ class ResultMakerWithIdVisConfigAndDynamicFields(model.Model): query: Optional["Query"] = None vis_config: Optional[MutableMapping[str, Any]] = None - def __init__( - self, - *, - id: Optional[int] = 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[int] = None, - sql_query_id: Optional[str] = None, - query: Optional["Query"] = None, - vis_config: Optional[MutableMapping[str, Any]] = None - ): + def __init__(self, *, + id: Optional[int] = 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[int] = 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 @@ -7656,7 +7117,6 @@ 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[int] = None name: Optional[str] = None @@ -7667,19 +7127,16 @@ class Role(model.Model): url: Optional[str] = None users_url: Optional[str] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = None, - name: Optional[str] = None, - permission_set: Optional["PermissionSet"] = None, - permission_set_id: Optional[int] = None, - model_set: Optional["ModelSet"] = None, - model_set_id: Optional[int] = None, - url: Optional[str] = None, - users_url: Optional[str] = None - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = None, + name: Optional[str] = None, + permission_set: Optional["PermissionSet"] = None, + permission_set_id: Optional[int] = None, + model_set: Optional["ModelSet"] = None, + model_set_id: Optional[int] = None, + url: Optional[str] = None, + users_url: Optional[str] = None): self.can = can self.id = id self.name = name @@ -7717,7 +7174,6 @@ class RunningQueries(model.Model): runtime: Number of seconds elapsed running the Query sql: SQL text of the query as run """ - can: Optional[MutableMapping[str, bool]] = None id: Optional[int] = None user: Optional["UserPublic"] = None @@ -7740,31 +7196,28 @@ class RunningQueries(model.Model): runtime: Optional[float] = None sql: Optional[str] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = 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 - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = 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): self.can = can self.id = id self.user = user @@ -7826,7 +7279,6 @@ 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 @@ -7861,43 +7313,40 @@ 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_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[int]] = None, - default_new_user_group_ids: Optional[Sequence[int]] = 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_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[int]] = None, + default_new_user_group_ids: Optional[Sequence[int]] = 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 @@ -7944,7 +7393,6 @@ class SamlGroupRead(model.Model): roles: Looker Roles url: Link to saml config """ - id: Optional[int] = None looker_group_id: Optional[int] = None looker_group_name: Optional[str] = None @@ -7952,16 +7400,13 @@ class SamlGroupRead(model.Model): roles: Optional[Sequence["Role"]] = None url: Optional[str] = None - def __init__( - self, - *, - id: Optional[int] = None, - looker_group_id: Optional[int] = 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[int] = None, + looker_group_id: Optional[int] = 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 @@ -7981,7 +7426,6 @@ class SamlGroupWrite(model.Model): role_ids: Looker Role Ids url: Link to saml config """ - id: Optional[int] = None looker_group_id: Optional[int] = None looker_group_name: Optional[str] = None @@ -7989,16 +7433,13 @@ class SamlGroupWrite(model.Model): role_ids: Optional[Sequence[int]] = None url: Optional[str] = None - def __init__( - self, - *, - id: Optional[int] = None, - looker_group_id: Optional[int] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - role_ids: Optional[Sequence[int]] = None, - url: Optional[str] = None - ): + def __init__(self, *, + id: Optional[int] = None, + looker_group_id: Optional[int] = None, + looker_group_name: Optional[str] = None, + name: Optional[str] = None, + role_ids: Optional[Sequence[int]] = None, + url: Optional[str] = None): self.id = id self.looker_group_id = looker_group_id self.looker_group_name = looker_group_name @@ -8016,20 +7457,16 @@ class SamlMetadataParseResult(model.Model): idp_url: Identify Provider Url idp_cert: Identify Provider Certificate """ - can: Optional[MutableMapping[str, bool]] = None idp_issuer: Optional[str] = None idp_url: Optional[str] = None idp_cert: Optional[str] = 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 - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + idp_issuer: Optional[str] = None, + idp_url: Optional[str] = None, + idp_cert: Optional[str] = None): self.can = can self.idp_issuer = idp_issuer self.idp_url = idp_url @@ -8045,20 +7482,16 @@ 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 @@ -8074,20 +7507,16 @@ 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[int]] = None url: Optional[str] = None - def __init__( - self, - *, - name: Optional[str] = None, - required: Optional[bool] = None, - user_attribute_ids: Optional[Sequence[int]] = None, - url: Optional[str] = None - ): + def __init__(self, *, + name: Optional[str] = None, + required: Optional[bool] = None, + user_attribute_ids: Optional[Sequence[int]] = None, + url: Optional[str] = None): self.name = name self.required = required self.user_attribute_ids = user_attribute_ids @@ -8137,7 +7566,6 @@ 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[int] = None run_as_recipient: Optional[bool] = None @@ -8177,50 +7605,45 @@ 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[int] = None, - run_as_recipient: Optional[bool] = None, - enabled: Optional[bool] = None, - look_id: Optional[int] = None, - dashboard_id: Optional[int] = 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, - query_id: 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, - inline_table_width: Optional[int] = None, - id: Optional[int] = 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[int] = None, + run_as_recipient: Optional[bool] = None, + enabled: Optional[bool] = None, + look_id: Optional[int] = None, + dashboard_id: Optional[int] = 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, + query_id: 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, + inline_table_width: Optional[int] = None, + id: Optional[int] = 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 @@ -8270,14 +7693,13 @@ 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[int] = None scheduled_plan_id: Optional[int] = None format: Optional[str] = None @@ -8290,21 +7712,18 @@ class ScheduledPlanDestination(model.Model): secret_parameters: Optional[str] = None message: Optional[str] = None - def __init__( - self, - *, - id: Optional[int] = None, - scheduled_plan_id: Optional[int] = 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[int] = None, + scheduled_plan_id: Optional[int] = 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 @@ -8338,7 +7757,6 @@ 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[int] = None ip_address: Optional[str] = None @@ -8355,25 +7773,22 @@ class Session(model.Model): expires_at: Optional[str] = None url: Optional[str] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = 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[int] = 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[int] = 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[int] = 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 @@ -8402,7 +7817,6 @@ 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 @@ -8410,16 +7824,13 @@ 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 @@ -8441,7 +7852,6 @@ class SmtpSettings(model.Model): ssl_version: TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2". default_smtp: Whether to enable built-in Looker SMTP """ - address: Optional[str] = None from_: Optional[str] = None user_name: Optional[str] = None @@ -8451,18 +7861,15 @@ class SmtpSettings(model.Model): ssl_version: Optional["SslVersion"] = 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, - 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, + default_smtp: Optional[bool] = None): self.address = address self.from_ = from_ self.user_name = user_name @@ -8482,20 +7889,16 @@ class Snippet(model.Model): sql: SQL text of the snippet can: Operations the current user is able to perform on this object """ - name: Optional[str] = None label: Optional[str] = None sql: Optional[str] = None can: Optional[MutableMapping[str, bool]] = None - def __init__( - self, - *, - name: Optional[str] = None, - label: Optional[str] = None, - sql: Optional[str] = None, - can: Optional[MutableMapping[str, bool]] = None - ): + def __init__(self, *, + name: Optional[str] = None, + label: Optional[str] = None, + sql: Optional[str] = None, + can: Optional[MutableMapping[str, bool]] = None): self.name = name self.label = label self.sql = sql @@ -8525,7 +7928,6 @@ class Space(model.Model): dashboards: Dashboards looks: Looks """ - name: str parent_id: Optional[str] = None id: Optional[str] = None @@ -8545,28 +7947,25 @@ class Space(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[int] = None, - created_at: Optional[datetime.datetime] = None, - creator_id: Optional[int] = 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[int] = None, + created_at: Optional[datetime.datetime] = None, + creator_id: Optional[int] = 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 @@ -8608,7 +8007,6 @@ class SpaceBase(model.Model): is_users_root: Space is the root user space can: Operations the current user is able to perform on this object """ - name: str parent_id: Optional[str] = None id: Optional[str] = None @@ -8626,26 +8024,23 @@ class SpaceBase(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[int] = None, - created_at: Optional[datetime.datetime] = None, - creator_id: Optional[int] = 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[int] = None, + created_at: Optional[datetime.datetime] = None, + creator_id: Optional[int] = 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 @@ -8683,7 +8078,6 @@ 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 @@ -8699,24 +8093,21 @@ class SqlQuery(model.Model): vis_config: Optional[MutableMapping[str, Any]] = None result_maker_id: Optional[int] = 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[int] = 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[int] = None): self.can = can self.slug = slug self.last_runtime = last_runtime @@ -8743,22 +8134,18 @@ 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 @@ -8771,7 +8158,6 @@ 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" @@ -8787,7 +8173,6 @@ 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" @@ -8804,7 +8189,6 @@ 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" @@ -8819,7 +8203,6 @@ 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", "xlsx", "html", "wysiwyg_pdf", "assembled_pdf", "wysiwyg_png", "csv_zip". (Enum defined in Integration) """ - txt = "txt" csv = "csv" inline_json = "inline_json" @@ -8845,7 +8228,6 @@ 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" @@ -8860,7 +8242,6 @@ 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" @@ -8881,7 +8262,6 @@ 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 @@ -8889,16 +8269,13 @@ 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[int] = 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[int] = None, + name: Optional[str] = None, + settings: Optional["ThemeSettings"] = None): self.can = can self.begin_at = begin_at self.end_at = end_at @@ -8957,7 +8334,6 @@ 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 @@ -9004,55 +8380,52 @@ 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 @@ -9108,18 +8481,14 @@ 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 @@ -9132,11 +8501,12 @@ 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 @@ -9148,11 +8518,12 @@ class UpdateSpace(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 @@ -9199,7 +8570,6 @@ class User(model.Model): allow_roles_from_normal_groups: User can inherit roles from a normal Looker group. url: Link to get this item """ - can: Optional[MutableMapping[str, bool]] = None avatar_url: Optional[str] = None avatar_url_without_sizing: Optional[str] = None @@ -9238,47 +8608,44 @@ class User(model.Model): allow_roles_from_normal_groups: Optional[bool] = 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, - display_name: Optional[str] = None, - email: Optional[str] = None, - embed_group_space_id: Optional[int] = None, - first_name: Optional[str] = None, - group_ids: Optional[Sequence[int]] = None, - home_space_id: Optional[str] = None, - home_folder_id: Optional[str] = None, - id: Optional[int] = 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_space_id: Optional[int] = None, - personal_folder_id: Optional[int] = None, - presumed_looker_employee: Optional[bool] = None, - role_ids: Optional[Sequence[int]] = 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, - 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, + display_name: Optional[str] = None, + email: Optional[str] = None, + embed_group_space_id: Optional[int] = None, + first_name: Optional[str] = None, + group_ids: Optional[Sequence[int]] = None, + home_space_id: Optional[str] = None, + home_folder_id: Optional[str] = None, + id: Optional[int] = 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_space_id: Optional[int] = None, + personal_folder_id: Optional[int] = None, + presumed_looker_employee: Optional[bool] = None, + role_ids: Optional[Sequence[int]] = 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, + url: Optional[str] = None): self.can = can self.avatar_url = avatar_url self.avatar_url_without_sizing = avatar_url_without_sizing @@ -9335,7 +8702,6 @@ class UserAttribute(model.Model): 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. """ - can: Optional[MutableMapping[str, bool]] = None id: Optional[int] = None name: Optional[str] = None @@ -9349,22 +8715,19 @@ class UserAttribute(model.Model): user_can_edit: Optional[bool] = None hidden_value_domain_whitelist: Optional[str] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = None, - name: Optional[str] = None, - label: Optional[str] = None, - type: 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 - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = None, + name: Optional[str] = None, + label: Optional[str] = None, + type: 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): self.can = can self.id = id self.name = name @@ -9384,7 +8747,6 @@ 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" @@ -9415,7 +8777,6 @@ 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[int] = None group_id: Optional[int] = None @@ -9424,17 +8785,14 @@ class UserAttributeGroupValue(model.Model): rank: Optional[int] = None value: Optional[str] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = None, - group_id: Optional[int] = None, - user_attribute_id: Optional[int] = 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[int] = None, + group_id: Optional[int] = None, + user_attribute_id: Optional[int] = 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 @@ -9460,7 +8818,6 @@ 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 @@ -9473,21 +8830,18 @@ 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[int] = None, - user_can_edit: Optional[bool] = None, - value_is_hidden: Optional[bool] = None, - user_attribute_id: Optional[int] = 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[int] = None, + user_can_edit: Optional[bool] = None, + value_is_hidden: Optional[bool] = None, + user_attribute_id: Optional[int] = None, + source: Optional[str] = None, + hidden_value_domain_whitelist: Optional[str] = None): self.can = can self.name = name self.label = label @@ -9507,10 +8861,10 @@ class UserIdOnly(model.Model): Attributes: id: Unique Id """ - id: Optional[int] = None - def __init__(self, *, id: Optional[int] = None): + def __init__(self, *, + id: Optional[int] = None): self.id = id @@ -9529,7 +8883,6 @@ 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 @@ -9541,20 +8894,17 @@ 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[int] = 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[int] = 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 @@ -9579,7 +8929,6 @@ 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[int] = None first_name: Optional[str] = None @@ -9588,17 +8937,14 @@ class UserPublic(model.Model): avatar_url: Optional[str] = None url: Optional[str] = None - def __init__( - self, - *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = 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[int] = 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 @@ -9616,18 +8962,14 @@ 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 @@ -9642,20 +8984,16 @@ 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 @@ -9667,7 +9005,6 @@ 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" @@ -9690,18 +9027,14 @@ 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 @@ -9728,7 +9061,6 @@ 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[int] = None logo_file: Optional[str] = None logo_url: Optional[str] = None @@ -9746,26 +9078,23 @@ class WhitelabelConfiguration(model.Model): alerts_links: Optional[bool] = None folders_mentions: Optional[bool] = None - def __init__( - self, - *, - id: Optional[int] = 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[int] = 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 @@ -9792,18 +9121,14 @@ 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 @@ -9812,48 +9137,44 @@ def __init__( @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 @@ -9864,29 +9185,25 @@ def __init__( @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 @@ -9896,27 +9213,23 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteContentFavorite(model.Model): """ - Dynamic writeable type for ContentFavorite removes: - id, look_id, dashboard_id, look + Dynamic writeable type for ContentFavorite removes: +id, look_id, dashboard_id, look - Attributes: - user_id: User Id which owns this ContentFavorite - content_metadata_id: Content Metadata Id associated with this ContentFavorite - 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 + 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[int] = None content_metadata_id: Optional[int] = None dashboard: Optional["WriteDashboardBase"] = None - def __init__( - self, - *, - user_id: Optional[int] = None, - content_metadata_id: Optional[int] = None, - dashboard: Optional["WriteDashboardBase"] = None - ): + def __init__(self, *, + user_id: Optional[int] = None, + content_metadata_id: Optional[int] = None, + dashboard: Optional["WriteDashboardBase"] = None): self.user_id = user_id self.content_metadata_id = content_metadata_id self.dashboard = dashboard @@ -9925,41 +9238,40 @@ def __init__( @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, content_type, inheriting_id, slug, space_id + Dynamic writeable type for ContentMeta removes: +can, id, name, parent_id, dashboard_id, look_id, folder_id, content_type, inheriting_id, slug, space_id - Attributes: - inherits: Whether content inherits its access levels from parent + Attributes: + inherits: Whether content inherits its access levels from parent """ - 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 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 @@ -9974,23 +9286,20 @@ 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 @@ -10009,18 +9318,17 @@ def __init__( @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". - 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". + 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: int result_format: "ResultFormat" source: Optional[str] = None @@ -10033,19 +9341,16 @@ class WriteCreateQueryTask(model.Model): "source": Optional[str], "deferred": Optional[bool], "look_id": Optional[int], - "dashboard_id": Optional[str], + "dashboard_id": Optional[str] } - def __init__( - self, - *, - query_id: int, - result_format: "ResultFormat", - source: Optional[str] = None, - deferred: Optional[bool] = None, - look_id: Optional[int] = None, - dashboard_id: Optional[str] = None - ): + def __init__(self, *, + query_id: int, + result_format: "ResultFormat", + source: Optional[str] = None, + deferred: Optional[bool] = None, + look_id: Optional[int] = None, + dashboard_id: Optional[str] = None): self.query_id = query_id self.result_format = result_format self.source = source @@ -10057,23 +9362,19 @@ def __init__( @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, 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 - """ + Dynamic writeable type for CredentialsEmail removes: +can, created_at, user_id, is_disabled, logged_in_at, password_reset_url, account_setup_url, 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 + """ 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 @@ -10081,29 +9382,25 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteCustomWelcomeEmail(model.Model): """ - Dynamic writeable type for CustomWelcomeEmail removes: - can + Dynamic writeable type for CustomWelcomeEmail removes: +can - Attributes: - enabled: If true, custom email content will replace the default body of welcome emails - content: The HTML to use as custom content for welcome emails. Script elements and other potentially dangerous markup will be removed. - 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. + Attributes: + enabled: If true, custom email content will replace the default body of welcome emails + content: The HTML to use as custom content for welcome emails. Script elements and other potentially dangerous markup will be removed. + 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 @@ -10113,41 +9410,40 @@ def __init__( @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, user_id, 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 - - 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 - slug: Content Metadata Slug - preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) - space: Dynamic writeable type for SpaceBase 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 - alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes - 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://cloud.google.com/looker/docs/r/api/control-access) - show_title: Show title - space_id: Id of Space - 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: - """ + Dynamic writeable type for Dashboard removes: +can, content_favorite_id, content_metadata_id, id, model, readonly, refresh_interval_to_i, user_id, 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 + 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 + slug: Content Metadata Slug + preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) + space: Dynamic writeable type for SpaceBase 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 + alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes + 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://cloud.google.com/looker/docs/r/api/control-access) + show_title: Show title + space_id: Id of Space + 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: + """ description: Optional[str] = None hidden: Optional[bool] = None query_timezone: Optional[str] = None @@ -10176,37 +9472,34 @@ class WriteDashboard(model.Model): title_color: Optional[str] = None appearance: Optional["DashboardAppearance"] = 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, - slug: Optional[str] = None, - preferred_viewer: Optional[str] = None, - space: Optional["WriteSpaceBase"] = None, - alert_sync_with_dashboard_filter_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, - space_id: Optional[str] = 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 - ): + 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, + slug: Optional[str] = None, + preferred_viewer: Optional[str] = None, + space: Optional["WriteSpaceBase"] = None, + alert_sync_with_dashboard_filter_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, + space_id: Optional[str] = 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): self.description = description self.hidden = hidden self.query_timezone = query_timezone @@ -10216,9 +9509,7 @@ def __init__( self.slug = slug self.preferred_viewer = preferred_viewer self.space = space - 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.background_color = background_color self.crossfilter_enabled = crossfilter_enabled self.deleted = deleted @@ -10241,25 +9532,21 @@ def __init__( @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 - space: Dynamic writeable type for SpaceBase 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: + 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 + space: Dynamic writeable type for SpaceBase 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: Optional["WriteFolderBase"] = None space: Optional["WriteSpaceBase"] = None - def __init__( - self, - *, - folder: Optional["WriteFolderBase"] = None, - space: Optional["WriteSpaceBase"] = None - ): + def __init__(self, *, + folder: Optional["WriteFolderBase"] = None, + space: Optional["WriteSpaceBase"] = None): self.folder = folder self.space = space @@ -10267,34 +9554,33 @@ def __init__( @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 - 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, view_count, user, 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 - refresh_interval: Refresh Interval - result_maker: Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: - id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config - 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 - """ + 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 + 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, view_count, user, 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 + refresh_interval: Refresh Interval + result_maker: Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: +id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config + 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 + """ body_text: Optional[str] = None dashboard_id: Optional[str] = None look: Optional["WriteLookWithQuery"] = None @@ -10315,31 +9601,26 @@ class WriteDashboardElement(model.Model): type: Optional[str] = None rich_content_json: Optional[str] = None - def __init__( - self, - *, - body_text: Optional[str] = None, - dashboard_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[int] = None, - refresh_interval: Optional[str] = None, - result_maker: Optional[ - "WriteResultMakerWithIdVisConfigAndDynamicFields" - ] = None, - result_maker_id: Optional[int] = 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 - ): + def __init__(self, *, + body_text: Optional[str] = None, + dashboard_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[int] = None, + refresh_interval: Optional[str] = None, + result_maker: Optional["WriteResultMakerWithIdVisConfigAndDynamicFields"] = None, + result_maker_id: Optional[int] = 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): self.body_text = body_text self.dashboard_id = dashboard_id self.look = look @@ -10364,24 +9645,23 @@ def __init__( @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 @@ -10395,22 +9675,19 @@ 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 @@ -10428,32 +9705,28 @@ def __init__( @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 + Attributes: + dashboard_id: Id of Dashboard + type: Type + active: Is Active + column_width: Column Width + width: Width """ - dashboard_id: Optional[str] = None type: Optional[str] = None active: Optional[bool] = None column_width: Optional[int] = None width: Optional[int] = 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 - ): + 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): self.dashboard_id = dashboard_id self.type = type self.active = active @@ -10464,18 +9737,17 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteDashboardLayoutComponent(model.Model): """ - Dynamic writeable type for DashboardLayoutComponent removes: - can, id, deleted, element_title, element_title_hidden, vis_type + Dynamic writeable type for DashboardLayoutComponent removes: +can, id, deleted, 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 + Attributes: + dashboard_layout_id: Id of Dashboard Layout + dashboard_element_id: Id Of Dashboard Element + row: Row + column: Column + width: Width + height: Height """ - dashboard_layout_id: Optional[str] = None dashboard_element_id: Optional[str] = None row: Optional[int] = None @@ -10483,16 +9755,13 @@ class WriteDashboardLayoutComponent(model.Model): width: Optional[int] = None 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 - ): + 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): self.dashboard_layout_id = dashboard_layout_id self.dashboard_element_id = dashboard_element_id self.row = row @@ -10504,20 +9773,19 @@ def __init__( @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 @@ -10525,40 +9793,39 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteDBConnection(model.Model): """ - Dynamic writeable type for DBConnection removes: - can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed - - Attributes: - name: Name of the connection. Also used as the unique identifier - 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 - certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). - file_type: (Write-Only) Certificate keyfile type - .json 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_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) - 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 - uses_tns: Enable Transparent Network Substrate (TNS) connections - """ + Dynamic writeable type for DBConnection removes: +can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed + Attributes: + name: Name of the connection. Also used as the unique identifier + 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 + certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). + file_type: (Write-Only) Certificate keyfile type - .json 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_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) + 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 + uses_tns: Enable Transparent Network Substrate (TNS) connections + """ name: Optional[str] = None host: Optional[str] = None port: Optional[str] = None @@ -10587,37 +9854,34 @@ class WriteDBConnection(model.Model): pdt_context_override: Optional["WriteDBConnectionOverride"] = None uses_tns: Optional[bool] = None - def __init__( - self, - *, - name: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = 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_billing_gigabytes: Optional[str] = None, - ssl: Optional[bool] = None, - verify_ssl: Optional[bool] = None, - tmp_db_name: 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, - uses_tns: Optional[bool] = None - ): + def __init__(self, *, + name: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = 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_billing_gigabytes: Optional[str] = None, + ssl: Optional[bool] = None, + verify_ssl: Optional[bool] = None, + tmp_db_name: 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, + uses_tns: Optional[bool] = None): self.name = name self.host = host self.port = port @@ -10650,23 +9914,22 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteDBConnectionOverride(model.Model): """ - Dynamic writeable type for DBConnectionOverride removes: - has_password + 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 - port: Port number on server - username: Username for server authentication - password: (Write-Only) Password for server authentication - certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). - file_type: (Write-Only) Certificate keyfile type - .json or .p12 - database: Database name - schema: Schema name - jdbc_additional_params: Additional params to add to JDBC connection string - after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature + Attributes: + context: Context in which to override (`pdt` is the only allowed value) + host: Host name/address of server + port: Port number on server + username: Username for server authentication + password: (Write-Only) Password for server authentication + certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). + file_type: (Write-Only) Certificate keyfile type - .json or .p12 + database: Database name + schema: Schema name + jdbc_additional_params: Additional params to add to JDBC connection string + after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature """ - context: Optional[str] = None host: Optional[str] = None port: Optional[str] = None @@ -10679,21 +9942,18 @@ class WriteDBConnectionOverride(model.Model): jdbc_additional_params: Optional[str] = None after_connect_statements: Optional[str] = None - def __init__( - self, - *, - context: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - certificate: Optional[str] = None, - file_type: Optional[str] = None, - database: Optional[str] = None, - schema: Optional[str] = None, - jdbc_additional_params: Optional[str] = None, - after_connect_statements: Optional[str] = None - ): + def __init__(self, *, + context: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + certificate: Optional[str] = None, + file_type: Optional[str] = None, + database: Optional[str] = None, + schema: Optional[str] = None, + jdbc_additional_params: Optional[str] = None, + after_connect_statements: Optional[str] = None): self.context = context self.host = host self.port = port @@ -10710,18 +9970,19 @@ def __init__( @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 @@ -10729,18 +9990,19 @@ def __init__(self, *, name: str, parent_id: Optional[str] = None): @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 @@ -10748,23 +10010,19 @@ def __init__(self, *, name: Optional[str] = None, ref: Optional[str] = None): @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 @@ -10772,29 +10030,25 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteHomepage(model.Model): """ - Dynamic writeable type for Homepage removes: - can, content_metadata_id, created_at, homepage_sections, id, updated_at, user_id, primary_homepage + Dynamic writeable type for Homepage removes: +can, content_metadata_id, created_at, homepage_sections, id, updated_at, user_id, primary_homepage - Attributes: - deleted_at: Date of homepage deletion - description: Description of the homepage - section_order: ids of the homepage sections in the order they should be displayed - title: Title of the homepage + Attributes: + deleted_at: Date of homepage deletion + description: Description of the homepage + section_order: ids of the homepage sections in the order they should be displayed + title: Title of the homepage """ - deleted_at: Optional[datetime.datetime] = None description: Optional[str] = None section_order: Optional[Sequence[int]] = None title: Optional[str] = None - def __init__( - self, - *, - deleted_at: Optional[datetime.datetime] = None, - description: Optional[str] = None, - section_order: Optional[Sequence[int]] = None, - title: Optional[str] = None - ): + def __init__(self, *, + deleted_at: Optional[datetime.datetime] = None, + description: Optional[str] = None, + section_order: Optional[Sequence[int]] = None, + title: Optional[str] = None): self.deleted_at = deleted_at self.description = description self.section_order = section_order @@ -10804,25 +10058,24 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteHomepageItem(model.Model): """ - Dynamic writeable type for HomepageItem removes: - can, content_created_by, content_favorite_id, content_metadata_id, content_updated_at, custom_image_url, description, favorite_count, id, image_url, location, section_fetch_time, title, url, view_count - - Attributes: - custom_description: Custom description entered by the user, if present - custom_image_data_base64: (Write-Only) base64 encoded image data - 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 - homepage_section_id: Associated Homepage 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_image: Whether the custom image should be used instead of the content image, 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 - """ + Dynamic writeable type for HomepageItem removes: +can, content_created_by, content_favorite_id, content_metadata_id, content_updated_at, custom_image_url, description, favorite_count, id, image_url, location, section_fetch_time, title, url, view_count + Attributes: + custom_description: Custom description entered by the user, if present + custom_image_data_base64: (Write-Only) base64 encoded image data + 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 + homepage_section_id: Associated Homepage 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_image: Whether the custom image should be used instead of the content image, 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_description: Optional[str] = None custom_image_data_base64: Optional[str] = None custom_title: Optional[str] = None @@ -10837,23 +10090,20 @@ class WriteHomepageItem(model.Model): use_custom_title: Optional[bool] = None use_custom_url: Optional[bool] = None - def __init__( - self, - *, - custom_description: Optional[str] = None, - custom_image_data_base64: Optional[str] = None, - custom_title: Optional[str] = None, - custom_url: Optional[str] = None, - dashboard_id: Optional[int] = None, - homepage_section_id: Optional[int] = None, - look_id: Optional[int] = None, - lookml_dashboard_id: Optional[str] = None, - order: Optional[int] = 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 - ): + def __init__(self, *, + custom_description: Optional[str] = None, + custom_image_data_base64: Optional[str] = None, + custom_title: Optional[str] = None, + custom_url: Optional[str] = None, + dashboard_id: Optional[int] = None, + homepage_section_id: Optional[int] = None, + look_id: Optional[int] = None, + lookml_dashboard_id: Optional[str] = None, + order: Optional[int] = 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): self.custom_description = custom_description self.custom_image_data_base64 = custom_image_data_base64 self.custom_title = custom_title @@ -10872,32 +10122,28 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteHomepageSection(model.Model): """ - Dynamic writeable type for HomepageSection removes: - can, created_at, detail_url, homepage_items, id, is_header, updated_at, visible_item_order + Dynamic writeable type for HomepageSection removes: +can, created_at, detail_url, homepage_items, id, is_header, updated_at, visible_item_order - Attributes: - deleted_at: Time at which this section was deleted. - homepage_id: Id reference to parent homepage - item_order: ids of the homepage items in the order they should be displayed - title: Name of row - description: Description of the content found in this section. + Attributes: + deleted_at: Time at which this section was deleted. + homepage_id: Id reference to parent homepage + item_order: ids of the homepage items in the order they should be displayed + title: Name of row + description: Description of the content found in this section. """ - deleted_at: Optional[datetime.datetime] = None homepage_id: Optional[int] = None item_order: Optional[Sequence[int]] = None title: Optional[str] = None description: Optional[str] = None - def __init__( - self, - *, - deleted_at: Optional[datetime.datetime] = None, - homepage_id: Optional[int] = None, - item_order: Optional[Sequence[int]] = None, - title: Optional[str] = None, - description: Optional[str] = None - ): + def __init__(self, *, + deleted_at: Optional[datetime.datetime] = None, + homepage_id: Optional[int] = None, + item_order: Optional[Sequence[int]] = None, + title: Optional[str] = None, + description: Optional[str] = None): self.deleted_at = deleted_at self.homepage_id = homepage_id self.item_order = item_order @@ -10908,26 +10154,22 @@ def __init__( @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[int]] = None - def __init__( - self, - *, - enabled: Optional[bool] = None, - params: Optional[Sequence["IntegrationParam"]] = None, - installed_delegate_oauth_targets: Optional[Sequence[int]] = None - ): + def __init__(self, *, + enabled: Optional[bool] = None, + params: Optional[Sequence["IntegrationParam"]] = None, + installed_delegate_oauth_targets: Optional[Sequence[int]] = None): self.enabled = enabled self.params = params self.installed_delegate_oauth_targets = installed_delegate_oauth_targets @@ -10936,20 +10178,19 @@ def __init__( @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 @@ -10957,39 +10198,35 @@ def __init__( @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 @@ -10997,46 +10234,45 @@ def __init__( @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 @@ -11072,44 +10308,41 @@ 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[int]] = None, - default_new_user_role_ids: Optional[Sequence[int]] = 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[int]] = None, + default_new_user_role_ids: Optional[Sequence[int]] = 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 @@ -11149,45 +10382,41 @@ def __init__( @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 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 @@ -11197,27 +10426,26 @@ def __init__( @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, view_count, user, url - - Attributes: - title: Look Title - 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 - user_id: User Id - space_id: Space Id - space: Dynamic writeable type for SpaceBase 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 - 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, view_count, user, url + Attributes: + title: Look Title + 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 + user_id: User Id + space_id: Space Id + space: Dynamic writeable type for SpaceBase 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 + query: Dynamic writeable type for Query removes: +can, id, slug, share_url, expanded_share_url, url, has_table_calculations + """ title: Optional[str] = None deleted: Optional[bool] = None description: Optional[str] = None @@ -11231,22 +10459,19 @@ class WriteLookWithQuery(model.Model): space: Optional["WriteSpaceBase"] = None query: Optional["WriteQuery"] = None - def __init__( - self, - *, - title: Optional[str] = None, - deleted: Optional[bool] = None, - description: Optional[str] = None, - is_run_on_load: Optional[bool] = None, - public: Optional[bool] = None, - query_id: Optional[int] = None, - folder: Optional["WriteFolderBase"] = None, - folder_id: Optional[str] = None, - user_id: Optional[int] = None, - space_id: Optional[str] = None, - space: Optional["WriteSpaceBase"] = None, - query: Optional["WriteQuery"] = None - ): + def __init__(self, *, + title: Optional[str] = None, + deleted: Optional[bool] = None, + description: Optional[str] = None, + is_run_on_load: Optional[bool] = None, + public: Optional[bool] = None, + query_id: Optional[int] = None, + folder: Optional["WriteFolderBase"] = None, + folder_id: Optional[str] = None, + user_id: Optional[int] = None, + space_id: Optional[str] = None, + space: Optional["WriteSpaceBase"] = None, + query: Optional["WriteQuery"] = None): self.title = title self.deleted = deleted self.description = description @@ -11264,19 +10489,18 @@ def __init__( @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 - 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 + vis_config: Visualization Config """ - column_limit: Optional[str] = None dynamic_fields: Optional[str] = None pivots: Optional[Sequence[str]] = None @@ -11285,17 +10509,14 @@ class WriteMergeQuery(model.Model): total: Optional[bool] = 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, - 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, + vis_config: Optional[MutableMapping[str, Any]] = None): self.column_limit = column_limit self.dynamic_fields = dynamic_fields self.pivots = pivots @@ -11308,20 +10529,19 @@ def __init__( @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 @@ -11329,36 +10549,35 @@ def __init__( @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 @@ -11384,34 +10603,31 @@ 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[int]] = None, - default_new_user_role_ids: Optional[Sequence[int]] = 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[int]] = None, + default_new_user_role_ids: Optional[Sequence[int]] = 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 @@ -11441,29 +10657,25 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WritePasswordConfig(model.Model): """ - Dynamic writeable type for PasswordConfig removes: - can + Dynamic writeable type for PasswordConfig removes: +can - 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 + 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 """ - min_length: Optional[int] = None require_numeric: Optional[bool] = None require_upperlower: Optional[bool] = None require_special: Optional[bool] = None - def __init__( - self, - *, - min_length: Optional[int] = None, - require_numeric: Optional[bool] = None, - require_upperlower: Optional[bool] = None, - require_special: Optional[bool] = None - ): + def __init__(self, *, + min_length: Optional[int] = None, + require_numeric: Optional[bool] = None, + require_upperlower: Optional[bool] = None, + require_special: Optional[bool] = None): self.min_length = min_length self.require_numeric = require_numeric self.require_upperlower = require_upperlower @@ -11473,20 +10685,19 @@ def __init__( @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 @@ -11494,29 +10705,28 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteProject(model.Model): """ - Dynamic writeable type for Project removes: - can, id, uses_git, is_example - - 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). - """ + Dynamic writeable type for Project removes: +can, id, uses_git, is_example + 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). + """ name: Optional[str] = None git_remote_url: Optional[str] = None git_username: Optional[str] = None @@ -11535,27 +10745,24 @@ class WriteProject(model.Model): git_release_mgmt_enabled: Optional[bool] = None allow_warnings: Optional[bool] = 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 - ): + 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): self.name = name self.git_remote_url = git_remote_url self.git_username = git_username @@ -11578,32 +10785,31 @@ def __init__( @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 - 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: Limit - 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 - runtime: (DEPRECATED) Runtime (Deprecated) - """ + 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 + 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: Limit + 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 + runtime: (DEPRECATED) Runtime (Deprecated) + """ model: str view: str fields: Optional[Sequence[str]] = None @@ -11625,30 +10831,27 @@ class WriteQuery(model.Model): query_timezone: Optional[str] = None runtime: Optional[float] = 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, - runtime: Optional[float] = 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, + runtime: Optional[float] = None): self.model = model self.view = view self.fields = fields @@ -11674,26 +10877,22 @@ def __init__( @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 @@ -11702,51 +10901,47 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteResultMakerWithIdVisConfigAndDynamicFields(model.Model): """ - Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: - id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config + Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: +id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config - Attributes: - query: Dynamic writeable type for Query removes: - can, id, slug, share_url, expanded_share_url, url, has_table_calculations + Attributes: + query: Dynamic writeable type for Query removes: +can, id, slug, share_url, expanded_share_url, url, has_table_calculations """ - query: Optional["WriteQuery"] = None - def __init__(self, *, query: Optional["WriteQuery"] = None): + def __init__(self, *, + query: Optional["WriteQuery"] = None): self.query = query @attr.s(auto_attribs=True, init=False) class WriteRole(model.Model): """ - Dynamic writeable type for Role removes: - can, id, url, users_url + Dynamic writeable type for Role removes: +can, id, 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[int] = None model_set: Optional["WriteModelSet"] = None model_set_id: Optional[int] = None - def __init__( - self, - *, - name: Optional[str] = None, - permission_set: Optional["WritePermissionSet"] = None, - permission_set_id: Optional[int] = None, - model_set: Optional["WriteModelSet"] = None, - model_set_id: Optional[int] = None - ): + def __init__(self, *, + name: Optional[str] = None, + permission_set: Optional["WritePermissionSet"] = None, + permission_set_id: Optional[int] = None, + model_set: Optional["WriteModelSet"] = None, + model_set_id: Optional[int] = None): self.name = name self.permission_set = permission_set self.permission_set_id = permission_set_id @@ -11757,36 +10952,35 @@ def __init__( @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_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_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_url: Optional[str] = None @@ -11812,34 +11006,31 @@ 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_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[int]] = None, - default_new_user_group_ids: Optional[Sequence[int]] = 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_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[int]] = None, + default_new_user_group_ids: Optional[Sequence[int]] = 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_url = idp_url @@ -11869,42 +11060,41 @@ def __init__( @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) - query_id: Query id - 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 - inline_table_width: The pixel width at which we render the inline table visualizations - """ + 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) + query_id: Query id + 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 + inline_table_width: The pixel width at which we render the inline table visualizations + """ name: Optional[str] = None user_id: Optional[int] = None run_as_recipient: Optional[bool] = None @@ -11936,42 +11126,37 @@ class WriteScheduledPlan(model.Model): long_tables: Optional[bool] = None inline_table_width: Optional[int] = None - def __init__( - self, - *, - name: Optional[str] = None, - user_id: Optional[int] = None, - run_as_recipient: Optional[bool] = None, - enabled: Optional[bool] = None, - look_id: Optional[int] = None, - dashboard_id: Optional[int] = 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, - query_id: 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, - inline_table_width: Optional[int] = None - ): + def __init__(self, *, + name: Optional[str] = None, + user_id: Optional[int] = None, + run_as_recipient: Optional[bool] = None, + enabled: Optional[bool] = None, + look_id: Optional[int] = None, + dashboard_id: Optional[int] = 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, + query_id: 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, + inline_table_width: Optional[int] = None): self.name = name self.user_id = user_id self.run_as_recipient = run_as_recipient @@ -12007,32 +11192,28 @@ def __init__( @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 @@ -12043,18 +11224,19 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteSpaceBase(model.Model): """ - Dynamic writeable type for SpaceBase 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 SpaceBase 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 @@ -12062,29 +11244,25 @@ def __init__(self, *, name: str, parent_id: Optional[str] = None): @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 @@ -12094,22 +11272,21 @@ def __init__( @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, display_name, email, embed_group_space_id, group_ids, id, looker_versions, personal_space_id, 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, 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, display_name, email, embed_group_space_id, group_ids, id, looker_versions, personal_space_id, 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, 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, type, url, user_url - first_name: First name - home_space_id: ID string for user's home space - 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. + 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, type, url, user_url + first_name: First name + home_space_id: ID string for user's home space + 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. """ - credentials_email: Optional["WriteCredentialsEmail"] = None first_name: Optional[str] = None home_space_id: Optional[str] = None @@ -12120,19 +11297,16 @@ class WriteUser(model.Model): models_dir_validated: Optional[bool] = None ui_state: Optional[MutableMapping[str, Any]] = None - def __init__( - self, - *, - credentials_email: Optional["WriteCredentialsEmail"] = None, - first_name: Optional[str] = None, - home_space_id: 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 - ): + def __init__(self, *, + credentials_email: Optional["WriteCredentialsEmail"] = None, + first_name: Optional[str] = None, + home_space_id: 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): self.credentials_email = credentials_email self.first_name = first_name self.home_space_id = home_space_id @@ -12147,20 +11321,19 @@ def __init__( @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") - 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. + Attributes: + name: Name of user attribute + label: Human-friendly label for user attribute + type: Type of user attribute ("string", "number", "datetime", "yesno", "zipcode") + 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. """ - name: Optional[str] = None label: Optional[str] = None type: Optional[str] = None @@ -12170,18 +11343,15 @@ class WriteUserAttribute(model.Model): user_can_edit: Optional[bool] = None hidden_value_domain_whitelist: Optional[str] = None - def __init__( - self, - *, - name: Optional[str] = None, - label: Optional[str] = None, - type: Optional[str] = None, - 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 - ): + def __init__(self, *, + name: Optional[str] = None, + label: Optional[str] = None, + type: Optional[str] = None, + 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): self.name = name self.label = label self.type = type @@ -12195,41 +11365,40 @@ def __init__( @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 @@ -12244,23 +11413,20 @@ 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 @@ -12275,7 +11441,6 @@ def __init__( self.alerts_links = alerts_links self.folders_mentions = folders_mentions - import functools # noqa:E402 forward_ref_structure_hook = functools.partial( @@ -12284,14 +11449,12 @@ def __init__( sr.converter31.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.converter31 -) +translate_keys_structure_hook = functools.partial(sr.translate_keys_structure_hook, sr.converter31) sr.converter31.register_structure_hook( LookmlModelExploreJoins, # type: ignore - translate_keys_structure_hook, # type:ignore + translate_keys_structure_hook # type:ignore ) sr.converter31.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/api40/methods.py b/python/looker_sdk/sdk/api40/methods.py index 194f3f03f..65b0f9a01 100644 --- a/python/looker_sdk/sdk/api40/methods.py +++ b/python/looker_sdk/sdk/api40/methods.py @@ -33,9 +33,9 @@ from looker_sdk.rtl import api_methods from looker_sdk.rtl import transport - class Looker40SDK(api_methods.APIMethods): - # region Alert: Alert + + #region Alert: Alert # Follow an alert. # @@ -53,8 +53,8 @@ def follow_alert( self.post( path=f"/alerts/{alert_id}/follow", structure=None, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -74,8 +74,8 @@ def unfollow_alert( self.delete( path=f"/alerts/{alert_id}/follow", structure=None, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -112,20 +112,9 @@ 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 @@ -145,8 +134,8 @@ def get_alert( self.get( path=f"/alerts/{alert_id}", structure=mdls.Alert, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -170,8 +159,8 @@ def update_alert( path=f"/alerts/{alert_id}", structure=mdls.Alert, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -195,8 +184,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 @@ -216,8 +205,8 @@ def delete_alert( self.delete( path=f"/alerts/{alert_id}", structure=None, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -270,8 +259,8 @@ def create_alert( path="/alerts", structure=mdls.Alert, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -294,8 +283,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 @@ -318,8 +307,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 @@ -340,14 +329,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 # @@ -394,8 +383,8 @@ def login( path="/login", structure=mdls.AccessToken, query_params={"client_id": client_id, "client_secret": client_secret}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -429,17 +418,15 @@ 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, query_params={"associative": associative}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -454,14 +441,16 @@ 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. # @@ -481,8 +470,8 @@ def artifact_usage( path="/artifact/usage", structure=mdls.ArtifactUsage, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -508,8 +497,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 @@ -536,8 +525,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 @@ -559,8 +548,8 @@ def purge_artifacts( self.delete( path=f"/artifact/{namespace}/purge", structure=None, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -610,17 +599,9 @@ 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, - }, - 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}, + transport_options=transport_options + ) ) return response @@ -652,14 +633,9 @@ def artifact( self.get( path=f"/artifact/{namespace}", structure=Sequence[mdls.Artifact], - query_params={ - "key": key, - "fields": fields, - "limit": limit, - "offset": offset, - }, - transport_options=transport_options, - ), + query_params={"key": key, "fields": fields, "limit": limit, "offset": offset}, + transport_options=transport_options + ) ) return response @@ -686,8 +662,8 @@ def delete_artifact( path=f"/artifact/{namespace}", structure=None, query_params={"key": key}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -737,14 +713,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. # @@ -765,8 +741,8 @@ def create_embed_secret( path="/embed_config/secrets", structure=mdls.EmbedSecret, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -788,8 +764,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 @@ -848,8 +824,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 @@ -895,8 +871,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 @@ -946,8 +922,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 @@ -973,8 +949,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 @@ -1001,8 +977,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 @@ -1036,8 +1012,8 @@ def ldap_config( self.get( path="/ldap_config", structure=mdls.LDAPConfig, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1068,8 +1044,8 @@ def update_ldap_config( path="/ldap_config", structure=mdls.LDAPConfig, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1107,8 +1083,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 @@ -1148,8 +1124,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 @@ -1178,8 +1154,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 @@ -1208,8 +1184,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 @@ -1229,8 +1205,8 @@ def register_mobile_device( path="/mobile/device", structure=mdls.MobileToken, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1250,8 +1226,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 @@ -1271,8 +1247,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 @@ -1298,8 +1274,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 @@ -1324,8 +1300,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 @@ -1355,8 +1331,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 @@ -1383,8 +1359,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 @@ -1412,8 +1388,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 @@ -1436,8 +1412,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 @@ -1469,8 +1445,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 @@ -1505,8 +1481,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 @@ -1536,8 +1512,8 @@ def oidc_config( self.get( path="/oidc_config", structure=mdls.OIDCConfig, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1566,8 +1542,8 @@ def update_oidc_config( path="/oidc_config", structure=mdls.OIDCConfig, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1589,8 +1565,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 @@ -1612,8 +1588,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 @@ -1634,8 +1610,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 @@ -1654,8 +1630,8 @@ def password_config( self.get( path="/password_config", structure=mdls.PasswordConfig, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1676,8 +1652,8 @@ def update_password_config( path="/password_config", structure=mdls.PasswordConfig, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1696,8 +1672,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 @@ -1727,8 +1703,8 @@ def saml_config( self.get( path="/saml_config", structure=mdls.SamlConfig, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1757,8 +1733,8 @@ def update_saml_config( path="/saml_config", structure=mdls.SamlConfig, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1780,8 +1756,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 @@ -1803,8 +1779,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 @@ -1825,8 +1801,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 @@ -1847,8 +1823,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 @@ -1871,8 +1847,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 @@ -1889,8 +1865,8 @@ def session_config( self.get( path="/session_config", structure=mdls.SessionConfig, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1909,8 +1885,8 @@ def update_session_config( path="/session_config", structure=mdls.SessionConfig, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -1934,8 +1910,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 @@ -1958,8 +1934,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 @@ -1983,8 +1959,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 @@ -2007,8 +1983,8 @@ def enable_support_access( path="/support_access/enable", structure=mdls.SupportAccessStatus, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2029,8 +2005,8 @@ def disable_support_access( self.put( path="/support_access/disable", structure=mdls.SupportAccessStatus, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2051,8 +2027,8 @@ def support_access_status( self.get( path="/support_access/status", structure=mdls.SupportAccessStatus, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2072,8 +2048,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 @@ -2112,21 +2088,9 @@ 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 @@ -2146,14 +2110,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. # @@ -2171,8 +2135,8 @@ def all_boards( path="/boards", structure=Sequence[mdls.Board], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2194,8 +2158,8 @@ def create_board( structure=mdls.Board, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2261,24 +2225,9 @@ 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 @@ -2301,8 +2250,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 @@ -2327,8 +2276,8 @@ def update_board( structure=mdls.Board, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2348,8 +2297,8 @@ def delete_board( self.delete( path=f"/boards/{board_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2372,13 +2321,9 @@ 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 @@ -2400,8 +2345,8 @@ def create_board_item( structure=mdls.BoardItem, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2424,8 +2369,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 @@ -2450,8 +2395,8 @@ def update_board_item( structure=mdls.BoardItem, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2471,8 +2416,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 @@ -2494,8 +2439,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 @@ -2517,8 +2462,8 @@ def create_board_section( structure=mdls.BoardSection, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2541,8 +2486,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 @@ -2567,8 +2512,8 @@ def update_board_section( structure=mdls.BoardSection, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2588,14 +2533,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) @@ -2620,8 +2565,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 @@ -2648,8 +2593,8 @@ def create_color_collection( path="/color_collections", structure=mdls.ColorCollection, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2674,8 +2619,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 @@ -2700,8 +2645,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 @@ -2722,8 +2667,8 @@ def default_color_collection( self.get( path="/color_collections/default", structure=mdls.ColorCollection, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2746,8 +2691,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 @@ -2779,8 +2724,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 @@ -2803,8 +2748,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 @@ -2831,14 +2776,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. # @@ -2853,8 +2798,8 @@ def cloud_storage_configuration( self.get( path="/cloud_storage", structure=mdls.BackupConfiguration, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2873,8 +2818,8 @@ def update_cloud_storage_configuration( path="/cloud_storage", structure=mdls.BackupConfiguration, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2891,8 +2836,8 @@ def custom_welcome_email( self.get( path="/custom_welcome_email", structure=mdls.CustomWelcomeEmail, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2914,8 +2859,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 @@ -2927,15 +2872,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 @@ -2952,8 +2897,8 @@ def digest_emails_enabled( self.get( path="/digest_emails_enabled", structure=mdls.DigestEmails, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -2972,8 +2917,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 @@ -2992,8 +2937,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 @@ -3014,8 +2959,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 @@ -3032,8 +2977,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 @@ -3052,8 +2997,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 @@ -3070,8 +3015,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 @@ -3090,8 +3035,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 @@ -3110,8 +3055,8 @@ def all_legacy_features( self.get( path="/legacy_features", structure=Sequence[mdls.LegacyFeature], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3133,8 +3078,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 @@ -3158,8 +3103,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 @@ -3176,8 +3121,8 @@ def all_locales( self.get( path="/locales", structure=Sequence[mdls.Locale], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3194,8 +3139,8 @@ def mobile_settings( self.get( path="/mobile/settings", structure=mdls.MobileSettings, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3235,8 +3180,8 @@ def get_setting( path="/setting", structure=mdls.Setting, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3282,8 +3227,8 @@ def set_setting( structure=mdls.Setting, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3304,8 +3249,8 @@ def set_smtp_settings( path="/smtp_settings", structure=None, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3325,8 +3270,8 @@ def smtp_status( path="/smtp_status", structure=mdls.SmtpStatus, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3343,8 +3288,8 @@ def all_timezones( self.get( path="/timezones", structure=Sequence[mdls.Timezone], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3364,8 +3309,8 @@ def versions( path="/versions", structure=mdls.ApiVersion, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3390,8 +3335,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 @@ -3412,8 +3357,8 @@ def whitelabel_configuration( path="/whitelabel_configuration", structure=mdls.WhitelabelConfiguration, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3432,14 +3377,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. # @@ -3457,8 +3402,8 @@ def all_connections( path="/connections", structure=Sequence[mdls.DBConnection], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3477,8 +3422,8 @@ def create_connection( path="/connections", structure=mdls.DBConnection, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3501,8 +3446,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 @@ -3524,8 +3469,8 @@ def update_connection( path=f"/connections/{connection_name}", structure=mdls.DBConnection, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3545,8 +3490,8 @@ def delete_connection( self.delete( path=f"/connections/{connection_name}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3569,8 +3514,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 @@ -3600,8 +3545,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 @@ -3630,8 +3575,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 @@ -3651,8 +3596,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 @@ -3676,8 +3621,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 @@ -3698,8 +3643,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 @@ -3718,8 +3663,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 @@ -3739,8 +3684,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 @@ -3759,8 +3704,8 @@ def create_ssh_server( path="/ssh_servers", structure=mdls.SshServer, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3780,8 +3725,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 @@ -3803,8 +3748,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 @@ -3824,8 +3769,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 @@ -3845,8 +3790,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 @@ -3866,8 +3811,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 @@ -3886,8 +3831,8 @@ def create_ssh_tunnel( path="/ssh_tunnels", structure=mdls.SshTunnel, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -3907,8 +3852,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 @@ -3930,8 +3875,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 @@ -3951,8 +3896,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 @@ -3972,8 +3917,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 @@ -3992,14 +3937,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 # @@ -4057,21 +4002,9 @@ 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, - "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, "limit": limit, "offset": offset, "sorts": sorts, "fields": fields, "filter_or": filter_or}, + transport_options=transport_options + ) ) return response @@ -4094,8 +4027,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 @@ -4115,8 +4048,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 @@ -4135,8 +4068,8 @@ def create_content_favorite( path="/content_favorite", structure=mdls.ContentFavorite, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4158,8 +4091,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 @@ -4182,8 +4115,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 @@ -4205,8 +4138,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 @@ -4227,12 +4160,9 @@ 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 @@ -4253,12 +4183,10 @@ 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 @@ -4281,8 +4209,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 @@ -4302,8 +4230,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 @@ -4343,16 +4271,9 @@ 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 @@ -4388,15 +4309,9 @@ 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 @@ -4419,8 +4334,8 @@ def content_validation( path="/content_validation", structure=mdls.ContentValidation, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4484,23 +4399,9 @@ 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 @@ -4531,14 +4432,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 Dashboard: Manage Dashboards + #region Dashboard: Manage Dashboards # ### Get information about all active dashboards. # @@ -4562,8 +4463,8 @@ def all_dashboards( path="/dashboards", structure=Sequence[mdls.DashboardBase], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4595,8 +4496,8 @@ def create_dashboard( path="/dashboards", structure=mdls.Dashboard, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4682,30 +4583,9 @@ 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 @@ -4744,8 +4624,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 @@ -4778,8 +4658,8 @@ def sync_lookml_dashboard( structure=Sequence[int], query_params={"raw_locale": raw_locale}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4808,8 +4688,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 @@ -4840,8 +4720,8 @@ def update_dashboard( path=f"/dashboards/{dashboard_id}", structure=mdls.Dashboard, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4867,8 +4747,8 @@ def delete_dashboard( self.delete( path=f"/dashboards/{dashboard_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4890,8 +4770,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 @@ -4913,8 +4793,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 @@ -4942,8 +4822,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 @@ -4976,8 +4856,8 @@ def import_dashboard_from_lookml( path="/dashboards/lookml", structure=mdls.Dashboard, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -4996,8 +4876,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 @@ -5028,8 +4908,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 @@ -5083,17 +4963,9 @@ 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 @@ -5116,8 +4988,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 @@ -5142,8 +5014,8 @@ def update_dashboard_element( structure=mdls.DashboardElement, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5163,8 +5035,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 @@ -5187,8 +5059,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 @@ -5212,8 +5084,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 @@ -5236,8 +5108,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 @@ -5262,8 +5134,8 @@ def update_dashboard_filter( structure=mdls.DashboardFilter, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5283,8 +5155,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 @@ -5307,8 +5179,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 @@ -5330,8 +5202,8 @@ def create_dashboard_filter( structure=mdls.DashboardFilter, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5347,17 +5219,15 @@ 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 @@ -5374,9 +5244,7 @@ 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( @@ -5384,8 +5252,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 @@ -5408,8 +5276,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 @@ -5432,8 +5300,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 @@ -5458,8 +5326,8 @@ def update_dashboard_layout( structure=mdls.DashboardLayout, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5479,8 +5347,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 @@ -5503,8 +5371,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 @@ -5526,14 +5394,14 @@ def create_dashboard_layout( structure=mdls.DashboardLayout, query_params={"fields": fields}, 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. # @@ -5550,8 +5418,8 @@ def perform_data_action( path="/data_actions", structure=mdls.DataActionResponse, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5570,14 +5438,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. # @@ -5592,8 +5460,8 @@ def all_datagroups( self.get( path="/datagroups", structure=Sequence[mdls.Datagroup], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5613,8 +5481,8 @@ def datagroup( self.get( path=f"/datagroups/{datagroup_id}", structure=mdls.Datagroup, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5636,14 +5504,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 # @@ -5666,8 +5534,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 @@ -5692,8 +5560,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 @@ -5724,14 +5592,9 @@ 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 @@ -5751,8 +5614,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 @@ -5775,14 +5638,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 # @@ -5823,23 +5686,9 @@ 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 @@ -5862,8 +5711,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 @@ -5885,8 +5734,8 @@ def update_folder( path=f"/folders/{folder_id}", structure=mdls.Folder, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5907,8 +5756,8 @@ def delete_folder( self.delete( path=f"/folders/{folder_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5933,8 +5782,8 @@ def all_folders( path="/folders", structure=Sequence[mdls.Folder], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5956,8 +5805,8 @@ def create_folder( path="/folders", structure=mdls.Folder, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -5989,16 +5838,9 @@ 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 @@ -6025,8 +5867,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 @@ -6049,8 +5891,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 @@ -6073,8 +5915,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 @@ -6099,8 +5941,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 @@ -6123,14 +5965,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. # @@ -6163,19 +6005,9 @@ 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 @@ -6197,8 +6029,8 @@ def create_group( structure=mdls.Group, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -6258,20 +6090,9 @@ 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 @@ -6331,20 +6152,9 @@ 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 @@ -6405,20 +6215,9 @@ 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 @@ -6441,8 +6240,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 @@ -6467,8 +6266,8 @@ def update_group( structure=mdls.Group, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -6488,8 +6287,8 @@ def delete_group( self.delete( path=f"/groups/{group_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -6512,8 +6311,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 @@ -6536,8 +6335,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 @@ -6569,16 +6368,9 @@ 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 @@ -6601,8 +6393,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 @@ -6625,8 +6417,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 @@ -6649,8 +6441,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 @@ -6678,8 +6470,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 @@ -6702,14 +6494,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. # @@ -6727,14 +6519,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. # @@ -6752,8 +6544,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 @@ -6777,8 +6569,8 @@ def create_integration_hub( structure=mdls.IntegrationHub, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -6801,8 +6593,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 @@ -6829,8 +6621,8 @@ def update_integration_hub( structure=mdls.IntegrationHub, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -6850,8 +6642,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 @@ -6871,8 +6663,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 @@ -6893,12 +6685,9 @@ 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 @@ -6921,8 +6710,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 @@ -6947,8 +6736,8 @@ def update_integration( structure=mdls.Integration, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -6970,8 +6759,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 @@ -6991,14 +6780,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 JdbcInterface: LookML Model metadata for JDBC Clients + #region JdbcInterface: LookML Model metadata for JDBC Clients # ### Handle Avatica RPC Requests # @@ -7016,14 +6805,14 @@ def jdbc_interface( path="/__jdbc_interface__", structure=mdls.JdbcInterface, query_params={"avatica_request": avatica_request}, - 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 # @@ -7047,8 +6836,8 @@ def all_looks( path="/looks", structure=Sequence[mdls.Look], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7076,8 +6865,8 @@ def create_look( structure=mdls.LookWithQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7156,28 +6945,9 @@ 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 @@ -7202,8 +6972,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 @@ -7247,8 +7017,8 @@ def update_look( structure=mdls.LookWithQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7274,8 +7044,8 @@ def delete_look( self.delete( path=f"/looks/{look_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7339,22 +7109,9 @@ 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 @@ -7383,8 +7140,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 @@ -7412,14 +7169,14 @@ 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 - # endregion + #endregion - # region LookmlModel: Manage LookML Models + #region LookmlModel: Manage LookML Models # ### Get information about all lookml models. # @@ -7441,8 +7198,8 @@ def all_lookml_models( path="/lookml_models", structure=Sequence[mdls.LookmlModel], query_params={"fields": fields, "limit": limit, "offset": offset}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7461,8 +7218,8 @@ def create_lookml_model( path="/lookml_models", structure=mdls.LookmlModel, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7485,8 +7242,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 @@ -7508,8 +7265,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 @@ -7529,8 +7286,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 @@ -7556,14 +7313,14 @@ def lookml_model_explore( path=f"/lookml_models/{lookml_model_name}/explores/{explore_name}", structure=mdls.LookmlModelExplore, query_params={"fields": fields}, - transport_options=transport_options, - ), + 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 # @@ -7610,8 +7367,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 @@ -7631,8 +7388,8 @@ def get_model( self.get( path=f"/models/{model_name}", structure=mdls.Model, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -7660,8 +7417,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 @@ -7686,8 +7443,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 @@ -7714,8 +7471,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 @@ -7752,16 +7509,9 @@ 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 @@ -7793,16 +7543,9 @@ 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 @@ -7829,8 +7572,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 @@ -7860,14 +7603,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 # ### Generate Lockfile for All LookML Dependencies # @@ -7894,8 +7637,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 @@ -7917,8 +7660,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 @@ -7940,8 +7683,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 @@ -7971,8 +7714,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 @@ -8001,8 +7744,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 @@ -8027,8 +7770,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 @@ -8053,8 +7796,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 @@ -8087,8 +7830,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 @@ -8119,8 +7862,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 @@ -8142,8 +7885,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 @@ -8165,8 +7908,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 @@ -8188,8 +7931,8 @@ def all_projects( path="/projects", structure=Sequence[mdls.Project], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8214,8 +7957,8 @@ def create_project( path="/projects", structure=mdls.Project, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8240,8 +7983,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 @@ -8287,8 +8030,8 @@ def update_project( structure=mdls.Project, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8310,8 +8053,8 @@ def manifest( self.get( path=f"/projects/{project_id}/manifest", structure=mdls.Manifest, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -8333,8 +8076,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 @@ -8362,8 +8105,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 @@ -8397,8 +8140,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 @@ -8429,8 +8172,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 @@ -8455,8 +8198,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 @@ -8481,8 +8224,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 @@ -8509,8 +8252,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 @@ -8542,8 +8285,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 @@ -8576,12 +8319,9 @@ 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 @@ -8608,8 +8348,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 @@ -8638,8 +8378,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 @@ -8668,14 +8408,10 @@ 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, - ), + transport_options=transport_options + ) ) return response @@ -8705,8 +8441,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 @@ -8734,8 +8470,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 @@ -8757,14 +8493,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 # @@ -8811,24 +8547,10 @@ 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, - "image_width": image_width, - "image_height": image_height, - "fields": fields, - }, - body=body, - transport_options=transport_options, - ), + 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, "image_width": image_width, "image_height": image_height, "fields": fields}, + body=body, + transport_options=transport_options + ) ) return response @@ -8854,8 +8576,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 @@ -8884,8 +8606,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 @@ -8927,8 +8649,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 @@ -8967,8 +8689,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 @@ -9007,8 +8729,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 @@ -9037,8 +8759,8 @@ def create_query( structure=mdls.Query, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9107,23 +8829,9 @@ 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, - "source": source, - }, - 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, "source": source}, + transport_options=transport_options + ) ) return response @@ -9217,23 +8925,10 @@ 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 @@ -9310,8 +9005,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 @@ -9336,8 +9031,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 @@ -9375,8 +9070,8 @@ def create_merge_query( structure=mdls.MergeQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9393,8 +9088,8 @@ def all_running_queries( self.get( path="/running_queries", structure=Sequence[mdls.RunningQueries], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9414,8 +9109,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 @@ -9435,8 +9130,8 @@ def sql_query( self.get( path=f"/sql_queries/{slug}", structure=mdls.SqlQuery, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9457,8 +9152,8 @@ def create_sql_query( path="/sql_queries", structure=mdls.SqlQuery, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9484,14 +9179,14 @@ def run_sql_query( path=f"/sql_queries/{slug}/run/{result_format}", structure=Union[str, bytes], # type: ignore 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. # @@ -9523,8 +9218,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 @@ -9558,8 +9253,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 @@ -9599,17 +9294,10 @@ 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, - }, + query_params={"width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape, "long_tables": long_tables}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9636,8 +9324,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 @@ -9673,8 +9361,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 @@ -9708,14 +9396,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 Role: Manage Roles + #region Role: Manage Roles # ### Search model sets # Returns all model set records that match the given search criteria. @@ -9769,19 +9457,9 @@ 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, - }, - 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}, + transport_options=transport_options + ) ) return response @@ -9804,8 +9482,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 @@ -9827,8 +9505,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 @@ -9848,8 +9526,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 @@ -9869,8 +9547,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 @@ -9889,8 +9567,8 @@ def create_model_set( path="/model_sets", structure=mdls.ModelSet, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9907,8 +9585,8 @@ def all_permissions( self.get( path="/permissions", structure=Sequence[mdls.Permission], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -9964,19 +9642,9 @@ 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, - }, - 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}, + transport_options=transport_options + ) ) return response @@ -9999,8 +9667,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 @@ -10022,8 +9690,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 @@ -10043,8 +9711,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 @@ -10064,8 +9732,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 @@ -10084,8 +9752,8 @@ def create_permission_set( path="/permission_sets", structure=mdls.PermissionSet, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -10107,8 +9775,8 @@ def all_roles( path="/roles", structure=Sequence[mdls.Role], query_params={"fields": fields, "ids": ids}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -10127,8 +9795,8 @@ def create_role( path="/roles", structure=mdls.Role, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -10184,18 +9852,9 @@ def search_roles( self.get( path="/roles/search", structure=Sequence[mdls.Role], - 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 @@ -10252,18 +9911,9 @@ 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 @@ -10283,8 +9933,8 @@ def role( self.get( path=f"/roles/{role_id}", structure=mdls.Role, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -10306,8 +9956,8 @@ def update_role( path=f"/roles/{role_id}", structure=mdls.Role, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -10327,8 +9977,8 @@ def delete_role( self.delete( path=f"/roles/{role_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -10351,8 +10001,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 @@ -10376,8 +10026,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 @@ -10401,12 +10051,9 @@ 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 @@ -10428,14 +10075,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 # @@ -10458,8 +10105,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 @@ -10484,8 +10131,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 @@ -10548,8 +10195,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 @@ -10573,8 +10220,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 @@ -10607,13 +10254,9 @@ 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 @@ -10689,8 +10332,8 @@ def create_scheduled_plan( path="/scheduled_plans", structure=mdls.ScheduledPlan, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -10745,8 +10388,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 @@ -10782,13 +10425,9 @@ 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 @@ -10824,13 +10463,9 @@ 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 @@ -10866,13 +10501,9 @@ 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 @@ -10940,14 +10571,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 Session: Session Information + #region Session: Session Information # ### Get API Session # @@ -10964,8 +10595,8 @@ def session( self.get( path="/session", structure=mdls.ApiSession, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -11003,14 +10634,14 @@ def update_session( path="/session", structure=mdls.ApiSession, 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 # @@ -11034,8 +10665,8 @@ def all_themes( path="/themes", structure=Sequence[mdls.Theme], query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -11068,8 +10699,8 @@ def create_theme( path="/themes", structure=mdls.Theme, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -11141,19 +10772,9 @@ 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, - }, - 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}, + transport_options=transport_options + ) ) return response @@ -11179,8 +10800,8 @@ def default_theme( path="/themes/default", structure=mdls.Theme, query_params={"ts": ts}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -11210,8 +10831,8 @@ def set_default_theme( path="/themes/default", structure=mdls.Theme, query_params={"name": name}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -11243,8 +10864,8 @@ def active_themes( path="/themes/active", structure=Sequence[mdls.Theme], query_params={"name": name, "ts": ts, "fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -11271,8 +10892,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 @@ -11297,8 +10918,8 @@ def validate_theme( path="/themes/validate", structure=mdls.ValidationError, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -11325,8 +10946,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 @@ -11350,8 +10971,8 @@ def update_theme( path=f"/themes/{theme_id}", structure=mdls.Theme, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -11379,14 +11000,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 # @@ -11443,18 +11064,9 @@ 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 @@ -11474,8 +11086,8 @@ def me( path="/user", structure=mdls.User, query_params={"fields": fields}, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -11506,17 +11118,9 @@ 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 @@ -11538,8 +11142,8 @@ def create_user( structure=mdls.User, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -11617,26 +11221,9 @@ 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, - "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, - }, - 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, "embed_user": embed_user, "email": email, "is_disabled": is_disabled, "filter_or": filter_or, "content_metadata_id": content_metadata_id, "group_id": group_id}, + transport_options=transport_options + ) ) return response @@ -11685,22 +11272,9 @@ 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 @@ -11727,8 +11301,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 @@ -11753,8 +11327,8 @@ def update_user( structure=mdls.User, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -11776,8 +11350,8 @@ def delete_user( self.delete( path=f"/users/{user_id}", structure=str, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -11832,8 +11406,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 @@ -11858,8 +11432,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 @@ -11886,8 +11460,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 @@ -11914,8 +11488,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 @@ -11937,8 +11511,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 @@ -11963,8 +11537,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 @@ -11992,8 +11566,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 @@ -12015,8 +11589,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 @@ -12041,8 +11615,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 @@ -12064,8 +11638,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 @@ -12090,8 +11664,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 @@ -12113,8 +11687,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 @@ -12139,8 +11713,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 @@ -12162,8 +11736,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 @@ -12188,8 +11762,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 @@ -12211,8 +11785,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 @@ -12240,8 +11814,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 @@ -12266,8 +11840,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 @@ -12292,8 +11866,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 @@ -12318,8 +11892,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 @@ -12347,8 +11921,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 @@ -12373,8 +11947,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 @@ -12399,8 +11973,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 @@ -12425,8 +11999,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 @@ -12448,8 +12022,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 @@ -12477,8 +12051,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 @@ -12503,8 +12077,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 @@ -12529,8 +12103,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 @@ -12565,8 +12139,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 @@ -12590,12 +12164,9 @@ 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 @@ -12620,8 +12191,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 @@ -12664,14 +12235,9 @@ 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 @@ -12698,8 +12264,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 @@ -12727,8 +12293,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 @@ -12759,8 +12325,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 @@ -12792,8 +12358,8 @@ def wipeout_user_emails( structure=mdls.User, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -12814,14 +12380,14 @@ def create_embed_user( path="/users/embed_user", structure=mdls.UserPublic, 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. # @@ -12841,8 +12407,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 @@ -12873,8 +12439,8 @@ def create_user_attribute( structure=mdls.UserAttribute, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -12897,8 +12463,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 @@ -12923,8 +12489,8 @@ def update_user_attribute( structure=mdls.UserAttribute, query_params={"fields": fields}, body=body, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -12944,8 +12510,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 @@ -12974,8 +12540,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 @@ -13016,14 +12582,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 # @@ -13040,8 +12606,8 @@ def all_workspaces( self.get( path="/workspaces", structure=Sequence[mdls.Workspace], - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response @@ -13089,9 +12655,9 @@ def workspace( self.get( path=f"/workspaces/{workspace_id}", structure=mdls.Workspace, - transport_options=transport_options, - ), + transport_options=transport_options + ) ) return response - # endregion + #endregion \ No newline at end of file diff --git a/python/looker_sdk/sdk/api40/models.py b/python/looker_sdk/sdk/api40/models.py index 26a411473..97f8e7d32 100644 --- a/python/looker_sdk/sdk/api40/models.py +++ b/python/looker_sdk/sdk/api40/models.py @@ -52,20 +52,16 @@ 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 @@ -104,7 +100,6 @@ class Alert(model.Model): owner_display_name: Alert owner's display name time_series_condition_state: """ - comparison_type: "ComparisonType" cron: str destinations: Sequence["AlertDestination"] @@ -159,42 +154,37 @@ 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, - 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, - 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, + 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, + 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 @@ -233,20 +223,16 @@ class AlertAppliedDashboardFilter(model.Model): filter_value: Field Value. [Filter Expressions](https://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 @@ -260,16 +246,12 @@ 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 @@ -283,7 +265,6 @@ 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 @@ -292,17 +273,14 @@ 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 @@ -317,18 +295,14 @@ class AlertField(model.Model): name: Field's name. Has the format `.` Refer to [docs](https://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 @@ -342,14 +316,14 @@ class AlertFieldFilter(model.Model): field_value: Field Value. Depends on the type of field - numeric or string. For [location](https://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://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 @@ -368,7 +342,6 @@ class AlertNotifications(model.Model): ran_at: The time at which the alert query ran alert: """ - notification_id: Optional[str] = None alert_condition_id: Optional[str] = None user_id: Optional[str] = None @@ -378,18 +351,15 @@ class AlertNotifications(model.Model): ran_at: Optional[str] = None alert: Optional["MobilePayload"] = 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 - ): + 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): self.notification_id = notification_id self.alert_condition_id = alert_condition_id self.user_id = user_id @@ -410,22 +380,18 @@ class AlertPatch(model.Model): is_public: Set alert public or private threshold: New threshold value """ - owner_id: Optional[str] = None is_disabled: Optional[bool] = None disabled_reason: Optional[str] = None is_public: Optional[bool] = None threshold: Optional[float] = 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 - ): + 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): self.owner_id = owner_id self.is_disabled = is_disabled self.disabled_reason = disabled_reason @@ -438,7 +404,6 @@ 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" @@ -456,18 +421,14 @@ 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 @@ -483,22 +444,18 @@ 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 @@ -515,20 +472,16 @@ 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 @@ -550,7 +503,6 @@ 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 @@ -562,20 +514,17 @@ 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 @@ -595,11 +544,12 @@ 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 @@ -611,11 +561,12 @@ 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 @@ -632,7 +583,6 @@ 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 @@ -641,17 +591,14 @@ 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 @@ -678,7 +625,6 @@ 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 @@ -692,22 +638,19 @@ 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 @@ -754,7 +697,6 @@ 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 @@ -783,37 +725,34 @@ 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 @@ -859,7 +798,6 @@ 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 @@ -872,21 +810,18 @@ 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 @@ -905,7 +840,6 @@ class Category(enum.Enum): Field category Valid values are: "parameter", "filter", "measure", "dimension". (Enum defined in LookmlModelExploreField) """ - parameter = "parameter" filter = "filter" measure = "measure" @@ -927,22 +861,18 @@ 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 @@ -957,11 +887,12 @@ 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 @@ -975,20 +906,16 @@ 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 @@ -1000,7 +927,6 @@ 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://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" @@ -1037,7 +963,6 @@ 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 @@ -1055,26 +980,23 @@ 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 @@ -1106,7 +1028,6 @@ class ContentFavorite(model.Model): dashboard: board_id: Id of a board """ - id: Optional[str] = None user_id: Optional[str] = None content_metadata_id: Optional[str] = None @@ -1116,18 +1037,15 @@ class ContentFavorite(model.Model): dashboard: Optional["DashboardBase"] = None board_id: Optional[str] = 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 - ): + 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): self.id = id self.user_id = user_id self.content_metadata_id = content_metadata_id @@ -1154,7 +1072,6 @@ 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 @@ -1167,21 +1084,18 @@ 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, - 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, + 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 @@ -1208,7 +1122,6 @@ 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 @@ -1216,16 +1129,13 @@ 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 @@ -1248,7 +1158,6 @@ class ContentSearch(model.Model): view_count: Number of times the content has been viewed preferred_viewer: Preferred way of viewing the content (only applies to dashboards) """ - can: Optional[MutableMapping[str, bool]] = None content_id: Optional[str] = None type: Optional[str] = None @@ -1259,19 +1168,16 @@ class ContentSearch(model.Model): view_count: Optional[int] = None preferred_viewer: 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 - ): + 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): self.can = can self.content_id = content_id self.type = type @@ -1296,7 +1202,6 @@ 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 @@ -1306,18 +1211,15 @@ 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 @@ -1341,7 +1243,6 @@ 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 @@ -1351,18 +1252,15 @@ 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 @@ -1383,22 +1281,18 @@ 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 @@ -1427,7 +1321,6 @@ class ContentValidationDashboardElement(model.Model): rich_content_json: JSON with all the properties required for rich editor and buttons elements extension_id: Extension ID """ - body_text: Optional[str] = None dashboard_id: Optional[str] = None id: Optional[str] = None @@ -1445,26 +1338,23 @@ class ContentValidationDashboardElement(model.Model): rich_content_json: Optional[str] = None extension_id: 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, - 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 - ): + 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, + 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): self.body_text = body_text self.dashboard_id = dashboard_id self.id = id @@ -1497,7 +1387,6 @@ 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 @@ -1508,19 +1397,16 @@ 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 @@ -1542,22 +1428,18 @@ 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 @@ -1572,11 +1454,12 @@ 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 @@ -1590,20 +1473,16 @@ 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 @@ -1618,18 +1497,14 @@ 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 @@ -1642,13 +1517,12 @@ 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 @@ -1661,18 +1535,14 @@ 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 @@ -1693,7 +1563,6 @@ 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 @@ -1705,22 +1574,17 @@ 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 @@ -1750,7 +1614,6 @@ 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 @@ -1764,22 +1627,19 @@ 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 @@ -1803,20 +1663,16 @@ 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 @@ -1832,20 +1688,16 @@ 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 @@ -1860,10 +1712,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 @@ -1880,7 +1732,6 @@ 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 @@ -1890,18 +1741,15 @@ 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, - 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, + client_secret: Optional[str] = None, + url: Optional[str] = None): self.can = can self.id = id self.client_id = client_id @@ -1932,7 +1780,6 @@ 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 @@ -1949,25 +1796,22 @@ 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 @@ -1992,16 +1836,12 @@ class CreateDashboardRenderTask(model.Model): dashboard_filters: Filter values to apply to the dashboard queries, in URL query format dashboard_style: Dashboard layout style: single_column or tiled """ - dashboard_filters: Optional[str] = None dashboard_style: Optional[str] = None - def __init__( - self, - *, - dashboard_filters: Optional[str] = None, - dashboard_style: Optional[str] = None - ): + def __init__(self, *, + dashboard_filters: Optional[str] = None, + dashboard_style: Optional[str] = None): self.dashboard_filters = dashboard_filters self.dashboard_style = dashboard_style @@ -2012,10 +1852,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 @@ -2026,11 +1866,12 @@ 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 @@ -2046,7 +1887,6 @@ class CreateOAuthApplicationUserStateRequest(model.Model): refresh_token: refresh_token_expires_at: """ - user_id: str oauth_application_id: str access_token: str @@ -2054,16 +1894,13 @@ 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 @@ -2079,11 +1916,12 @@ 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 @@ -2100,7 +1938,6 @@ 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 @@ -2115,20 +1952,17 @@ 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 @@ -2150,7 +1984,6 @@ class CredentialsApi3(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 id: Optional[str] = None client_id: Optional[str] = None @@ -2159,17 +1992,14 @@ class CredentialsApi3(model.Model): type: 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, - 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, + url: Optional[str] = None): self.can = can self.id = id self.client_id = client_id @@ -2196,7 +2026,6 @@ 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 @@ -2210,22 +2039,19 @@ 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, - 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, + type: Optional[str] = None, + url: Optional[str] = None, + user_url: Optional[str] = None): self.can = can self.created_at = created_at self.email = email @@ -2257,7 +2083,6 @@ 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 @@ -2271,22 +2096,19 @@ 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, - 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, + type: Optional[str] = None, + url: Optional[str] = None, + user_url: Optional[str] = None): self.can = can self.created_at = created_at self.email = email @@ -2315,7 +2137,6 @@ 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 @@ -2326,19 +2147,16 @@ 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 @@ -2364,7 +2182,6 @@ 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 @@ -2375,19 +2192,16 @@ 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 @@ -2413,7 +2227,6 @@ 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 @@ -2424,19 +2237,16 @@ 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 @@ -2462,7 +2272,6 @@ 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 @@ -2473,19 +2282,16 @@ 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 @@ -2510,7 +2316,6 @@ 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 @@ -2520,18 +2325,15 @@ 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 @@ -2555,7 +2357,6 @@ 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 @@ -2565,18 +2366,15 @@ 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 @@ -2600,7 +2398,6 @@ 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 @@ -2608,16 +2405,13 @@ 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 @@ -2635,20 +2429,16 @@ 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 @@ -2709,7 +2499,6 @@ class Dashboard(model.Model): appearance: url: Relative URL of the dashboard """ - can: Optional[MutableMapping[str, bool]] = None content_favorite_id: Optional[str] = None content_metadata_id: Optional[str] = None @@ -2760,59 +2549,56 @@ class Dashboard(model.Model): appearance: Optional["DashboardAppearance"] = None url: Optional[str] = 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, - alert_sync_with_dashboard_filter_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, - url: Optional[str] = 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, + alert_sync_with_dashboard_filter_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, + url: Optional[str] = None): self.can = can self.content_favorite_id = content_favorite_id self.content_metadata_id = content_metadata_id @@ -2829,9 +2615,7 @@ def __init__( self.user_id = user_id self.slug = slug self.preferred_viewer = preferred_viewer - 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.background_color = background_color self.created_at = created_at self.crossfilter_enabled = crossfilter_enabled @@ -2873,16 +2657,12 @@ 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 @@ -2899,7 +2679,6 @@ class DashboardAppearance(model.Model): tile_shadow: Tile shadow on/off key_color: Key color """ - page_side_margins: Optional[int] = None page_background_color: Optional[str] = None tile_title_alignment: Optional[str] = None @@ -2908,17 +2687,14 @@ class DashboardAppearance(model.Model): tile_shadow: Optional[bool] = None key_color: Optional[str] = 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 - ): + 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): self.page_side_margins = page_side_margins self.page_background_color = page_background_color self.tile_title_alignment = tile_title_alignment @@ -2949,7 +2725,6 @@ class DashboardBase(model.Model): slug: Content Metadata Slug preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) """ - can: Optional[MutableMapping[str, bool]] = None content_favorite_id: Optional[str] = None content_metadata_id: Optional[str] = None @@ -2967,26 +2742,23 @@ class DashboardBase(model.Model): slug: Optional[str] = None preferred_viewer: Optional[str] = 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 - ): + 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): self.can = can self.content_favorite_id = content_favorite_id self.content_metadata_id = content_metadata_id @@ -3040,7 +2812,6 @@ class DashboardElement(model.Model): subtitle_text_as_html: Text tile subtitle text as Html extension_id: Extension ID """ - can: Optional[MutableMapping[str, bool]] = None body_text: Optional[str] = None body_text_as_html: Optional[str] = None @@ -3072,40 +2843,37 @@ class DashboardElement(model.Model): subtitle_text_as_html: Optional[str] = None extension_id: Optional[str] = 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, - 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, - 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 - ): + 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, + 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, + 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): self.can = can self.body_text = body_text self.body_text_as_html = body_text_as_html @@ -3159,7 +2927,6 @@ 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 @@ -3177,26 +2944,23 @@ 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 @@ -3230,7 +2994,6 @@ class DashboardLayout(model.Model): dashboard_title: Title extracted from the dashboard this layout represents. dashboard_layout_components: Components """ - can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None dashboard_id: Optional[str] = None @@ -3242,22 +3005,17 @@ class DashboardLayout(model.Model): dashboard_title: Optional[str] = None dashboard_layout_components: Optional[Sequence["DashboardLayoutComponent"]] = 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 - ): + 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): self.can = can self.id = id self.dashboard_id = dashboard_id @@ -3287,7 +3045,6 @@ class DashboardLayoutComponent(model.Model): element_title_hidden: Whether or not the dashboard element title is displayed. vis_type: Visualization type, extracted from a query's vis_config """ - can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None dashboard_layout_id: Optional[str] = None @@ -3301,22 +3058,19 @@ class DashboardLayoutComponent(model.Model): element_title_hidden: Optional[bool] = None vis_type: Optional[str] = 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 - ): + 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): self.can = can self.id = id self.dashboard_layout_id = dashboard_layout_id @@ -3339,18 +3093,14 @@ 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 @@ -3363,16 +3113,12 @@ 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 @@ -3391,7 +3137,6 @@ 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 @@ -3402,19 +3147,16 @@ 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 @@ -3433,11 +3175,12 @@ 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 @@ -3449,16 +3192,12 @@ 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 @@ -3473,22 +3212,18 @@ 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 @@ -3503,13 +3238,12 @@ 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 @@ -3529,7 +3263,6 @@ 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 @@ -3541,20 +3274,17 @@ 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 @@ -3619,7 +3349,6 @@ class DBConnection(model.Model): 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. """ - can: Optional[MutableMapping[str, bool]] = None name: Optional[str] = None dialect: Optional["Dialect"] = None @@ -3668,57 +3397,54 @@ class DBConnection(model.Model): cost_estimate_enabled: Optional[bool] = None pdt_api_control_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, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - uses_oauth: 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_billing_gigabytes: Optional[str] = None, - ssl: Optional[bool] = None, - verify_ssl: Optional[bool] = None, - tmp_db_name: 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, - cost_estimate_enabled: Optional[bool] = None, - pdt_api_control_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, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + uses_oauth: 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_billing_gigabytes: Optional[str] = None, + ssl: Optional[bool] = None, + verify_ssl: Optional[bool] = None, + tmp_db_name: 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, + cost_estimate_enabled: Optional[bool] = None, + pdt_api_control_enabled: Optional[bool] = None): self.can = can self.name = name self.dialect = dialect @@ -3778,22 +3504,18 @@ 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 @@ -3818,7 +3540,6 @@ class DBConnectionOverride(model.Model): jdbc_additional_params: Additional params to add to JDBC connection string after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature """ - context: Optional[str] = None host: Optional[str] = None port: Optional[str] = None @@ -3832,22 +3553,19 @@ class DBConnectionOverride(model.Model): jdbc_additional_params: Optional[str] = None after_connect_statements: Optional[str] = None - def __init__( - self, - *, - context: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - has_password: Optional[bool] = None, - certificate: Optional[str] = None, - file_type: Optional[str] = None, - database: Optional[str] = None, - schema: Optional[str] = None, - jdbc_additional_params: Optional[str] = None, - after_connect_statements: Optional[str] = None - ): + def __init__(self, *, + context: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + has_password: Optional[bool] = None, + certificate: Optional[str] = None, + file_type: Optional[str] = None, + database: Optional[str] = None, + schema: Optional[str] = None, + jdbc_additional_params: Optional[str] = None, + after_connect_statements: Optional[str] = None): self.context = context self.host = host self.port = port @@ -3872,22 +3590,18 @@ 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 @@ -3904,20 +3618,16 @@ 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 @@ -3930,10 +3640,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 @@ -3942,7 +3652,6 @@ 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" @@ -3959,7 +3668,6 @@ 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" @@ -3974,7 +3682,6 @@ 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" @@ -4003,7 +3710,6 @@ 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 @@ -4019,24 +3725,21 @@ 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 @@ -4045,9 +3748,7 @@ def __init__( 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 @@ -4068,7 +3769,6 @@ class DialectInfo(model.Model): name: The name of the dialect supported_options: """ - can: Optional[MutableMapping[str, bool]] = None default_max_connections: Optional[str] = None default_port: Optional[str] = None @@ -4078,18 +3778,15 @@ class DialectInfo(model.Model): name: Optional[str] = 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, - installed: Optional[bool] = None, - label: Optional[str] = None, - label_for_database_equivalent: Optional[str] = None, - name: Optional[str] = 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, + installed: Optional[bool] = None, + label: Optional[str] = None, + label_for_database_equivalent: Optional[str] = None, + name: Optional[str] = None, + supported_options: Optional["DialectInfoOptions"] = None): self.can = can self.default_max_connections = default_max_connections self.default_port = default_port @@ -4126,7 +3823,6 @@ class DialectInfoOptions(model.Model): username: Username can be specified username_required: Username is required """ - additional_params: Optional[bool] = None after_connect_statements: Optional[bool] = None analytical_view_dataset: Optional[bool] = None @@ -4149,31 +3845,28 @@ class DialectInfoOptions(model.Model): username: Optional[bool] = None username_required: 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, - disable_context_comment: Optional[bool] = None, - host: Optional[bool] = None, - instance_name: 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 - ): + 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, + disable_context_comment: Optional[bool] = None, + host: Optional[bool] = None, + instance_name: 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): self.additional_params = additional_params self.after_connect_statements = after_connect_statements self.analytical_view_dataset = analytical_view_dataset @@ -4203,10 +3896,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 @@ -4216,10 +3909,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 @@ -4232,20 +3925,16 @@ 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 @@ -4258,10 +3947,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 @@ -4281,7 +3970,6 @@ class EmbedConfig(model.Model): 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 @@ -4294,21 +3982,18 @@ class EmbedConfig(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 @@ -4340,7 +4025,6 @@ 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 @@ -4355,23 +4039,20 @@ 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 @@ -4395,12 +4076,11 @@ 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 session. """ - authentication_token: Optional[str] = None authentication_token_ttl: Optional[int] = None navigation_token: Optional[str] = None @@ -4410,18 +4090,15 @@ 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 @@ -4438,20 +4115,16 @@ 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 @@ -4464,11 +4137,10 @@ 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 @@ -4476,16 +4148,13 @@ 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 @@ -4502,18 +4171,14 @@ 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 @@ -4531,7 +4196,6 @@ 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 @@ -4540,17 +4204,14 @@ 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 @@ -4579,7 +4240,6 @@ 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 @@ -4595,24 +4255,21 @@ 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 @@ -4635,10 +4292,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 @@ -4649,11 +4306,12 @@ 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 @@ -4670,7 +4328,6 @@ class ExternalOauthApplication(model.Model): dialect_name: The database dialect for this application. created_at: Creation time for this application """ - can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None name: Optional[str] = None @@ -4679,17 +4336,14 @@ class ExternalOauthApplication(model.Model): dialect_name: Optional[str] = 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, - dialect_name: Optional[str] = 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, + dialect_name: Optional[str] = None, + created_at: Optional[datetime.datetime] = None): self.can = can self.id = id self.name = name @@ -4704,7 +4358,6 @@ 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" @@ -4737,7 +4390,6 @@ class Folder(model.Model): dashboards: Dashboards looks: Looks """ - name: str parent_id: Optional[str] = None id: Optional[str] = None @@ -4757,28 +4409,25 @@ 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 @@ -4820,7 +4469,6 @@ 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 @@ -4838,26 +4486,23 @@ 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 @@ -4881,7 +4526,6 @@ 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" @@ -4913,7 +4557,6 @@ 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 @@ -4932,27 +4575,24 @@ 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 @@ -4980,18 +4620,14 @@ 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 @@ -5006,20 +4642,16 @@ 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 @@ -5035,20 +4667,16 @@ 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 @@ -5069,7 +4697,6 @@ 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 @@ -5080,19 +4707,16 @@ 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 @@ -5120,7 +4744,6 @@ 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 @@ -5133,21 +4756,18 @@ 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 @@ -5169,10 +4789,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 @@ -5184,10 +4804,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 @@ -5206,7 +4826,6 @@ 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 @@ -5218,20 +4837,17 @@ 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 @@ -5277,7 +4893,6 @@ 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 @@ -5307,38 +4922,35 @@ 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 @@ -5387,7 +4999,6 @@ 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 @@ -5402,23 +5013,20 @@ 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 @@ -5443,20 +5051,16 @@ 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 @@ -5486,7 +5090,6 @@ 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 @@ -5497,9 +5100,7 @@ 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 @@ -5508,32 +5109,25 @@ 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 @@ -5570,7 +5164,6 @@ 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 @@ -5583,21 +5176,18 @@ 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 @@ -5626,7 +5216,6 @@ 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 @@ -5638,20 +5227,17 @@ 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 @@ -5672,18 +5258,14 @@ class IntegrationRequiredField(model.Model): any_tag: If present, supercedes 'tag' and matches a field that has any of the provided tags. all_tags: If present, supercedes '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 @@ -5697,18 +5279,14 @@ 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 @@ -5721,16 +5299,12 @@ 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 @@ -5743,18 +5317,14 @@ 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 @@ -5765,7 +5335,6 @@ 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" @@ -5780,10 +5349,10 @@ class JdbcInterface(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 @@ -5835,7 +5404,6 @@ 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 @@ -5880,53 +5448,50 @@ 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 @@ -5979,13 +5544,12 @@ 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 @@ -6002,7 +5566,6 @@ class LDAPConfigTestResult(model.Model): user: url: Link to ldap config """ - details: Optional[str] = None issues: Optional[Sequence["LDAPConfigTestIssue"]] = None message: Optional[str] = None @@ -6011,17 +5574,14 @@ 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 @@ -6042,7 +5602,6 @@ 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 @@ -6050,16 +5609,13 @@ 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 @@ -6079,7 +5635,6 @@ 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 @@ -6087,16 +5642,13 @@ 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 @@ -6120,7 +5672,6 @@ 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 @@ -6132,20 +5683,17 @@ 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 @@ -6167,20 +5715,16 @@ 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 @@ -6196,20 +5740,16 @@ 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 @@ -6234,7 +5774,6 @@ 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 @@ -6249,23 +5788,20 @@ 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 @@ -6289,18 +5825,14 @@ 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 @@ -6313,16 +5845,12 @@ 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 @@ -6362,7 +5890,6 @@ class Look(model.Model): updated_at: Time that the Look was updated. view_count: Number of times viewed in the Looker web UI """ - can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[str] = None id: Optional[str] = None @@ -6394,40 +5921,37 @@ class Look(model.Model): updated_at: Optional[datetime.datetime] = None view_count: Optional[int] = 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, - 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, - view_count: Optional[int] = 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, + 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, + view_count: Optional[int] = None): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -6470,22 +5994,18 @@ class LookBasic(model.Model): title: Look Title user_id: User Id """ - 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 - 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 - ): + 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): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -6506,7 +6026,6 @@ 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 @@ -6516,18 +6035,15 @@ 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 @@ -6582,7 +6098,6 @@ 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 @@ -6612,9 +6127,7 @@ 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 @@ -6622,58 +6135,49 @@ 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, - supports_cost_estimate: Optional[bool] = None, - connection_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, + supports_cost_estimate: Optional[bool] = None, + connection_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 @@ -6722,13 +6226,12 @@ 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 @@ -6740,11 +6243,12 @@ 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 @@ -6756,11 +6260,12 @@ 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 @@ -6772,11 +6277,12 @@ 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 @@ -6790,20 +6296,16 @@ 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 @@ -6869,7 +6371,6 @@ class LookmlModelExploreField(model.Model): times_used: The number of times this field has been used in queries original_view: The name of the view this field is defined in. This will be different than "view" when the view has been joined via a different name using the "from" parameter. """ - align: Optional["Align"] = None can_filter: Optional[bool] = None category: Optional["Category"] = None @@ -6925,66 +6426,61 @@ class LookmlModelExploreField(model.Model): times_used: Optional[int] = None original_view: Optional[str] = None - def __init__( - self, - *, - align: Optional["Align"] = 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, - 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, - 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, - map_layer: Optional["LookmlModelExploreFieldMapLayer"] = None, - measure: Optional[bool] = None, - name: Optional[str] = None, - strict_value_format: Optional[bool] = None, - parameter: Optional[bool] = 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, - tags: Optional[Sequence[str]] = None, - type: Optional[str] = None, - user_attribute_filter_types: Optional[ - Sequence["UserAttributeFilterTypes"] - ] = None, - value_format: 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 - ): + def __init__(self, *, + align: Optional["Align"] = 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, + 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, + 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, + map_layer: Optional["LookmlModelExploreFieldMapLayer"] = None, + measure: Optional[bool] = None, + name: Optional[str] = None, + strict_value_format: Optional[bool] = None, + parameter: Optional[bool] = 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, + tags: Optional[Sequence[str]] = None, + type: Optional[str] = None, + user_attribute_filter_types: Optional[Sequence["UserAttributeFilterTypes"]] = None, + value_format: 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): self.align = align self.can_filter = can_filter self.category = category @@ -7048,11 +6544,12 @@ 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 @@ -7072,7 +6569,6 @@ 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 @@ -7084,20 +6580,17 @@ 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 @@ -7117,11 +6610,12 @@ 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 @@ -7135,20 +6629,16 @@ 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 @@ -7162,11 +6652,12 @@ 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 @@ -7178,11 +6669,12 @@ 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 @@ -7205,7 +6697,6 @@ 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 @@ -7220,23 +6711,20 @@ 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 @@ -7259,13 +6747,12 @@ 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 @@ -7277,16 +6764,12 @@ 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 @@ -7301,22 +6784,18 @@ 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 @@ -7336,7 +6815,6 @@ 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 @@ -7345,17 +6823,14 @@ 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 @@ -7378,7 +6853,6 @@ 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 @@ -7388,18 +6862,15 @@ 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 @@ -7417,11 +6888,12 @@ 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 @@ -7462,7 +6934,6 @@ class LookWithDashboards(model.Model): view_count: Number of times viewed in the Looker web UI dashboards: Dashboards """ - can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[str] = None id: Optional[str] = None @@ -7495,41 +6966,38 @@ class LookWithDashboards(model.Model): view_count: Optional[int] = 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, - 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, - view_count: Optional[int] = 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, + 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, + view_count: Optional[int] = None, + dashboards: Optional[Sequence["DashboardBase"]] = None): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -7600,7 +7068,6 @@ class LookWithQuery(model.Model): query: url: Url """ - can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[str] = None id: Optional[str] = None @@ -7634,42 +7101,39 @@ 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, - 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, - view_count: Optional[int] = 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, + 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, + view_count: Optional[int] = None, + query: Optional["Query"] = None, + url: Optional[str] = None): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -7713,20 +7177,16 @@ 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 @@ -7741,18 +7201,14 @@ 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 @@ -7765,16 +7221,12 @@ 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 @@ -7786,16 +7238,12 @@ 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 @@ -7815,7 +7263,6 @@ class MergeQuery(model.Model): total: Total vis_config: Visualization Config """ - can: Optional[MutableMapping[str, bool]] = None column_limit: Optional[str] = None dynamic_fields: Optional[str] = None @@ -7827,20 +7274,17 @@ class MergeQuery(model.Model): total: Optional[bool] = 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, - 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, + vis_config: Optional[MutableMapping[str, Any]] = None): self.can = can self.column_limit = column_limit self.dynamic_fields = dynamic_fields @@ -7861,18 +7305,14 @@ class MergeQuerySourceQuery(model.Model): name: Display name query_id: Id of the query to merge """ - merge_fields: Optional[Sequence["MergeFields"]] = None name: Optional[str] = None query_id: Optional[str] = None - def __init__( - self, - *, - merge_fields: Optional[Sequence["MergeFields"]] = None, - name: Optional[str] = None, - query_id: Optional[str] = None - ): + def __init__(self, *, + merge_fields: Optional[Sequence["MergeFields"]] = None, + name: Optional[str] = None, + query_id: Optional[str] = None): self.merge_fields = merge_fields self.name = name self.query_id = query_id @@ -7885,16 +7325,12 @@ 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 @@ -7910,7 +7346,6 @@ class MobilePayload(model.Model): dashboard_id: ID of the dashboard on which the alert has been set query_slug: Slug of the query which runs the alert queries. """ - alert_id: str title: Optional[str] = None investigative_content_id: Optional[str] = None @@ -7918,16 +7353,13 @@ class MobilePayload(model.Model): dashboard_id: Optional[str] = None query_slug: 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 - ): + 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): self.alert_id = alert_id self.title = title self.investigative_content_id = investigative_content_id @@ -7944,18 +7376,14 @@ 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 @@ -7969,19 +7397,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 @@ -7995,18 +7423,14 @@ 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 @@ -8022,22 +7446,18 @@ 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 @@ -8054,20 +7474,16 @@ 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 @@ -8086,7 +7502,6 @@ 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 @@ -8095,17 +7510,14 @@ 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 @@ -8122,13 +7534,12 @@ 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 @@ -8138,7 +7549,6 @@ 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" @@ -8170,7 +7580,6 @@ 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 @@ -8181,19 +7590,16 @@ 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 @@ -8243,7 +7649,6 @@ 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 @@ -8278,43 +7683,40 @@ 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 @@ -8360,22 +7762,18 @@ 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 @@ -8393,22 +7791,18 @@ 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 @@ -8424,18 +7818,14 @@ 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 @@ -8449,18 +7839,14 @@ 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 @@ -8476,22 +7862,18 @@ class PasswordConfig(model.Model): require_upperlower: Require at least one uppercase and one lowercase letter require_special: Require at least one special character """ - 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 - 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 - ): + 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): self.can = can self.min_length = min_length self.require_numeric = require_numeric @@ -8508,20 +7890,16 @@ 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 @@ -8540,7 +7918,6 @@ 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 @@ -8549,17 +7926,14 @@ 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 @@ -8574,7 +7948,6 @@ 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" @@ -8604,7 +7977,6 @@ 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 @@ -8621,25 +7993,22 @@ 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 @@ -8684,7 +8053,6 @@ class Project(model.Model): is_example: If true the project is an example project and cannot be modified dependency_status: Status of dependencies in your manifest & lockfile """ - can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None name: Optional[str] = None @@ -8708,32 +8076,29 @@ class Project(model.Model): is_example: 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, - 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, - 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, + 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, + dependency_status: Optional[str] = None): self.can = can self.id = id self.name = name @@ -8775,7 +8140,6 @@ 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 @@ -8789,22 +8153,19 @@ 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 @@ -8833,7 +8194,6 @@ 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 @@ -8844,19 +8204,16 @@ 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 @@ -8877,20 +8234,16 @@ 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 @@ -8907,22 +8260,18 @@ 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 @@ -8943,7 +8292,6 @@ 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 @@ -8953,18 +8301,15 @@ 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 @@ -8980,7 +8325,6 @@ 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" @@ -9023,7 +8367,6 @@ class Query(model.Model): query_timezone: Query Timezone has_table_calculations: Has Table Calculations """ - model: str view: str can: Optional[MutableMapping[str, bool]] = None @@ -9051,36 +8394,33 @@ 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 @@ -9133,7 +8473,6 @@ 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 @@ -9154,29 +8493,26 @@ 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 @@ -9223,7 +8559,6 @@ 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 @@ -9245,30 +8580,27 @@ 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 @@ -9304,7 +8636,6 @@ 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 @@ -9314,18 +8645,15 @@ 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 @@ -9341,7 +8669,6 @@ 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". (Enum defined in CreateQueryTask) """ - inline_json = "inline_json" json = "json" json_detail = "json_detail" @@ -9370,20 +8697,16 @@ 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 @@ -9397,16 +8720,12 @@ 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 @@ -9426,7 +8745,6 @@ 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 @@ -9438,20 +8756,17 @@ 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 @@ -9478,7 +8793,6 @@ 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 @@ -9489,19 +8803,16 @@ 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, - 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, + url: Optional[str] = None, + users_url: Optional[str] = None): self.can = can self.id = id self.name = name @@ -9528,7 +8839,6 @@ 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 @@ -9540,20 +8850,17 @@ 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, - 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, + user_count: Optional[int] = None, + url: Optional[str] = None, + users_url: Optional[str] = None): self.can = can self.id = id self.name = name @@ -9592,7 +8899,6 @@ class RunningQueries(model.Model): runtime: Number of seconds elapsed running the Query sql: SQL text of the query as run """ - can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None user: Optional["UserPublic"] = None @@ -9615,31 +8921,28 @@ class RunningQueries(model.Model): runtime: Optional[float] = None 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 - ): + 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): self.can = can self.id = id self.user = user @@ -9701,7 +9004,6 @@ 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 @@ -9736,43 +9038,40 @@ 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_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_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 @@ -9819,7 +9118,6 @@ 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 @@ -9827,16 +9125,13 @@ 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 @@ -9856,7 +9151,6 @@ 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 @@ -9864,16 +9158,13 @@ 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 @@ -9891,20 +9182,16 @@ class SamlMetadataParseResult(model.Model): idp_url: Identify Provider Url idp_cert: Identify Provider Certificate """ - can: Optional[MutableMapping[str, bool]] = None idp_issuer: Optional[str] = None idp_url: Optional[str] = None idp_cert: Optional[str] = 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 - ): + def __init__(self, *, + can: Optional[MutableMapping[str, bool]] = None, + idp_issuer: Optional[str] = None, + idp_url: Optional[str] = None, + idp_cert: Optional[str] = None): self.can = can self.idp_issuer = idp_issuer self.idp_url = idp_url @@ -9920,20 +9207,16 @@ 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 @@ -9949,20 +9232,16 @@ 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 @@ -10012,7 +9291,6 @@ 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 @@ -10052,50 +9330,45 @@ 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, - query_id: 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, - inline_table_width: Optional[int] = 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, + query_id: 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, + inline_table_width: Optional[int] = 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 @@ -10145,14 +9418,13 @@ 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 @@ -10165,21 +9437,18 @@ 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 @@ -10200,13 +9469,12 @@ 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 @@ -10225,7 +9493,6 @@ 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 @@ -10236,19 +9503,16 @@ 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 @@ -10269,20 +9533,16 @@ 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 @@ -10300,7 +9560,6 @@ 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 @@ -10308,16 +9567,13 @@ 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 @@ -10335,20 +9591,16 @@ 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 @@ -10360,7 +9612,6 @@ 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" @@ -10390,7 +9641,6 @@ 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 @@ -10407,25 +9657,22 @@ 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 @@ -10454,7 +9701,6 @@ 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 @@ -10462,16 +9708,13 @@ 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 @@ -10504,7 +9747,6 @@ class Setting(model.Model): embed_enabled: True if embedding is enabled https://cloud.google.com/looker/docs/r/looker-core-feature-embed, false otherwise embed_config: """ - extension_framework_enabled: Optional[bool] = None extension_load_url_enabled: Optional[bool] = None marketplace_auto_install_enabled: Optional[bool] = None @@ -10525,29 +9767,26 @@ class Setting(model.Model): embed_enabled: Optional[bool] = None embed_config: Optional["EmbedConfig"] = 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_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 - ): + 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_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): 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 @@ -10577,18 +9816,14 @@ 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 @@ -10607,7 +9842,6 @@ class SmtpSettings(model.Model): ssl_version: TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2". default_smtp: Whether to enable built-in Looker SMTP """ - address: Optional[str] = None from_: Optional[str] = None user_name: Optional[str] = None @@ -10617,18 +9851,15 @@ class SmtpSettings(model.Model): ssl_version: Optional["SslVersion"] = 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, - 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, + default_smtp: Optional[bool] = None): self.address = address self.from_ = from_ self.user_name = user_name @@ -10647,18 +9878,14 @@ 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 @@ -10672,18 +9899,14 @@ 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 @@ -10708,7 +9931,6 @@ 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 @@ -10724,24 +9946,21 @@ 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 @@ -10768,22 +9987,18 @@ 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 @@ -10797,10 +10012,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 @@ -10818,7 +10033,6 @@ 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 @@ -10829,19 +10043,16 @@ 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 @@ -10869,7 +10080,6 @@ 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 @@ -10882,21 +10092,18 @@ 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 @@ -10915,7 +10122,6 @@ 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" @@ -10933,13 +10139,12 @@ 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 @@ -10954,22 +10159,18 @@ 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 @@ -10983,10 +10184,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 @@ -10997,16 +10198,12 @@ 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 @@ -11016,7 +10213,6 @@ 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" @@ -11033,7 +10229,6 @@ 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" @@ -11048,7 +10243,6 @@ 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", "xlsx", "html", "wysiwyg_pdf", "assembled_pdf", "wysiwyg_png", "csv_zip". (Enum defined in Integration) """ - txt = "txt" csv = "csv" inline_json = "inline_json" @@ -11074,7 +10268,6 @@ 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" @@ -11089,7 +10282,6 @@ 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" @@ -11110,7 +10302,6 @@ 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 @@ -11118,16 +10309,13 @@ 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 @@ -11186,7 +10374,6 @@ 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 @@ -11233,55 +10420,52 @@ 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 @@ -11337,18 +10521,14 @@ 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 @@ -11363,20 +10543,16 @@ 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 @@ -11390,11 +10566,12 @@ 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 @@ -11441,7 +10618,6 @@ class User(model.Model): is_iam_admin: User is an IAM Admin - only available in Looker (Google Cloud core) url: Link to get this item """ - can: Optional[MutableMapping[str, bool]] = None avatar_url: Optional[str] = None avatar_url_without_sizing: Optional[str] = None @@ -11480,47 +10656,44 @@ class User(model.Model): is_iam_admin: Optional[bool] = 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, - 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, - 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, + 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, + url: Optional[str] = None): self.can = can self.avatar_url = avatar_url self.avatar_url_without_sizing = avatar_url_without_sizing @@ -11577,7 +10750,6 @@ class UserAttribute(model.Model): 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. """ - name: str label: str type: str @@ -11591,22 +10763,19 @@ class UserAttribute(model.Model): user_can_edit: Optional[bool] = None hidden_value_domain_whitelist: 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 - ): + 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): self.name = name self.label = label self.type = type @@ -11626,7 +10795,6 @@ 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" @@ -11657,7 +10825,6 @@ 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 @@ -11666,17 +10833,14 @@ 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 @@ -11702,7 +10866,6 @@ 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 @@ -11715,21 +10878,18 @@ 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 @@ -11749,10 +10909,10 @@ class UserEmailOnly(model.Model): Attributes: email: Email Address """ - email: str - def __init__(self, *, email: str): + def __init__(self, *, + email: str): self.email = email @@ -11771,7 +10931,6 @@ 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 @@ -11783,20 +10942,17 @@ 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 @@ -11821,7 +10977,6 @@ 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 @@ -11830,17 +10985,14 @@ 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 @@ -11858,18 +11010,14 @@ 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 @@ -11884,20 +11032,16 @@ 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 @@ -11909,7 +11053,6 @@ 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" @@ -11932,18 +11075,14 @@ 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 @@ -11970,7 +11109,6 @@ 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 @@ -11988,26 +11126,23 @@ 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 @@ -12034,18 +11169,14 @@ 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 @@ -12054,34 +11185,33 @@ def __init__( @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://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 minumum, 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" }]` - 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 - 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://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 minumum, 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" }]` + 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 + 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"] @@ -12126,37 +11256,32 @@ 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, - 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, - 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, + 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, + 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 @@ -12184,48 +11309,44 @@ def __init__( @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 @@ -12236,29 +11357,25 @@ def __init__( @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, user_id, primary_homepage + Dynamic writeable type for Board removes: +can, content_metadata_id, created_at, board_sections, id, updated_at, user_id, 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 + 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 """ - deleted_at: Optional[datetime.datetime] = None description: Optional[str] = None section_order: Optional[Sequence[str]] = None title: 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 - ): + def __init__(self, *, + deleted_at: Optional[datetime.datetime] = None, + description: Optional[str] = None, + section_order: Optional[Sequence[str]] = None, + title: Optional[str] = None): self.deleted_at = deleted_at self.description = description self.section_order = section_order @@ -12268,25 +11385,24 @@ def __init__( @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 - - 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 - """ + 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 + """ custom_description: Optional[str] = None custom_title: Optional[str] = None custom_url: Optional[str] = None @@ -12301,23 +11417,20 @@ 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 @@ -12336,32 +11449,28 @@ def __init__( @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 @@ -12372,29 +11481,25 @@ def __init__( @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 @@ -12404,31 +11509,27 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteContentFavorite(model.Model): """ - Dynamic writeable type for ContentFavorite removes: - id, look_id, dashboard_id, board_id + Dynamic writeable type for ContentFavorite removes: +id, look_id, dashboard_id, board_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 + 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 """ - user_id: Optional[str] = None content_metadata_id: Optional[str] = None look: Optional["WriteLookBasic"] = None 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 - ): + def __init__(self, *, + user_id: Optional[str] = None, + content_metadata_id: Optional[str] = None, + look: Optional["WriteLookBasic"] = None, + dashboard: Optional["WriteDashboardBase"] = None): self.user_id = user_id self.content_metadata_id = content_metadata_id self.look = look @@ -12438,41 +11539,40 @@ def __init__( @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, content_type, inheriting_id, slug + Dynamic writeable type for ContentMeta removes: +can, id, name, parent_id, dashboard_id, look_id, folder_id, content_type, inheriting_id, slug - Attributes: - inherits: Whether content inherits its access levels from parent + Attributes: + inherits: Whether content inherits its access levels from parent """ - 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 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 @@ -12487,23 +11587,20 @@ 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 @@ -12522,18 +11619,17 @@ def __init__( @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". - 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". + 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 @@ -12546,19 +11642,16 @@ 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 @@ -12570,23 +11663,19 @@ def __init__( @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, 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, 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 @@ -12594,38 +11683,37 @@ def __init__( @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, user_id, 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, 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 - slug: Content Metadata Slug - preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) - alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes - 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://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: - """ + Dynamic writeable type for Dashboard removes: +can, content_favorite_id, content_metadata_id, id, model, readonly, refresh_interval_to_i, user_id, 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, 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 + slug: Content Metadata Slug + preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) + alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes + 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://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: + """ description: Optional[str] = None hidden: Optional[bool] = None query_timezone: Optional[str] = None @@ -12652,35 +11740,32 @@ class WriteDashboard(model.Model): title_color: Optional[str] = None appearance: Optional["DashboardAppearance"] = 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, - slug: Optional[str] = None, - preferred_viewer: Optional[str] = None, - alert_sync_with_dashboard_filter_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 - ): + 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, + slug: Optional[str] = None, + preferred_viewer: Optional[str] = None, + alert_sync_with_dashboard_filter_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): self.description = description self.hidden = hidden self.query_timezone = query_timezone @@ -12689,9 +11774,7 @@ def __init__( self.title = title self.slug = slug self.preferred_viewer = preferred_viewer - 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.background_color = background_color self.crossfilter_enabled = crossfilter_enabled self.deleted = deleted @@ -12713,52 +11796,51 @@ def __init__( @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 + 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 """ - folder: Optional["WriteFolderBase"] = None - def __init__(self, *, folder: Optional["WriteFolderBase"] = None): + def __init__(self, *, + folder: Optional["WriteFolderBase"] = None): self.folder = folder @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 - 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, view_count, 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 - refresh_interval: Refresh Interval - result_maker: Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: - id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config - 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 - """ + 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 + 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, view_count, 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 + refresh_interval: Refresh Interval + result_maker: Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: +id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config + 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 + """ body_text: Optional[str] = None dashboard_id: Optional[str] = None look: Optional["WriteLookWithQuery"] = None @@ -12780,32 +11862,27 @@ class WriteDashboardElement(model.Model): rich_content_json: Optional[str] = None extension_id: Optional[str] = None - def __init__( - self, - *, - body_text: Optional[str] = None, - dashboard_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, - 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 - ): + def __init__(self, *, + body_text: Optional[str] = None, + dashboard_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, + 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): self.body_text = body_text self.dashboard_id = dashboard_id self.look = look @@ -12831,24 +11908,23 @@ def __init__( @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 @@ -12862,22 +11938,19 @@ 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 @@ -12895,32 +11968,28 @@ def __init__( @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 + Attributes: + dashboard_id: Id of Dashboard + type: Type + active: Is Active + column_width: Column Width + width: Width """ - dashboard_id: Optional[str] = None type: Optional[str] = None active: Optional[bool] = None column_width: Optional[int] = None width: Optional[int] = 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 - ): + 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): self.dashboard_id = dashboard_id self.type = type self.active = active @@ -12931,18 +12000,17 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteDashboardLayoutComponent(model.Model): """ - Dynamic writeable type for DashboardLayoutComponent removes: - can, id, deleted, element_title, element_title_hidden, vis_type + Dynamic writeable type for DashboardLayoutComponent removes: +can, id, deleted, 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 + Attributes: + dashboard_layout_id: Id of Dashboard Layout + dashboard_element_id: Id Of Dashboard Element + row: Row + column: Column + width: Width + height: Height """ - dashboard_layout_id: Optional[str] = None dashboard_element_id: Optional[str] = None row: Optional[int] = None @@ -12950,16 +12018,13 @@ class WriteDashboardLayoutComponent(model.Model): width: Optional[int] = None 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 - ): + 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): self.dashboard_layout_id = dashboard_layout_id self.dashboard_element_id = dashboard_element_id self.row = row @@ -12971,20 +12036,19 @@ def __init__( @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 @@ -12992,20 +12056,19 @@ def __init__( @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 @@ -13013,48 +12076,47 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteDBConnection(model.Model): """ - Dynamic writeable type for DBConnection removes: - can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed - - Attributes: - name: Name of the connection. Also used as the unique identifier - 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 - certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). - file_type: (Write-Only) Certificate keyfile type - .json 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_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) - 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 - 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. - """ + Dynamic writeable type for DBConnection removes: +can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed + Attributes: + name: Name of the connection. Also used as the unique identifier + 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 + certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). + file_type: (Write-Only) Certificate keyfile type - .json 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_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) + 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 + 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. + """ name: Optional[str] = None host: Optional[str] = None port: Optional[str] = None @@ -13091,45 +12153,42 @@ class WriteDBConnection(model.Model): cost_estimate_enabled: Optional[bool] = None pdt_api_control_enabled: Optional[bool] = None - def __init__( - self, - *, - name: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = 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_billing_gigabytes: Optional[str] = None, - ssl: Optional[bool] = None, - verify_ssl: Optional[bool] = None, - tmp_db_name: 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, - cost_estimate_enabled: Optional[bool] = None, - pdt_api_control_enabled: Optional[bool] = None - ): + def __init__(self, *, + name: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = 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_billing_gigabytes: Optional[str] = None, + ssl: Optional[bool] = None, + verify_ssl: Optional[bool] = None, + tmp_db_name: 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, + cost_estimate_enabled: Optional[bool] = None, + pdt_api_control_enabled: Optional[bool] = None): self.name = name self.host = host self.port = port @@ -13170,23 +12229,22 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteDBConnectionOverride(model.Model): """ - Dynamic writeable type for DBConnectionOverride removes: - has_password + 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 - port: Port number on server - username: Username for server authentication - password: (Write-Only) Password for server authentication - certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). - file_type: (Write-Only) Certificate keyfile type - .json or .p12 - database: Database name - schema: Schema name - jdbc_additional_params: Additional params to add to JDBC connection string - after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature + Attributes: + context: Context in which to override (`pdt` is the only allowed value) + host: Host name/address of server + port: Port number on server + username: Username for server authentication + password: (Write-Only) Password for server authentication + certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). + file_type: (Write-Only) Certificate keyfile type - .json or .p12 + database: Database name + schema: Schema name + jdbc_additional_params: Additional params to add to JDBC connection string + after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature """ - context: Optional[str] = None host: Optional[str] = None port: Optional[str] = None @@ -13199,21 +12257,18 @@ class WriteDBConnectionOverride(model.Model): jdbc_additional_params: Optional[str] = None after_connect_statements: Optional[str] = None - def __init__( - self, - *, - context: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - certificate: Optional[str] = None, - file_type: Optional[str] = None, - database: Optional[str] = None, - schema: Optional[str] = None, - jdbc_additional_params: Optional[str] = None, - after_connect_statements: Optional[str] = None - ): + def __init__(self, *, + context: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + certificate: Optional[str] = None, + file_type: Optional[str] = None, + database: Optional[str] = None, + schema: Optional[str] = None, + jdbc_additional_params: Optional[str] = None, + after_connect_statements: Optional[str] = None): self.context = context self.host = host self.port = port @@ -13230,26 +12285,22 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteEmbedSecret(model.Model): """ - 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". - """ + 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". + """ 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 @@ -13258,29 +12309,25 @@ def __init__( @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 - dialect_name: The database dialect for this application. + 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 + dialect_name: The database dialect for this application. """ - name: Optional[str] = None client_id: Optional[str] = None client_secret: Optional[str] = None dialect_name: Optional[str] = None - def __init__( - self, - *, - name: Optional[str] = None, - client_id: Optional[str] = None, - client_secret: Optional[str] = None, - dialect_name: Optional[str] = None - ): + def __init__(self, *, + name: Optional[str] = None, + client_id: Optional[str] = None, + client_secret: Optional[str] = None, + dialect_name: Optional[str] = None): self.name = name self.client_id = client_id self.client_secret = client_secret @@ -13290,18 +12337,19 @@ def __init__( @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 @@ -13309,18 +12357,19 @@ def __init__(self, *, name: str, parent_id: Optional[str] = None): @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 @@ -13328,23 +12377,19 @@ def __init__(self, *, name: Optional[str] = None, ref: Optional[str] = None): @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 @@ -13352,26 +12397,22 @@ def __init__( @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 @@ -13380,20 +12421,19 @@ def __init__( @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 @@ -13401,39 +12441,35 @@ def __init__( @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 @@ -13441,46 +12477,45 @@ def __init__( @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 @@ -13516,44 +12551,41 @@ 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 @@ -13593,61 +12625,57 @@ def __init__( @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 + Attributes: + user_id: User Id """ - 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 @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 @@ -13657,24 +12685,23 @@ def __init__( @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, view_count, url + 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, view_count, url - Attributes: - title: Look Title - user_id: User Id - 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 + Attributes: + title: Look Title + user_id: User Id + 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 deleted: Optional[bool] = None @@ -13686,20 +12713,17 @@ 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, - 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, + 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.deleted = deleted @@ -13715,19 +12739,18 @@ def __init__( @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 - 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 + vis_config: Visualization Config """ - column_limit: Optional[str] = None dynamic_fields: Optional[str] = None pivots: Optional[Sequence[str]] = None @@ -13736,17 +12759,14 @@ class WriteMergeQuery(model.Model): total: Optional[bool] = 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, - 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, + vis_config: Optional[MutableMapping[str, Any]] = None): self.column_limit = column_limit self.dynamic_fields = dynamic_fields self.pivots = pivots @@ -13759,19 +12779,23 @@ def __init__( @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 @@ -13779,20 +12803,19 @@ def __init__(self, *, device_token: str, device_type: "DeviceType"): @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 @@ -13800,32 +12823,28 @@ def __init__( @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 @@ -13836,36 +12855,35 @@ def __init__( @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 @@ -13891,34 +12909,31 @@ 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 @@ -13948,29 +12963,25 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WritePasswordConfig(model.Model): """ - Dynamic writeable type for PasswordConfig removes: - can + Dynamic writeable type for PasswordConfig removes: +can - 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 + 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 """ - min_length: Optional[int] = None require_numeric: Optional[bool] = None require_upperlower: Optional[bool] = None require_special: Optional[bool] = None - def __init__( - self, - *, - min_length: Optional[int] = None, - require_numeric: Optional[bool] = None, - require_upperlower: Optional[bool] = None, - require_special: Optional[bool] = None - ): + def __init__(self, *, + min_length: Optional[int] = None, + require_numeric: Optional[bool] = None, + require_upperlower: Optional[bool] = None, + require_special: Optional[bool] = None): self.min_length = min_length self.require_numeric = require_numeric self.require_upperlower = require_upperlower @@ -13980,20 +12991,19 @@ def __init__( @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 @@ -14001,25 +13011,24 @@ def __init__( @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 @@ -14034,23 +13043,20 @@ 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 @@ -14069,30 +13075,29 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteProject(model.Model): """ - Dynamic writeable type for Project removes: - can, id, uses_git, is_example - - 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_example + 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 @@ -14112,28 +13117,25 @@ 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 @@ -14157,31 +13159,30 @@ def __init__( @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 - 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: Limit - 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 + 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: Limit + 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 @@ -14202,29 +13203,26 @@ 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 @@ -14249,26 +13247,22 @@ def __init__( @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 @@ -14277,51 +13271,47 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteResultMakerWithIdVisConfigAndDynamicFields(model.Model): """ - Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: - id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config + Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: +id, dynamic_fields, filterables, sorts, merge_result_id, total, query_id, sql_query_id, vis_config - Attributes: - query: Dynamic writeable type for Query removes: - can, id, slug, share_url, expanded_share_url, url, has_table_calculations + Attributes: + query: Dynamic writeable type for Query removes: +can, id, slug, share_url, expanded_share_url, url, has_table_calculations """ - query: Optional["WriteQuery"] = None - def __init__(self, *, query: Optional["WriteQuery"] = None): + def __init__(self, *, + query: Optional["WriteQuery"] = None): self.query = query @attr.s(auto_attribs=True, init=False) class WriteRole(model.Model): """ - Dynamic writeable type for Role removes: - can, id, url, users_url + Dynamic writeable type for Role removes: +can, id, 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 @@ -14332,36 +13322,35 @@ def __init__( @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_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_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_url: Optional[str] = None @@ -14387,34 +13376,31 @@ 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_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_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_url = idp_url @@ -14444,42 +13430,41 @@ def __init__( @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) - query_id: Query id - 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 - inline_table_width: The pixel width at which we render the inline table visualizations - """ + 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) + query_id: Query id + 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 + inline_table_width: The pixel width at which we render the inline table visualizations + """ name: Optional[str] = None user_id: Optional[str] = None run_as_recipient: Optional[bool] = None @@ -14511,42 +13496,37 @@ class WriteScheduledPlan(model.Model): long_tables: Optional[bool] = None inline_table_width: Optional[int] = 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, - query_id: 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, - inline_table_width: Optional[int] = 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, + query_id: 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, + inline_table_width: Optional[int] = None): self.name = name self.user_id = user_id self.run_as_recipient = run_as_recipient @@ -14582,32 +13562,28 @@ def __init__( @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 @@ -14618,30 +13594,29 @@ def __init__( @attr.s(auto_attribs=True, init=False) class WriteSetting(model.Model): """ - Dynamic writeable type for Setting removes: - marketplace_site, embed_enabled - - 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 Setting removes: +marketplace_site, embed_enabled + 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: + """ extension_framework_enabled: Optional[bool] = None extension_load_url_enabled: Optional[bool] = None marketplace_auto_install_enabled: Optional[bool] = None @@ -14660,27 +13635,24 @@ class WriteSetting(model.Model): embed_cookieless_v2: Optional[bool] = None embed_config: Optional["EmbedConfig"] = 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["EmbedConfig"] = 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["EmbedConfig"] = 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 @@ -14703,29 +13675,25 @@ def __init__( @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 @@ -14735,29 +13703,25 @@ def __init__( @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 @@ -14767,29 +13731,25 @@ def __init__( @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 @@ -14799,21 +13759,20 @@ def __init__( @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, 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, 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, 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, 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, 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. + 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, 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. """ - credentials_email: Optional["WriteCredentialsEmail"] = None first_name: Optional[str] = None home_folder_id: Optional[str] = None @@ -14823,18 +13782,15 @@ class WriteUser(model.Model): models_dir_validated: Optional[bool] = None ui_state: Optional[MutableMapping[str, Any]] = 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 - ): + 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): self.credentials_email = credentials_email self.first_name = first_name self.home_folder_id = home_folder_id @@ -14848,20 +13804,19 @@ def __init__( @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") - 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. + Attributes: + name: Name of user attribute + label: Human-friendly label for user attribute + type: Type of user attribute ("string", "number", "datetime", "yesno", "zipcode") + 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. """ - name: str label: str type: str @@ -14871,18 +13826,15 @@ class WriteUserAttribute(model.Model): user_can_edit: Optional[bool] = None hidden_value_domain_whitelist: 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 - ): + 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): self.name = name self.label = label self.type = type @@ -14896,41 +13848,40 @@ def __init__( @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 @@ -14945,23 +13896,20 @@ 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 @@ -14976,7 +13924,6 @@ def __init__( self.alerts_links = alerts_links self.folders_mentions = folders_mentions - import functools # noqa:E402 forward_ref_structure_hook = functools.partial( @@ -14985,14 +13932,12 @@ def __init__( 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 )