looker-sdk 25.16.0__py3-none-any.whl → 25.18.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,7 +21,7 @@
21
21
  # SOFTWARE.
22
22
  #
23
23
 
24
- # 472 API methods
24
+ # 476 API methods
25
25
 
26
26
 
27
27
  # NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0
@@ -417,7 +417,10 @@ class Looker40SDK(api_methods.APIMethods):
417
417
  #
418
418
  # See 'login' for more detail on the access token and how to use it.
419
419
  #
420
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
420
+ # In [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview) this call will be denied unless all of the following criteria are met:
421
+ # 1. The calling user is an [API-only Service Account](https://cloud.google.com/looker/docs/looker-core-user-management#creating_an_api-only_service_account) with the Admin role
422
+ # 2. The target user is an [Embed User type](https://cloud.google.com/looker/docs/r/single-sign-on-embedding)
423
+ # Regular user types can not be impersonated in [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). If your application needs to call the API for these users, use OAuth authentication instead.
421
424
  #
422
425
  # POST /login/{user_id} -> mdls.AccessToken
423
426
  def login_user(
@@ -5025,6 +5028,76 @@ class Looker40SDK(api_methods.APIMethods):
5025
5028
  )
5026
5029
  return response
5027
5030
 
5031
+ # ### Search LookML Dashboards
5032
+ #
5033
+ # Returns an array of **LookML Dashboard** objects that match the specified search criteria.
5034
+ # Note, this only returns LookML Dashboards in production.
5035
+ #
5036
+ # If multiple search params are given and `filter_or` is FALSE or not specified,
5037
+ # search params are combined in a logical AND operation.
5038
+ # Only rows that match *all* search param criteria will be returned.
5039
+ #
5040
+ # If `filter_or` is TRUE, multiple search params are combined in a logical OR operation.
5041
+ # Results will include rows that match **any** of the search criteria.
5042
+ #
5043
+ # String search params use case-insensitive matching.
5044
+ # String search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.
5045
+ # example="dan%" will match "danger" and "Danzig" but not "David"
5046
+ # example="D_m%" will match "Damage" and "dump"
5047
+ #
5048
+ # Integer search params can accept a single value or a comma separated list of values. The multiple
5049
+ # values will be combined under a logical OR operation - results will match at least one of
5050
+ # the given values.
5051
+ #
5052
+ # Most search params can accept "IS NULL" and "NOT NULL" as special expressions to match
5053
+ # or exclude (respectively) rows where the column is null.
5054
+ #
5055
+ # Boolean search params accept only "true" and "false" as values.
5056
+ #
5057
+ #
5058
+ # The parameters `limit`, and `offset` are recommended for fetching results in page-size chunks.
5059
+ #
5060
+ # Get a **single LookML dashboard** by id with [dashboard_lookml()](#!/Dashboard/dashboard_lookml)
5061
+ #
5062
+ # GET /dashboards/lookml/search -> mdls.DashboardLookml
5063
+ def search_lookml_dashboards(
5064
+ self,
5065
+ # Filter on a particular folder.
5066
+ folder_id: Optional[str] = None,
5067
+ # Match LookML Dashboard title.
5068
+ title: Optional[str] = None,
5069
+ # Filter on a content favorite id.
5070
+ content_favorite_id: Optional[str] = None,
5071
+ # Requested fields.
5072
+ fields: Optional[str] = None,
5073
+ # Number of results to return. (used with offset and takes priority over page and per_page)
5074
+ limit: Optional[int] = None,
5075
+ # Number of results to skip before returning any. (used with limit and takes priority over page and per_page)
5076
+ offset: Optional[int] = None,
5077
+ # One or more fields to sort by. Sortable fields: [:title, :id, :folder_id, :content_favorite_id, :content_metadata_id]
5078
+ sorts: Optional[str] = None,
5079
+ transport_options: Optional[transport.TransportOptions] = None,
5080
+ ) -> mdls.DashboardLookml:
5081
+ """Search LookML Dashboards"""
5082
+ response = cast(
5083
+ mdls.DashboardLookml,
5084
+ self.get(
5085
+ path="/dashboards/lookml/search",
5086
+ structure=mdls.DashboardLookml,
5087
+ query_params={
5088
+ "folder_id": folder_id,
5089
+ "title": title,
5090
+ "content_favorite_id": content_favorite_id,
5091
+ "fields": fields,
5092
+ "limit": limit,
5093
+ "offset": offset,
5094
+ "sorts": sorts,
5095
+ },
5096
+ transport_options=transport_options,
5097
+ ),
5098
+ )
5099
+ return response
5100
+
5028
5101
  # ### Get lookml of a UDD
5029
5102
  #
5030
5103
  # Returns a JSON object that contains the dashboard id and the full lookml
@@ -6981,6 +7054,30 @@ class Looker40SDK(api_methods.APIMethods):
6981
7054
  )
6982
7055
  return response
6983
7056
 
7057
+ # Checks to see if the user is able to connect to their integration hub
7058
+ #
7059
+ # GET /integration_hubs/{integration_hub_id}/health -> mdls.IntegrationHubHealthResult
7060
+ def get_integration_hub_health(
7061
+ self,
7062
+ # Id of integration_hub
7063
+ integration_hub_id: str,
7064
+ # Requested fields.
7065
+ fields: Optional[str] = None,
7066
+ transport_options: Optional[transport.TransportOptions] = None,
7067
+ ) -> mdls.IntegrationHubHealthResult:
7068
+ """Check the health of Integration Hub"""
7069
+ integration_hub_id = self.encode_path_param(integration_hub_id)
7070
+ response = cast(
7071
+ mdls.IntegrationHubHealthResult,
7072
+ self.get(
7073
+ path=f"/integration_hubs/{integration_hub_id}/health",
7074
+ structure=mdls.IntegrationHubHealthResult,
7075
+ query_params={"fields": fields},
7076
+ transport_options=transport_options,
7077
+ ),
7078
+ )
7079
+ return response
7080
+
6984
7081
  # 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.
6985
7082
  #
6986
7083
  # POST /integration_hubs/{integration_hub_id}/accept_legal_agreement -> mdls.IntegrationHub
@@ -10348,6 +10445,8 @@ class Looker40SDK(api_methods.APIMethods):
10348
10445
  fields: Optional[str] = None,
10349
10446
  # Optional list of ids to get specific roles.
10350
10447
  ids: Optional[mdls.DelimSequence[str]] = None,
10448
+ # Get all Looker support roles.
10449
+ get_all_support_roles: Optional[bool] = None,
10351
10450
  transport_options: Optional[transport.TransportOptions] = None,
10352
10451
  ) -> Sequence[mdls.Role]:
10353
10452
  """Get All Roles"""
@@ -10356,7 +10455,11 @@ class Looker40SDK(api_methods.APIMethods):
10356
10455
  self.get(
10357
10456
  path="/roles",
10358
10457
  structure=Sequence[mdls.Role],
10359
- query_params={"fields": fields, "ids": ids},
10458
+ query_params={
10459
+ "fields": fields,
10460
+ "ids": ids,
10461
+ "get_all_support_roles": get_all_support_roles,
10462
+ },
10360
10463
  transport_options=transport_options,
10361
10464
  ),
10362
10465
  )
@@ -10426,8 +10529,6 @@ class Looker40SDK(api_methods.APIMethods):
10426
10529
  built_in: Optional[bool] = None,
10427
10530
  # Combine given search criteria in a boolean OR expression.
10428
10531
  filter_or: Optional[bool] = None,
10429
- # Search for Looker support roles.
10430
- is_support_role: Optional[bool] = None,
10431
10532
  transport_options: Optional[transport.TransportOptions] = None,
10432
10533
  ) -> Sequence[mdls.Role]:
10433
10534
  """Search Roles"""
@@ -10445,7 +10546,6 @@ class Looker40SDK(api_methods.APIMethods):
10445
10546
  "name": name,
10446
10547
  "built_in": built_in,
10447
10548
  "filter_or": filter_or,
10448
- "is_support_role": is_support_role,
10449
10549
  },
10450
10550
  transport_options=transport_options,
10451
10551
  ),
@@ -12011,13 +12111,13 @@ class Looker40SDK(api_methods.APIMethods):
12011
12111
  first_name: Optional[str] = None,
12012
12112
  # Match Last name.
12013
12113
  last_name: Optional[str] = None,
12014
- # Search for user accounts associated with Looker employees
12114
+ # Search for user accounts associated with Looker employees. Availability of this filter is limited to users with permission to view complete user details.
12015
12115
  verified_looker_employee: Optional[bool] = None,
12016
12116
  # Search for only embed users
12017
12117
  embed_user: Optional[bool] = None,
12018
- # Search for the user with this email address
12118
+ # Search for the user with this email address. Availability of this filter is limited to users with permission to view complete user details.
12019
12119
  email: Optional[str] = None,
12020
- # Search for disabled user accounts
12120
+ # Search for disabled user accounts. Availability of this filter is limited to users with permission to view complete user details.
12021
12121
  is_disabled: Optional[bool] = None,
12022
12122
  # Combine given search criteria in a boolean OR expression
12023
12123
  filter_or: Optional[bool] = None,
@@ -12025,8 +12125,10 @@ class Looker40SDK(api_methods.APIMethods):
12025
12125
  content_metadata_id: Optional[str] = None,
12026
12126
  # Search for users who are direct members of this group
12027
12127
  group_id: Optional[str] = None,
12028
- # Search for users who can manage API3 credentials
12128
+ # Search for users who can manage API3 credentials. This field may only be applicable for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). Availability of this filter is limited to users with permission to view complete user details. This is an experimental feature and may not yet be available on your instance.
12029
12129
  can_manage_api3_creds: Optional[bool] = None,
12130
+ # Search for service account users. Send true to get only service accounts, or false to get all other types of users. This field may only be applicable for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). Availability of this filter is limited to users with permission to view complete user details. This is an experimental feature and may not yet be available on your instance.
12131
+ is_service_account: Optional[bool] = None,
12030
12132
  transport_options: Optional[transport.TransportOptions] = None,
12031
12133
  ) -> Sequence[mdls.User]:
12032
12134
  """Search Users"""
@@ -12053,6 +12155,7 @@ class Looker40SDK(api_methods.APIMethods):
12053
12155
  "content_metadata_id": content_metadata_id,
12054
12156
  "group_id": group_id,
12055
12157
  "can_manage_api3_creds": can_manage_api3_creds,
12158
+ "is_service_account": is_service_account,
12056
12159
  },
12057
12160
  transport_options=transport_options,
12058
12161
  ),
@@ -13270,6 +13373,61 @@ class Looker40SDK(api_methods.APIMethods):
13270
13373
  )
13271
13374
  return response
13272
13375
 
13376
+ # ### Create a service account with the specified information. This action is restricted to Looker admins.
13377
+ #
13378
+ # Calls to this endpoint may only be available for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
13379
+ #
13380
+ # POST /users/service_accounts -> mdls.ServiceAccount
13381
+ def create_service_account(
13382
+ self,
13383
+ body: mdls.WriteServiceAccount,
13384
+ # Requested fields.
13385
+ fields: Optional[str] = None,
13386
+ transport_options: Optional[transport.TransportOptions] = None,
13387
+ ) -> mdls.ServiceAccount:
13388
+ """Create Service Account"""
13389
+ response = cast(
13390
+ mdls.ServiceAccount,
13391
+ self.post(
13392
+ path="/users/service_accounts",
13393
+ structure=mdls.ServiceAccount,
13394
+ query_params={"fields": fields},
13395
+ body=body,
13396
+ transport_options=transport_options,
13397
+ ),
13398
+ )
13399
+ return response
13400
+
13401
+ # ### Update information for a specific service account. This action is restricted to Looker admins.
13402
+ #
13403
+ # This endpoint is exclusively for updating service accounts. To update a regular user, please use the `PATCH /api/3.x/users/:user_id` endpoint instead.
13404
+ #
13405
+ # Calls to this endpoint may only be available for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
13406
+ #
13407
+ # PATCH /users/service_accounts/{user_id} -> mdls.ServiceAccount
13408
+ def update_service_account(
13409
+ self,
13410
+ # Id of service account
13411
+ user_id: str,
13412
+ body: mdls.WriteServiceAccount,
13413
+ # Requested fields.
13414
+ fields: Optional[str] = None,
13415
+ transport_options: Optional[transport.TransportOptions] = None,
13416
+ ) -> mdls.ServiceAccount:
13417
+ """Update Service Account"""
13418
+ user_id = self.encode_path_param(user_id)
13419
+ response = cast(
13420
+ mdls.ServiceAccount,
13421
+ self.patch(
13422
+ path=f"/users/service_accounts/{user_id}",
13423
+ structure=mdls.ServiceAccount,
13424
+ query_params={"fields": fields},
13425
+ body=body,
13426
+ transport_options=transport_options,
13427
+ ),
13428
+ )
13429
+ return response
13430
+
13273
13431
  # endregion
13274
13432
 
13275
13433
  # region UserAttribute: Manage User Attributes
@@ -21,7 +21,7 @@
21
21
  # SOFTWARE.
22
22
  #
23
23
 
24
- # 374 API models: 287 Spec, 0 Request, 63 Write, 24 Enum
24
+ # 377 API models: 289 Spec, 0 Request, 64 Write, 24 Enum
25
25
 
26
26
 
27
27
  # NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0
@@ -1816,6 +1816,7 @@ class ContentValidationDashboardElement(model.Model):
1816
1816
  type: Type
1817
1817
  rich_content_json: JSON with all the properties required for rich editor and buttons elements
1818
1818
  extension_id: Extension ID
1819
+ aria_description: Custom ARIA description text
1819
1820
  """
1820
1821
 
1821
1822
  body_text: Optional[str] = None
@@ -1834,6 +1835,7 @@ class ContentValidationDashboardElement(model.Model):
1834
1835
  type: Optional[str] = None
1835
1836
  rich_content_json: Optional[str] = None
1836
1837
  extension_id: Optional[str] = None
1838
+ aria_description: Optional[str] = None
1837
1839
 
1838
1840
  def __init__(
1839
1841
  self,
@@ -1853,7 +1855,8 @@ class ContentValidationDashboardElement(model.Model):
1853
1855
  title_text: Optional[str] = None,
1854
1856
  type: Optional[str] = None,
1855
1857
  rich_content_json: Optional[str] = None,
1856
- extension_id: Optional[str] = None
1858
+ extension_id: Optional[str] = None,
1859
+ aria_description: Optional[str] = None
1857
1860
  ):
1858
1861
  self.body_text = body_text
1859
1862
  self.dashboard_id = dashboard_id
@@ -1871,6 +1874,7 @@ class ContentValidationDashboardElement(model.Model):
1871
1874
  self.type = type
1872
1875
  self.rich_content_json = rich_content_json
1873
1876
  self.extension_id = extension_id
1877
+ self.aria_description = aria_description
1874
1878
 
1875
1879
 
1876
1880
  @attr.s(auto_attribs=True, init=False)
@@ -3634,6 +3638,7 @@ class DashboardElement(model.Model):
3634
3638
  title_text_as_html: Text tile title text as Html
3635
3639
  subtitle_text_as_html: Text tile subtitle text as Html
3636
3640
  extension_id: Extension ID
3641
+ aria_description: Custom ARIA description text
3637
3642
  """
3638
3643
 
3639
3644
  can: Optional[MutableMapping[str, bool]] = None
@@ -3666,6 +3671,7 @@ class DashboardElement(model.Model):
3666
3671
  title_text_as_html: Optional[str] = None
3667
3672
  subtitle_text_as_html: Optional[str] = None
3668
3673
  extension_id: Optional[str] = None
3674
+ aria_description: Optional[str] = None
3669
3675
 
3670
3676
  def __init__(
3671
3677
  self,
@@ -3699,7 +3705,8 @@ class DashboardElement(model.Model):
3699
3705
  rich_content_json: Optional[str] = None,
3700
3706
  title_text_as_html: Optional[str] = None,
3701
3707
  subtitle_text_as_html: Optional[str] = None,
3702
- extension_id: Optional[str] = None
3708
+ extension_id: Optional[str] = None,
3709
+ aria_description: Optional[str] = None
3703
3710
  ):
3704
3711
  self.can = can
3705
3712
  self.body_text = body_text
@@ -3731,6 +3738,7 @@ class DashboardElement(model.Model):
3731
3738
  self.title_text_as_html = title_text_as_html
3732
3739
  self.subtitle_text_as_html = subtitle_text_as_html
3733
3740
  self.extension_id = extension_id
3741
+ self.aria_description = aria_description
3734
3742
 
3735
3743
 
3736
3744
  @attr.s(auto_attribs=True, init=False)
@@ -3824,6 +3832,9 @@ class DashboardLayout(model.Model):
3824
3832
  deleted: Whether or not the dashboard layout is deleted.
3825
3833
  dashboard_title: Title extracted from the dashboard this layout represents.
3826
3834
  dashboard_layout_components: Components
3835
+ label: Label
3836
+ description: Description
3837
+ order: Order
3827
3838
  """
3828
3839
 
3829
3840
  can: Optional[MutableMapping[str, bool]] = None
@@ -3836,6 +3847,9 @@ class DashboardLayout(model.Model):
3836
3847
  deleted: Optional[bool] = None
3837
3848
  dashboard_title: Optional[str] = None
3838
3849
  dashboard_layout_components: Optional[Sequence["DashboardLayoutComponent"]] = None
3850
+ label: Optional[str] = None
3851
+ description: Optional[str] = None
3852
+ order: Optional[int] = None
3839
3853
 
3840
3854
  def __init__(
3841
3855
  self,
@@ -3851,7 +3865,10 @@ class DashboardLayout(model.Model):
3851
3865
  dashboard_title: Optional[str] = None,
3852
3866
  dashboard_layout_components: Optional[
3853
3867
  Sequence["DashboardLayoutComponent"]
3854
- ] = None
3868
+ ] = None,
3869
+ label: Optional[str] = None,
3870
+ description: Optional[str] = None,
3871
+ order: Optional[int] = None
3855
3872
  ):
3856
3873
  self.can = can
3857
3874
  self.id = id
@@ -3863,6 +3880,9 @@ class DashboardLayout(model.Model):
3863
3880
  self.deleted = deleted
3864
3881
  self.dashboard_title = dashboard_title
3865
3882
  self.dashboard_layout_components = dashboard_layout_components
3883
+ self.label = label
3884
+ self.description = description
3885
+ self.order = order
3866
3886
 
3867
3887
 
3868
3888
  @attr.s(auto_attribs=True, init=False)
@@ -6416,6 +6436,24 @@ class IntegrationHub(model.Model):
6416
6436
  self.legal_agreement_text = legal_agreement_text
6417
6437
 
6418
6438
 
6439
+ @attr.s(auto_attribs=True, init=False)
6440
+ class IntegrationHubHealthResult(model.Model):
6441
+ """
6442
+ Attributes:
6443
+ success: Whether or not the health check was successful
6444
+ message: A message representing the results of the health check.
6445
+ """
6446
+
6447
+ success: Optional[bool] = None
6448
+ message: Optional[str] = None
6449
+
6450
+ def __init__(
6451
+ self, *, success: Optional[bool] = None, message: Optional[str] = None
6452
+ ):
6453
+ self.success = success
6454
+ self.message = message
6455
+
6456
+
6419
6457
  @attr.s(auto_attribs=True, init=False)
6420
6458
  class IntegrationParam(model.Model):
6421
6459
  """
@@ -7953,6 +7991,7 @@ class LookmlModelExploreField(model.Model):
7953
7991
  type: The LookML type of the field.
7954
7992
  user_attribute_filter_types: 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".
7955
7993
  value_format: If specified, the LookML value format string for formatting values of this field.
7994
+ value_format_name: If specified, the name of the value format, as defined in the LookML model.
7956
7995
  view: The name of the view this field belongs to.
7957
7996
  view_label: The human-readable label of the view the field belongs to.
7958
7997
  dynamic: Whether this field was specified in "dynamic_fields" and is not part of the model.
@@ -8016,6 +8055,7 @@ class LookmlModelExploreField(model.Model):
8016
8055
  type: Optional[str] = None
8017
8056
  user_attribute_filter_types: Optional[Sequence["UserAttributeFilterTypes"]] = None
8018
8057
  value_format: Optional[str] = None
8058
+ value_format_name: Optional[str] = None
8019
8059
  view: Optional[str] = None
8020
8060
  view_label: Optional[str] = None
8021
8061
  dynamic: Optional[bool] = None
@@ -8083,6 +8123,7 @@ class LookmlModelExploreField(model.Model):
8083
8123
  Sequence["UserAttributeFilterTypes"]
8084
8124
  ] = None,
8085
8125
  value_format: Optional[str] = None,
8126
+ value_format_name: Optional[str] = None,
8086
8127
  view: Optional[str] = None,
8087
8128
  view_label: Optional[str] = None,
8088
8129
  dynamic: Optional[bool] = None,
@@ -8143,6 +8184,7 @@ class LookmlModelExploreField(model.Model):
8143
8184
  self.type = type
8144
8185
  self.user_attribute_filter_types = user_attribute_filter_types
8145
8186
  self.value_format = value_format
8187
+ self.value_format_name = value_format_name
8146
8188
  self.view = view
8147
8189
  self.view_label = view_label
8148
8190
  self.dynamic = dynamic
@@ -11844,6 +11886,59 @@ class SecretType(enum.Enum):
11844
11886
  SecretType.__new__ = model.safe_enum__new__ # type: ignore
11845
11887
 
11846
11888
 
11889
+ @attr.s(auto_attribs=True, init=False)
11890
+ class ServiceAccount(model.Model):
11891
+ """
11892
+ Attributes:
11893
+ can: Operations the current user is able to perform on this object
11894
+ id: Unique Id of the service account
11895
+ service_account_name: Display name of the service account.
11896
+ is_service_account: Indicates whether this user is a service account
11897
+ is_disabled: Indicates if the service account is disabled
11898
+ group_ids: Array of ids of the groups associated with this service account
11899
+ role_ids: Array of ids of the roles associated with this service account
11900
+ credentials_api3: API3 credentials for the service account
11901
+ created_at: Service account creation timestamp
11902
+ url: Link to get this item
11903
+ """
11904
+
11905
+ can: Optional[MutableMapping[str, bool]] = None
11906
+ id: Optional[str] = None
11907
+ service_account_name: Optional[str] = None
11908
+ is_service_account: Optional[bool] = None
11909
+ is_disabled: Optional[bool] = None
11910
+ group_ids: Optional[Sequence[str]] = None
11911
+ role_ids: Optional[Sequence[str]] = None
11912
+ credentials_api3: Optional[Sequence["CredentialsApi3"]] = None
11913
+ created_at: Optional[datetime.datetime] = None
11914
+ url: Optional[str] = None
11915
+
11916
+ def __init__(
11917
+ self,
11918
+ *,
11919
+ can: Optional[MutableMapping[str, bool]] = None,
11920
+ id: Optional[str] = None,
11921
+ service_account_name: Optional[str] = None,
11922
+ is_service_account: Optional[bool] = None,
11923
+ is_disabled: Optional[bool] = None,
11924
+ group_ids: Optional[Sequence[str]] = None,
11925
+ role_ids: Optional[Sequence[str]] = None,
11926
+ credentials_api3: Optional[Sequence["CredentialsApi3"]] = None,
11927
+ created_at: Optional[datetime.datetime] = None,
11928
+ url: Optional[str] = None
11929
+ ):
11930
+ self.can = can
11931
+ self.id = id
11932
+ self.service_account_name = service_account_name
11933
+ self.is_service_account = is_service_account
11934
+ self.is_disabled = is_disabled
11935
+ self.group_ids = group_ids
11936
+ self.role_ids = role_ids
11937
+ self.credentials_api3 = credentials_api3
11938
+ self.created_at = created_at
11939
+ self.url = url
11940
+
11941
+
11847
11942
  @attr.s(auto_attribs=True, init=False)
11848
11943
  class Session(model.Model):
11849
11944
  """
@@ -12105,6 +12200,11 @@ class SmtpSettings(model.Model):
12105
12200
  port: SMTP Server's port
12106
12201
  enable_starttls_auto: Is TLS encryption enabled?
12107
12202
  ssl_version: TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2".
12203
+ auth_type: Auth Type
12204
+ client_id: The OAuth Client ID
12205
+ client_secret: The OAuth Client Secret
12206
+ token_endpoint: The OAuth Token Endpoint
12207
+ scopes: The OAuth Scopes
12108
12208
  default_smtp: Whether to enable built-in Looker SMTP
12109
12209
  """
12110
12210
 
@@ -12115,6 +12215,11 @@ class SmtpSettings(model.Model):
12115
12215
  port: Optional[int] = None
12116
12216
  enable_starttls_auto: Optional[bool] = None
12117
12217
  ssl_version: Optional["SslVersion"] = None
12218
+ auth_type: Optional[str] = None
12219
+ client_id: Optional[str] = None
12220
+ client_secret: Optional[str] = None
12221
+ token_endpoint: Optional[str] = None
12222
+ scopes: Optional[str] = None
12118
12223
  default_smtp: Optional[bool] = None
12119
12224
 
12120
12225
  def __init__(
@@ -12127,6 +12232,11 @@ class SmtpSettings(model.Model):
12127
12232
  port: Optional[int] = None,
12128
12233
  enable_starttls_auto: Optional[bool] = None,
12129
12234
  ssl_version: Optional["SslVersion"] = None,
12235
+ auth_type: Optional[str] = None,
12236
+ client_id: Optional[str] = None,
12237
+ client_secret: Optional[str] = None,
12238
+ token_endpoint: Optional[str] = None,
12239
+ scopes: Optional[str] = None,
12130
12240
  default_smtp: Optional[bool] = None
12131
12241
  ):
12132
12242
  self.address = address
@@ -12136,6 +12246,11 @@ class SmtpSettings(model.Model):
12136
12246
  self.port = port
12137
12247
  self.enable_starttls_auto = enable_starttls_auto
12138
12248
  self.ssl_version = ssl_version
12249
+ self.auth_type = auth_type
12250
+ self.client_id = client_id
12251
+ self.client_secret = client_secret
12252
+ self.token_endpoint = token_endpoint
12253
+ self.scopes = scopes
12139
12254
  self.default_smtp = default_smtp
12140
12255
 
12141
12256
 
@@ -13150,8 +13265,10 @@ class User(model.Model):
13150
13265
  allow_normal_group_membership: User can be a direct member of a normal Looker group.
13151
13266
  allow_roles_from_normal_groups: User can inherit roles from a normal Looker group.
13152
13267
  embed_group_folder_id: (Embed only) ID of user's group folder based on the external_group_id optionally specified during embed user login
13153
- is_iam_admin: User is an IAM Admin - only available in Looker (Google Cloud core). The is_iam_admin is not returned by default. Please explicitly request this attribute if needed via the fields query param. Note: Including the optional is_iam_admin attribute can increase API latency. For best performance, use this attribute only when filtering for users with the 'Admin via IAM' role. When using this filter, always paginate your results with the offset and limit fields to optimize response time.
13154
- can_manage_api3_creds: Indicates if the user can manage API3 credentials
13268
+ is_iam_admin: User is an IAM Admin. This field may only be applicable for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). The is_iam_admin is not returned by default. Please explicitly request this attribute if needed via the fields query param. Note: Including the optional is_iam_admin attribute can increase API latency. For best performance, use this attribute only when filtering for users with the 'Admin via IAM' role. When using this filter, always paginate your results with the offset and limit fields to optimize response time.
13269
+ can_manage_api3_creds: Indicates if the user can manage API3 credentials. This field may only be applicable for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). This is an experimental feature and may not yet be available on your instance.
13270
+ is_service_account: Indicates if this user is a service account. This field may only be applicable for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). This is an experimental feature and may not yet be available on your instance.
13271
+ service_account_name: The display name of the service account. This field is omitted for non service account users. This field may only be applicable for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). This is an experimental feature and may not yet be available on your instance.
13155
13272
  url: Link to get this item
13156
13273
  """
13157
13274
 
@@ -13192,6 +13309,8 @@ class User(model.Model):
13192
13309
  embed_group_folder_id: Optional[str] = None
13193
13310
  is_iam_admin: Optional[bool] = None
13194
13311
  can_manage_api3_creds: Optional[bool] = None
13312
+ is_service_account: Optional[bool] = None
13313
+ service_account_name: Optional[str] = None
13195
13314
  url: Optional[str] = None
13196
13315
 
13197
13316
  def __init__(
@@ -13234,6 +13353,8 @@ class User(model.Model):
13234
13353
  embed_group_folder_id: Optional[str] = None,
13235
13354
  is_iam_admin: Optional[bool] = None,
13236
13355
  can_manage_api3_creds: Optional[bool] = None,
13356
+ is_service_account: Optional[bool] = None,
13357
+ service_account_name: Optional[str] = None,
13237
13358
  url: Optional[str] = None
13238
13359
  ):
13239
13360
  self.can = can
@@ -13273,6 +13394,8 @@ class User(model.Model):
13273
13394
  self.embed_group_folder_id = embed_group_folder_id
13274
13395
  self.is_iam_admin = is_iam_admin
13275
13396
  self.can_manage_api3_creds = can_manage_api3_creds
13397
+ self.is_service_account = is_service_account
13398
+ self.service_account_name = service_account_name
13276
13399
  self.url = url
13277
13400
 
13278
13401
 
@@ -14494,6 +14617,7 @@ class WriteDashboardElement(model.Model):
14494
14617
  type: Type
14495
14618
  rich_content_json: JSON with all the properties required for rich editor and buttons elements
14496
14619
  extension_id: Extension ID
14620
+ aria_description: Custom ARIA description text
14497
14621
  """
14498
14622
 
14499
14623
  body_text: Optional[str] = None
@@ -14516,6 +14640,7 @@ class WriteDashboardElement(model.Model):
14516
14640
  type: Optional[str] = None
14517
14641
  rich_content_json: Optional[str] = None
14518
14642
  extension_id: Optional[str] = None
14643
+ aria_description: Optional[str] = None
14519
14644
 
14520
14645
  def __init__(
14521
14646
  self,
@@ -14541,7 +14666,8 @@ class WriteDashboardElement(model.Model):
14541
14666
  title_text: Optional[str] = None,
14542
14667
  type: Optional[str] = None,
14543
14668
  rich_content_json: Optional[str] = None,
14544
- extension_id: Optional[str] = None
14669
+ extension_id: Optional[str] = None,
14670
+ aria_description: Optional[str] = None
14545
14671
  ):
14546
14672
  self.body_text = body_text
14547
14673
  self.dashboard_id = dashboard_id
@@ -14563,6 +14689,7 @@ class WriteDashboardElement(model.Model):
14563
14689
  self.type = type
14564
14690
  self.rich_content_json = rich_content_json
14565
14691
  self.extension_id = extension_id
14692
+ self.aria_description = aria_description
14566
14693
 
14567
14694
 
14568
14695
  @attr.s(auto_attribs=True, init=False)
@@ -14641,6 +14768,9 @@ class WriteDashboardLayout(model.Model):
14641
14768
  active: Is Active
14642
14769
  column_width: Column Width
14643
14770
  width: Width
14771
+ label: Label
14772
+ description: Description
14773
+ order: Order
14644
14774
  """
14645
14775
 
14646
14776
  dashboard_id: Optional[str] = None
@@ -14648,6 +14778,9 @@ class WriteDashboardLayout(model.Model):
14648
14778
  active: Optional[bool] = None
14649
14779
  column_width: Optional[int] = None
14650
14780
  width: Optional[int] = None
14781
+ label: Optional[str] = None
14782
+ description: Optional[str] = None
14783
+ order: Optional[int] = None
14651
14784
 
14652
14785
  def __init__(
14653
14786
  self,
@@ -14656,13 +14789,19 @@ class WriteDashboardLayout(model.Model):
14656
14789
  type: Optional[str] = None,
14657
14790
  active: Optional[bool] = None,
14658
14791
  column_width: Optional[int] = None,
14659
- width: Optional[int] = None
14792
+ width: Optional[int] = None,
14793
+ label: Optional[str] = None,
14794
+ description: Optional[str] = None,
14795
+ order: Optional[int] = None
14660
14796
  ):
14661
14797
  self.dashboard_id = dashboard_id
14662
14798
  self.type = type
14663
14799
  self.active = active
14664
14800
  self.column_width = column_width
14665
14801
  self.width = width
14802
+ self.label = label
14803
+ self.description = description
14804
+ self.order = order
14666
14805
 
14667
14806
 
14668
14807
  @attr.s(auto_attribs=True, init=False)
@@ -16496,6 +16635,30 @@ class WriteScheduledPlan(model.Model):
16496
16635
  self.query_id = query_id
16497
16636
 
16498
16637
 
16638
+ @attr.s(auto_attribs=True, init=False)
16639
+ class WriteServiceAccount(model.Model):
16640
+ """
16641
+ Dynamic writeable type for ServiceAccount removes:
16642
+ can, id, is_service_account, group_ids, role_ids, credentials_api3, created_at, url
16643
+
16644
+ Attributes:
16645
+ service_account_name: Display name of the service account.
16646
+ is_disabled: Indicates if the service account is disabled
16647
+ """
16648
+
16649
+ service_account_name: Optional[str] = None
16650
+ is_disabled: Optional[bool] = None
16651
+
16652
+ def __init__(
16653
+ self,
16654
+ *,
16655
+ service_account_name: Optional[str] = None,
16656
+ is_disabled: Optional[bool] = None
16657
+ ):
16658
+ self.service_account_name = service_account_name
16659
+ self.is_disabled = is_disabled
16660
+
16661
+
16499
16662
  @attr.s(auto_attribs=True, init=False)
16500
16663
  class WriteSessionConfig(model.Model):
16501
16664
  """
@@ -16751,7 +16914,7 @@ class WriteTheme(model.Model):
16751
16914
  class WriteUser(model.Model):
16752
16915
  """
16753
16916
  Dynamic writeable type for User removes:
16754
- 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
16917
+ 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, is_service_account, service_account_name, url
16755
16918
 
16756
16919
  Attributes:
16757
16920
  credentials_email: Dynamic writeable type for CredentialsEmail removes:
@@ -16763,7 +16926,7 @@ class WriteUser(model.Model):
16763
16926
  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.
16764
16927
  models_dir_validated: User's dev workspace has been checked for presence of applicable production projects
16765
16928
  ui_state: Per user dictionary of undocumented state information owned by the Looker UI.
16766
- can_manage_api3_creds: Indicates if the user can manage API3 credentials
16929
+ can_manage_api3_creds: Indicates if the user can manage API3 credentials. This field may only be applicable for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview). This is an experimental feature and may not yet be available on your instance.
16767
16930
  """
16768
16931
 
16769
16932
  credentials_email: Optional["WriteCredentialsEmail"] = None
@@ -20,5 +20,5 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
21
  # THE SOFTWARE.
22
22
 
23
- sdk_version = "25.16"
23
+ sdk_version = "25.18"
24
24
  environment_prefix = "LOOKERSDK"
looker_sdk/version.py CHANGED
@@ -20,4 +20,4 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
21
  # THE SOFTWARE.
22
22
 
23
- __version__ = "25.16.0"
23
+ __version__ = "25.18.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: looker-sdk
3
- Version: 25.16.0
3
+ Version: 25.18.0
4
4
  Summary: Looker REST API
5
5
  Home-page: https://pypi.python.org/pypi/looker_sdk
6
6
  Author: Looker Data Sciences, Inc.
@@ -1,7 +1,7 @@
1
1
  looker_sdk/__init__.py,sha256=0UOw2v-BP1bNoBIIm-BnyKUpGQB3Zx-JZRmpYyLiIuY,2589
2
2
  looker_sdk/error.py,sha256=X1TcifswI_UGOTtM4-Fn_gRVunvbJbzfd_gUJbx6mV4,4957
3
3
  looker_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- looker_sdk/version.py,sha256=2MD8L-ARa5XTBgRuGAX1t9JyFAwRszz-wnvPP38JNZ0,1156
4
+ looker_sdk/version.py,sha256=a2AcQH0mG_srGOlk6lvj8tOL-D8uuwC_Hgdw7636LVE,1156
5
5
  looker_sdk/rtl/__init__.py,sha256=hgj6CO_Du2XcJ4bRYbhaVS3dvLxjCqPQDR8KwD9IPTQ,1132
6
6
  looker_sdk/rtl/api_methods.py,sha256=J-dm7UMyJajsJDCB0JMpGUmp80I8oPMs7cggdIaCWng,8862
7
7
  looker_sdk/rtl/api_settings.py,sha256=0QbmNhfgjBJNnr1CNEMxCHoiu908jT8amAtSAha1xS8,6953
@@ -14,10 +14,10 @@ looker_sdk/rtl/requests_transport.py,sha256=2lckuJyjeySAuAn7v-RA_xTjjWe53uCCLSWg
14
14
  looker_sdk/rtl/serialize.py,sha256=q8Nu2ZYsKLH5xedwQ6LP8cZGEThBU0BrvuWzgc1P2-4,4594
15
15
  looker_sdk/rtl/transport.py,sha256=zNCaGmmJBtF87iLS6xtSTwiyEXP0BDdMJafPn0_tIrk,3911
16
16
  looker_sdk/sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- looker_sdk/sdk/constants.py,sha256=lpqt7E5MB4cVFQ_koH4ASqW2qedDHnt4YspeiHzHR2A,1187
17
+ looker_sdk/sdk/constants.py,sha256=1jfzuYvwog0kkDeCgDvpU2kxcIv2Sr0j6IUwfAmtGw0,1187
18
18
  looker_sdk/sdk/api40/__init__.py,sha256=Dvx1t9vDBvgEl-p1eeP7ebEC6Q6wb6rASPi7nx3z7dg,18
19
- looker_sdk/sdk/api40/methods.py,sha256=4GIP4vImo_RYKkFDOHpOJRHo7xDB9dKiepGvGAOl1Ig,528129
20
- looker_sdk/sdk/api40/models.py,sha256=33OteED0XzC0EH18fWQj15Wx_OCSmGwlUau9kB9xSCM,686654
19
+ looker_sdk/sdk/api40/methods.py,sha256=UiPzMM5lhShONVnE2irkAu6E87B2614dbB-i-7lWe-A,536332
20
+ looker_sdk/sdk/api40/models.py,sha256=EmTQGIfHL03OEJvlFQbDwBnxyFeSPacWwiPDA-COJFs,693881
21
21
  tests/integration/__init__.py,sha256=K4tvUu8CgFRwtDhDNixHKDDb8uubXgevQBq8JmZvf8Y,63
22
22
  tests/integration/test_methods.py,sha256=GXeBAxKYLH45YsPDGduRxaoGKBNoxRX1Cxdo4a_2eW8,24977
23
23
  tests/integration/test_netrc.py,sha256=XJAzCh853Q0P6ZY_Cq6CtRHAqlvjGkBItgvxJMQw4Sw,1595
@@ -29,8 +29,8 @@ tests/rtl/test_auth_token.py,sha256=Ep4u0ushHqKiIkGgw-XVn1lSzPeH6pVmDB2bw-MXNAo,
29
29
  tests/rtl/test_requests_transport.py,sha256=mSsxudpAkKe-uSVOIzDrV0XCFlj_ACt6T1yzbUbuwG0,5442
30
30
  tests/rtl/test_serialize.py,sha256=1SC8jigZFFL3mrU2oSTnc2nbDxXve224_r3GaxEeU90,25917
31
31
  tests/rtl/test_transport.py,sha256=tI83LYOeuWEmkngXyRqMjW-pv-ipLPLj4t0hGD8zqL8,1555
32
- looker_sdk-25.16.0.dist-info/LICENSE.txt,sha256=N4Rmmbuo5EryYSCXcvjuXL1ZXwyXanRzuGP-dJzwsoE,1094
33
- looker_sdk-25.16.0.dist-info/METADATA,sha256=dbW6HPTmSgsiqgWbm88V6LxwXoShEyn_6MmowhAYTNU,7022
34
- looker_sdk-25.16.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
35
- looker_sdk-25.16.0.dist-info/top_level.txt,sha256=tDPNJRQM_A_Oncxlgxwvnzq7hZDWZaadt_nR8DmORTI,17
36
- looker_sdk-25.16.0.dist-info/RECORD,,
32
+ looker_sdk-25.18.0.dist-info/LICENSE.txt,sha256=N4Rmmbuo5EryYSCXcvjuXL1ZXwyXanRzuGP-dJzwsoE,1094
33
+ looker_sdk-25.18.0.dist-info/METADATA,sha256=dwQksBgIuJtYRmEm_XMTqujfnepzsz6TbI5wadKdUKU,7022
34
+ looker_sdk-25.18.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
35
+ looker_sdk-25.18.0.dist-info/top_level.txt,sha256=tDPNJRQM_A_Oncxlgxwvnzq7hZDWZaadt_nR8DmORTI,17
36
+ looker_sdk-25.18.0.dist-info/RECORD,,