looker-sdk 25.20.0__tar.gz → 26.0.0__tar.gz

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.
Files changed (42) hide show
  1. {looker_sdk-25.20.0/looker_sdk.egg-info → looker_sdk-26.0.0}/PKG-INFO +1 -1
  2. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/sdk/api40/methods.py +104 -63
  3. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/sdk/api40/models.py +150 -17
  4. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/sdk/constants.py +1 -1
  5. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/version.py +1 -1
  6. {looker_sdk-25.20.0 → looker_sdk-26.0.0/looker_sdk.egg-info}/PKG-INFO +1 -1
  7. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/LICENSE.txt +0 -0
  8. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/MANIFEST.in +0 -0
  9. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/README.rst +0 -0
  10. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/__init__.py +0 -0
  11. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/error.py +0 -0
  12. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/py.typed +0 -0
  13. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/rtl/__init__.py +0 -0
  14. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/rtl/api_methods.py +0 -0
  15. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/rtl/api_settings.py +0 -0
  16. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/rtl/auth_session.py +0 -0
  17. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/rtl/auth_token.py +0 -0
  18. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/rtl/constants.py +0 -0
  19. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/rtl/hooks.py +0 -0
  20. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/rtl/model.py +0 -0
  21. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/rtl/requests_transport.py +0 -0
  22. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/rtl/serialize.py +0 -0
  23. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/rtl/transport.py +0 -0
  24. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/sdk/__init__.py +0 -0
  25. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk/sdk/api40/__init__.py +0 -0
  26. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk.egg-info/SOURCES.txt +0 -0
  27. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk.egg-info/dependency_links.txt +0 -0
  28. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk.egg-info/requires.txt +0 -0
  29. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/looker_sdk.egg-info/top_level.txt +0 -0
  30. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/setup.cfg +0 -0
  31. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/setup.py +0 -0
  32. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/tests/integration/__init__.py +0 -0
  33. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/tests/integration/test_methods.py +0 -0
  34. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/tests/integration/test_netrc.py +0 -0
  35. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/tests/rtl/__init__.py +0 -0
  36. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/tests/rtl/test_api_methods.py +0 -0
  37. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/tests/rtl/test_api_settings.py +0 -0
  38. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/tests/rtl/test_auth_session.py +0 -0
  39. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/tests/rtl/test_auth_token.py +0 -0
  40. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/tests/rtl/test_requests_transport.py +0 -0
  41. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/tests/rtl/test_serialize.py +0 -0
  42. {looker_sdk-25.20.0 → looker_sdk-26.0.0}/tests/rtl/test_transport.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: looker_sdk
3
- Version: 25.20.0
3
+ Version: 26.0.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.
@@ -21,7 +21,7 @@
21
21
  # SOFTWARE.
22
22
  #
23
23
 
24
- # 476 API methods
24
+ # 478 API methods
25
25
 
26
26
 
27
27
  # NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0
@@ -3779,6 +3779,29 @@ class Looker40SDK(api_methods.APIMethods):
3779
3779
  )
3780
3780
  return response
3781
3781
 
3782
+ # ### Delete an OAuth Application.
3783
+ #
3784
+ # This is an OAuth Application which Looker uses to access external systems.
3785
+ #
3786
+ # DELETE /external_oauth_applications/{client_id} -> str
3787
+ def delete_external_oauth_application(
3788
+ self,
3789
+ # The client ID of the OAuth App to delete
3790
+ client_id: str,
3791
+ transport_options: Optional[transport.TransportOptions] = None,
3792
+ ) -> str:
3793
+ """Delete External OAuth Application"""
3794
+ client_id = self.encode_path_param(client_id)
3795
+ response = cast(
3796
+ str,
3797
+ self.delete(
3798
+ path=f"/external_oauth_applications/{client_id}",
3799
+ structure=str,
3800
+ transport_options=transport_options,
3801
+ ),
3802
+ )
3803
+ return response
3804
+
3782
3805
  # ### Create OAuth User state.
3783
3806
  #
3784
3807
  # POST /external_oauth_applications/user_state -> mdls.CreateOAuthApplicationUserStateResponse
@@ -4115,6 +4138,8 @@ class Looker40SDK(api_methods.APIMethods):
4115
4138
  look_id: Optional[str] = None,
4116
4139
  # Match board id(s). To create a list of multiple ids, use commas as separators
4117
4140
  board_id: Optional[str] = None,
4141
+ # Match lookml dashboard id(s). To create a list of multiple ids, use commas as separators
4142
+ lookml_dashboard_id: Optional[str] = None,
4118
4143
  # If true, and board_id is provided, returns the content favorites for all items on the board. If false, returns the content favorite for the board itself.
4119
4144
  include_board_items: Optional[bool] = None,
4120
4145
  # Number of results to return. (used with offset)
@@ -4142,6 +4167,7 @@ class Looker40SDK(api_methods.APIMethods):
4142
4167
  "dashboard_id": dashboard_id,
4143
4168
  "look_id": look_id,
4144
4169
  "board_id": board_id,
4170
+ "lookml_dashboard_id": lookml_dashboard_id,
4145
4171
  "include_board_items": include_board_items,
4146
4172
  "limit": limit,
4147
4173
  "offset": offset,
@@ -8536,6 +8562,10 @@ class Looker40SDK(api_methods.APIMethods):
8536
8562
  # metadata. The remote git repository MUST be configured with the Looker-generated deploy
8537
8563
  # key for this project prior to setting the project's `git_remote_url`.
8538
8564
  #
8565
+ # Note that Looker will validate the git connection when the `git_remote_url` is modified.
8566
+ # If Looker cannot connect to the remote repository (e.g. because the deploy key has not
8567
+ # been added), the update will fail with a 400 Bad Request error.
8568
+ #
8539
8569
  # To set up a Looker project with a git repository residing on the Looker server (a 'bare' git repo):
8540
8570
  #
8541
8571
  # 1. Call `update_session` to select the 'dev' workspace.
@@ -12130,7 +12160,7 @@ class Looker40SDK(api_methods.APIMethods):
12130
12160
  group_id: Optional[str] = None,
12131
12161
  # 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.
12132
12162
  can_manage_api3_creds: Optional[bool] = None,
12133
- # 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.
12163
+ # Search for service account users. Send true to get only service accounts, or false to get all other types of users. Availability of this filter is limited to users with permission to view complete user details.
12134
12164
  is_service_account: Optional[bool] = None,
12135
12165
  transport_options: Optional[transport.TransportOptions] = None,
12136
12166
  ) -> Sequence[mdls.User]:
@@ -12285,7 +12315,19 @@ class Looker40SDK(api_methods.APIMethods):
12285
12315
 
12286
12316
  # ### Delete the user with a specific id.
12287
12317
  #
12288
- # **DANGER** this will delete the user and all looks and other information owned by the user.
12318
+ # **This action cannot be undone.** If you want to keep the user's content, we recommend disabling their accounts instead of deleting them.
12319
+ #
12320
+ # Deletion will have the following impact:
12321
+ # * Their reports, Looks and dashboards will be moved to Trash.
12322
+ # * Any public URLs owned by them will no longer work.
12323
+ # * Schedules created by the users or that use their content will be deleted.
12324
+ # * Alerts will continue to run, but will not be visible or editable from the dashboard.
12325
+ #
12326
+ # The user cannot delete themselves.
12327
+ # The last administrator user cannot be deleted.
12328
+ #
12329
+ # Deleting Service Accounts via this endpoint is deprecated and can be blocked in future versions.
12330
+ # Please use the dedicated `delete_service_account` endpoint.
12289
12331
  #
12290
12332
  # DELETE /users/{user_id} -> str
12291
12333
  def delete_user(
@@ -12362,6 +12404,65 @@ class Looker40SDK(api_methods.APIMethods):
12362
12404
  )
12363
12405
  return response
12364
12406
 
12407
+ # ### Update information for a specific service account. This action is restricted to Looker admins.
12408
+ #
12409
+ # 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.
12410
+ #
12411
+ # PATCH /users/service_accounts/{user_id} -> mdls.ServiceAccount
12412
+ def update_service_account(
12413
+ self,
12414
+ # Id of service account
12415
+ user_id: str,
12416
+ body: mdls.WriteServiceAccount,
12417
+ # Requested fields.
12418
+ fields: Optional[str] = None,
12419
+ transport_options: Optional[transport.TransportOptions] = None,
12420
+ ) -> mdls.ServiceAccount:
12421
+ """Update Service Account"""
12422
+ user_id = self.encode_path_param(user_id)
12423
+ response = cast(
12424
+ mdls.ServiceAccount,
12425
+ self.patch(
12426
+ path=f"/users/service_accounts/{user_id}",
12427
+ structure=mdls.ServiceAccount,
12428
+ query_params={"fields": fields},
12429
+ body=body,
12430
+ transport_options=transport_options,
12431
+ ),
12432
+ )
12433
+ return response
12434
+
12435
+ # ### Delete the service account with a specific id.
12436
+ #
12437
+ # **This action cannot be undone.** If you want to keep the service account's content, we recommend disabling their accounts instead of deleting them.
12438
+ #
12439
+ # Deletion will have the following impact:
12440
+ # * Their reports, Looks and dashboards will be moved to Trash.
12441
+ # * Any public URLs owned by them will no longer work.
12442
+ # * Schedules created by the service account or that use their content will be deleted.
12443
+ # * Alerts will continue to run, but will not be visible or editable from the dashboard.
12444
+ #
12445
+ # The service account cannot delete itself.
12446
+ #
12447
+ # DELETE /users/service_accounts/{user_id} -> str
12448
+ def delete_service_account(
12449
+ self,
12450
+ # Id of service account user
12451
+ user_id: str,
12452
+ transport_options: Optional[transport.TransportOptions] = None,
12453
+ ) -> str:
12454
+ """Delete Service Account"""
12455
+ user_id = self.encode_path_param(user_id)
12456
+ response = cast(
12457
+ str,
12458
+ self.delete(
12459
+ path=f"/users/service_accounts/{user_id}",
12460
+ structure=str,
12461
+ transport_options=transport_options,
12462
+ ),
12463
+ )
12464
+ return response
12465
+
12365
12466
  # ### Email/password login information for the specified user.
12366
12467
  #
12367
12468
  # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
@@ -12596,8 +12697,6 @@ class Looker40SDK(api_methods.APIMethods):
12596
12697
 
12597
12698
  # ### Google authentication login information for the specified user.
12598
12699
  #
12599
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
12600
- #
12601
12700
  # GET /users/{user_id}/credentials_google -> mdls.CredentialsGoogle
12602
12701
  def user_credentials_google(
12603
12702
  self,
@@ -12622,8 +12721,6 @@ class Looker40SDK(api_methods.APIMethods):
12622
12721
 
12623
12722
  # ### Google authentication login information for the specified user.
12624
12723
  #
12625
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
12626
- #
12627
12724
  # DELETE /users/{user_id}/credentials_google -> str
12628
12725
  def delete_user_credentials_google(
12629
12726
  self,
@@ -12645,8 +12742,6 @@ class Looker40SDK(api_methods.APIMethods):
12645
12742
 
12646
12743
  # ### Saml authentication login information for the specified user.
12647
12744
  #
12648
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
12649
- #
12650
12745
  # GET /users/{user_id}/credentials_saml -> mdls.CredentialsSaml
12651
12746
  def user_credentials_saml(
12652
12747
  self,
@@ -12671,8 +12766,6 @@ class Looker40SDK(api_methods.APIMethods):
12671
12766
 
12672
12767
  # ### Saml authentication login information for the specified user.
12673
12768
  #
12674
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
12675
- #
12676
12769
  # DELETE /users/{user_id}/credentials_saml -> str
12677
12770
  def delete_user_credentials_saml(
12678
12771
  self,
@@ -12694,8 +12787,6 @@ class Looker40SDK(api_methods.APIMethods):
12694
12787
 
12695
12788
  # ### OpenID Connect (OIDC) authentication login information for the specified user.
12696
12789
  #
12697
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
12698
- #
12699
12790
  # GET /users/{user_id}/credentials_oidc -> mdls.CredentialsOIDC
12700
12791
  def user_credentials_oidc(
12701
12792
  self,
@@ -12720,8 +12811,6 @@ class Looker40SDK(api_methods.APIMethods):
12720
12811
 
12721
12812
  # ### OpenID Connect (OIDC) authentication login information for the specified user.
12722
12813
  #
12723
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
12724
- #
12725
12814
  # DELETE /users/{user_id}/credentials_oidc -> str
12726
12815
  def delete_user_credentials_oidc(
12727
12816
  self,
@@ -12743,8 +12832,6 @@ class Looker40SDK(api_methods.APIMethods):
12743
12832
 
12744
12833
  # ### API login information for the specified user. This is for the newer API keys that can be added for any user.
12745
12834
  #
12746
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
12747
- #
12748
12835
  # GET /users/{user_id}/credentials_api3/{credentials_api3_id} -> mdls.CredentialsApi3
12749
12836
  def user_credentials_api3(
12750
12837
  self,
@@ -12772,8 +12859,6 @@ class Looker40SDK(api_methods.APIMethods):
12772
12859
 
12773
12860
  # ### API login information for the specified user. This is for the newer API keys that can be added for any user.
12774
12861
  #
12775
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
12776
- #
12777
12862
  # PATCH /users/{user_id}/credentials_api3/{credentials_api3_id} -> mdls.CredentialsApi3
12778
12863
  def update_user_credentials_api3(
12779
12864
  self,
@@ -12803,8 +12888,6 @@ class Looker40SDK(api_methods.APIMethods):
12803
12888
 
12804
12889
  # ### API login information for the specified user. This is for the newer API keys that can be added for any user.
12805
12890
  #
12806
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
12807
- #
12808
12891
  # DELETE /users/{user_id}/credentials_api3/{credentials_api3_id} -> str
12809
12892
  def delete_user_credentials_api3(
12810
12893
  self,
@@ -12829,8 +12912,6 @@ class Looker40SDK(api_methods.APIMethods):
12829
12912
 
12830
12913
  # ### API login information for the specified user. This is for the newer API keys that can be added for any user.
12831
12914
  #
12832
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
12833
- #
12834
12915
  # GET /users/{user_id}/credentials_api3 -> Sequence[mdls.CredentialsApi3]
12835
12916
  def all_user_credentials_api3s(
12836
12917
  self,
@@ -12855,8 +12936,6 @@ class Looker40SDK(api_methods.APIMethods):
12855
12936
 
12856
12937
  # ### API login information for the specified user. This is for the newer API keys that can be added for any user.
12857
12938
  #
12858
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
12859
- #
12860
12939
  # POST /users/{user_id}/credentials_api3 -> mdls.CreateCredentialsApi3
12861
12940
  def create_user_credentials_api3(
12862
12941
  self,
@@ -13011,8 +13090,6 @@ class Looker40SDK(api_methods.APIMethods):
13011
13090
 
13012
13091
  # ### Web login session for the specified user.
13013
13092
  #
13014
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
13015
- #
13016
13093
  # GET /users/{user_id}/sessions/{session_id} -> mdls.Session
13017
13094
  def user_session(
13018
13095
  self,
@@ -13040,8 +13117,6 @@ class Looker40SDK(api_methods.APIMethods):
13040
13117
 
13041
13118
  # ### Web login session for the specified user.
13042
13119
  #
13043
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
13044
- #
13045
13120
  # DELETE /users/{user_id}/sessions/{session_id} -> str
13046
13121
  def delete_user_session(
13047
13122
  self,
@@ -13066,8 +13141,6 @@ class Looker40SDK(api_methods.APIMethods):
13066
13141
 
13067
13142
  # ### Web login session for the specified user.
13068
13143
  #
13069
- # Calls to this endpoint may be denied by [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
13070
- #
13071
13144
  # GET /users/{user_id}/sessions -> Sequence[mdls.Session]
13072
13145
  def all_user_sessions(
13073
13146
  self,
@@ -13378,8 +13451,6 @@ class Looker40SDK(api_methods.APIMethods):
13378
13451
 
13379
13452
  # ### Create a service account with the specified information. This action is restricted to Looker admins.
13380
13453
  #
13381
- # Calls to this endpoint may only be available for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
13382
- #
13383
13454
  # POST /users/service_accounts -> mdls.ServiceAccount
13384
13455
  def create_service_account(
13385
13456
  self,
@@ -13401,36 +13472,6 @@ class Looker40SDK(api_methods.APIMethods):
13401
13472
  )
13402
13473
  return response
13403
13474
 
13404
- # ### Update information for a specific service account. This action is restricted to Looker admins.
13405
- #
13406
- # 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.
13407
- #
13408
- # Calls to this endpoint may only be available for [Looker (Google Cloud core)](https://cloud.google.com/looker/docs/r/looker-core/overview).
13409
- #
13410
- # PATCH /users/service_accounts/{user_id} -> mdls.ServiceAccount
13411
- def update_service_account(
13412
- self,
13413
- # Id of service account
13414
- user_id: str,
13415
- body: mdls.WriteServiceAccount,
13416
- # Requested fields.
13417
- fields: Optional[str] = None,
13418
- transport_options: Optional[transport.TransportOptions] = None,
13419
- ) -> mdls.ServiceAccount:
13420
- """Update Service Account"""
13421
- user_id = self.encode_path_param(user_id)
13422
- response = cast(
13423
- mdls.ServiceAccount,
13424
- self.patch(
13425
- path=f"/users/service_accounts/{user_id}",
13426
- structure=mdls.ServiceAccount,
13427
- query_params={"fields": fields},
13428
- body=body,
13429
- transport_options=transport_options,
13430
- ),
13431
- )
13432
- return response
13433
-
13434
13475
  # endregion
13435
13476
 
13436
13477
  # region UserAttribute: Manage User Attributes
@@ -21,7 +21,7 @@
21
21
  # SOFTWARE.
22
22
  #
23
23
 
24
- # 380 API models: 290 Spec, 0 Request, 65 Write, 25 Enum
24
+ # 381 API models: 291 Spec, 0 Request, 65 Write, 25 Enum
25
25
 
26
26
 
27
27
  # NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0
@@ -1544,6 +1544,8 @@ class ContentSearch(model.Model):
1544
1544
  view_count: Number of times the content has been viewed
1545
1545
  preferred_viewer: Preferred way of viewing the content (only applies to dashboards)
1546
1546
  model: Name of the model the explore belongs to
1547
+ created_by_id: Creator Id of the content
1548
+ certification_status: Certification status of the content
1547
1549
  """
1548
1550
 
1549
1551
  can: Optional[MutableMapping[str, bool]] = None
@@ -1556,6 +1558,8 @@ class ContentSearch(model.Model):
1556
1558
  view_count: Optional[int] = None
1557
1559
  preferred_viewer: Optional[str] = None
1558
1560
  model: Optional[str] = None
1561
+ created_by_id: Optional[int] = None
1562
+ certification_status: Optional[str] = None
1559
1563
 
1560
1564
  def __init__(
1561
1565
  self,
@@ -1569,7 +1573,9 @@ class ContentSearch(model.Model):
1569
1573
  folder_name: Optional[str] = None,
1570
1574
  view_count: Optional[int] = None,
1571
1575
  preferred_viewer: Optional[str] = None,
1572
- model: Optional[str] = None
1576
+ model: Optional[str] = None,
1577
+ created_by_id: Optional[int] = None,
1578
+ certification_status: Optional[str] = None
1573
1579
  ):
1574
1580
  self.can = can
1575
1581
  self.content_id = content_id
@@ -1581,6 +1587,8 @@ class ContentSearch(model.Model):
1581
1587
  self.view_count = view_count
1582
1588
  self.preferred_viewer = preferred_viewer
1583
1589
  self.model = model
1590
+ self.created_by_id = created_by_id
1591
+ self.certification_status = certification_status
1584
1592
 
1585
1593
 
1586
1594
  @attr.s(auto_attribs=True, init=False)
@@ -3311,6 +3319,7 @@ class Dashboard(model.Model):
3311
3319
  view_count: Number of times viewed in the Looker web UI
3312
3320
  appearance:
3313
3321
  url: Relative URL of the dashboard
3322
+ layout_granularity: The layout granularity to apply to this dashboard (ie: default or granular)
3314
3323
  """
3315
3324
 
3316
3325
  can: Optional[MutableMapping[str, bool]] = None
@@ -3363,6 +3372,7 @@ class Dashboard(model.Model):
3363
3372
  view_count: Optional[int] = None
3364
3373
  appearance: Optional["DashboardAppearance"] = None
3365
3374
  url: Optional[str] = None
3375
+ layout_granularity: Optional[str] = None
3366
3376
 
3367
3377
  def __init__(
3368
3378
  self,
@@ -3416,7 +3426,8 @@ class Dashboard(model.Model):
3416
3426
  title_color: Optional[str] = None,
3417
3427
  view_count: Optional[int] = None,
3418
3428
  appearance: Optional["DashboardAppearance"] = None,
3419
- url: Optional[str] = None
3429
+ url: Optional[str] = None,
3430
+ layout_granularity: Optional[str] = None
3420
3431
  ):
3421
3432
  self.can = can
3422
3433
  self.content_favorite_id = content_favorite_id
@@ -3470,6 +3481,7 @@ class Dashboard(model.Model):
3470
3481
  self.view_count = view_count
3471
3482
  self.appearance = appearance
3472
3483
  self.url = url
3484
+ self.layout_granularity = layout_granularity
3473
3485
 
3474
3486
 
3475
3487
  @attr.s(auto_attribs=True, init=False)
@@ -3916,6 +3928,10 @@ class DashboardLayoutComponent(model.Model):
3916
3928
  element_title: Dashboard element title, extracted from the Dashboard Element.
3917
3929
  element_title_hidden: Whether or not the dashboard element title is displayed.
3918
3930
  vis_type: Visualization type, extracted from a query's vis_config
3931
+ granular_row: Row (granular layout)
3932
+ granular_column: Column (granular layout)
3933
+ granular_width: Width (granular layout)
3934
+ granular_height: Height (granular layout)
3919
3935
  """
3920
3936
 
3921
3937
  can: Optional[MutableMapping[str, bool]] = None
@@ -3930,6 +3946,10 @@ class DashboardLayoutComponent(model.Model):
3930
3946
  element_title: Optional[str] = None
3931
3947
  element_title_hidden: Optional[bool] = None
3932
3948
  vis_type: Optional[str] = None
3949
+ granular_row: Optional[int] = None
3950
+ granular_column: Optional[int] = None
3951
+ granular_width: Optional[int] = None
3952
+ granular_height: Optional[int] = None
3933
3953
 
3934
3954
  def __init__(
3935
3955
  self,
@@ -3945,7 +3965,11 @@ class DashboardLayoutComponent(model.Model):
3945
3965
  deleted: Optional[bool] = None,
3946
3966
  element_title: Optional[str] = None,
3947
3967
  element_title_hidden: Optional[bool] = None,
3948
- vis_type: Optional[str] = None
3968
+ vis_type: Optional[str] = None,
3969
+ granular_row: Optional[int] = None,
3970
+ granular_column: Optional[int] = None,
3971
+ granular_width: Optional[int] = None,
3972
+ granular_height: Optional[int] = None
3949
3973
  ):
3950
3974
  self.can = can
3951
3975
  self.id = id
@@ -3959,6 +3983,10 @@ class DashboardLayoutComponent(model.Model):
3959
3983
  self.element_title = element_title
3960
3984
  self.element_title_hidden = element_title_hidden
3961
3985
  self.vis_type = vis_type
3986
+ self.granular_row = granular_row
3987
+ self.granular_column = granular_column
3988
+ self.granular_width = granular_width
3989
+ self.granular_height = granular_height
3962
3990
 
3963
3991
 
3964
3992
  @attr.s(auto_attribs=True, init=False)
@@ -4212,6 +4240,7 @@ class DBConnection(model.Model):
4212
4240
  port: Port number on server. If the connection is over an SSH tunnel, then the local port associated with the SSH tunnel.
4213
4241
  username: Username for server authentication
4214
4242
  password: (Write-Only) Password for server authentication
4243
+ has_password: Whether or not the password is present
4215
4244
  uses_oauth: Whether the connection uses OAuth for authentication.
4216
4245
  uses_key_pair_auth: Whether the connection uses key-pair for authentication.
4217
4246
  uses_instance_oauth: Whether the integration uses the oauth instance account.
@@ -4277,6 +4306,7 @@ class DBConnection(model.Model):
4277
4306
  port: Optional[str] = None
4278
4307
  username: Optional[str] = None
4279
4308
  password: Optional[str] = None
4309
+ has_password: Optional[bool] = None
4280
4310
  uses_oauth: Optional[bool] = None
4281
4311
  uses_key_pair_auth: Optional[bool] = None
4282
4312
  uses_instance_oauth: Optional[bool] = None
@@ -4344,6 +4374,7 @@ class DBConnection(model.Model):
4344
4374
  port: Optional[str] = None,
4345
4375
  username: Optional[str] = None,
4346
4376
  password: Optional[str] = None,
4377
+ has_password: Optional[bool] = None,
4347
4378
  uses_oauth: Optional[bool] = None,
4348
4379
  uses_key_pair_auth: Optional[bool] = None,
4349
4380
  uses_instance_oauth: Optional[bool] = None,
@@ -4408,6 +4439,7 @@ class DBConnection(model.Model):
4408
4439
  self.port = port
4409
4440
  self.username = username
4410
4441
  self.password = password
4442
+ self.has_password = has_password
4411
4443
  self.uses_oauth = uses_oauth
4412
4444
  self.uses_key_pair_auth = uses_key_pair_auth
4413
4445
  self.uses_instance_oauth = uses_instance_oauth
@@ -4886,6 +4918,7 @@ class DialectInfoOptions(model.Model):
4886
4918
  disable_context_comment: Can disable query context comments
4887
4919
  host: Host is required
4888
4920
  instance_name: Instance name is required
4921
+ key_pair_authentication: Has support for key pair authentication
4889
4922
  max_billing_gigabytes: Has max billing gigabytes support
4890
4923
  oauth_credentials: Has support for a service account
4891
4924
  pdts_for_oauth: Has OAuth for PDT support
@@ -4910,6 +4943,7 @@ class DialectInfoOptions(model.Model):
4910
4943
  disable_context_comment: Optional[bool] = None
4911
4944
  host: Optional[bool] = None
4912
4945
  instance_name: Optional[bool] = None
4946
+ key_pair_authentication: Optional[bool] = None
4913
4947
  max_billing_gigabytes: Optional[bool] = None
4914
4948
  oauth_credentials: Optional[bool] = None
4915
4949
  pdts_for_oauth: Optional[bool] = None
@@ -4936,6 +4970,7 @@ class DialectInfoOptions(model.Model):
4936
4970
  disable_context_comment: Optional[bool] = None,
4937
4971
  host: Optional[bool] = None,
4938
4972
  instance_name: Optional[bool] = None,
4973
+ key_pair_authentication: Optional[bool] = None,
4939
4974
  max_billing_gigabytes: Optional[bool] = None,
4940
4975
  oauth_credentials: Optional[bool] = None,
4941
4976
  pdts_for_oauth: Optional[bool] = None,
@@ -4959,6 +4994,7 @@ class DialectInfoOptions(model.Model):
4959
4994
  self.disable_context_comment = disable_context_comment
4960
4995
  self.host = host
4961
4996
  self.instance_name = instance_name
4997
+ self.key_pair_authentication = key_pair_authentication
4962
4998
  self.max_billing_gigabytes = max_billing_gigabytes
4963
4999
  self.oauth_credentials = oauth_credentials
4964
5000
  self.pdts_for_oauth = pdts_for_oauth
@@ -9830,6 +9866,9 @@ class PasswordConfig(model.Model):
9830
9866
  require_numeric: Require at least one numeric character
9831
9867
  require_upperlower: Require at least one uppercase and one lowercase letter
9832
9868
  require_special: Require at least one special character
9869
+ expiration_enabled: Enable/Disable password expiration policy.
9870
+ expiration_duration_days: Number of days before passwords expire. Must be between 30 and 365.
9871
+ policy_enabled_at: The timestamp of when the password expiration policy was last enabled.
9833
9872
  """
9834
9873
 
9835
9874
  can: Optional[MutableMapping[str, bool]] = None
@@ -9837,6 +9876,9 @@ class PasswordConfig(model.Model):
9837
9876
  require_numeric: Optional[bool] = None
9838
9877
  require_upperlower: Optional[bool] = None
9839
9878
  require_special: Optional[bool] = None
9879
+ expiration_enabled: Optional[bool] = None
9880
+ expiration_duration_days: Optional[int] = None
9881
+ policy_enabled_at: Optional[datetime.datetime] = None
9840
9882
 
9841
9883
  def __init__(
9842
9884
  self,
@@ -9845,13 +9887,19 @@ class PasswordConfig(model.Model):
9845
9887
  min_length: Optional[int] = None,
9846
9888
  require_numeric: Optional[bool] = None,
9847
9889
  require_upperlower: Optional[bool] = None,
9848
- require_special: Optional[bool] = None
9890
+ require_special: Optional[bool] = None,
9891
+ expiration_enabled: Optional[bool] = None,
9892
+ expiration_duration_days: Optional[int] = None,
9893
+ policy_enabled_at: Optional[datetime.datetime] = None
9849
9894
  ):
9850
9895
  self.can = can
9851
9896
  self.min_length = min_length
9852
9897
  self.require_numeric = require_numeric
9853
9898
  self.require_upperlower = require_upperlower
9854
9899
  self.require_special = require_special
9900
+ self.expiration_enabled = expiration_enabled
9901
+ self.expiration_duration_days = expiration_duration_days
9902
+ self.policy_enabled_at = policy_enabled_at
9855
9903
 
9856
9904
 
9857
9905
  class Period(enum.Enum):
@@ -10057,6 +10105,7 @@ class Project(model.Model):
10057
10105
  git_release_mgmt_enabled: If true, advanced git release management is enabled for this project
10058
10106
  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).
10059
10107
  is_example: If true the project is an example project and cannot be modified
10108
+ has_production_counterpart: If true the project has been pushed to production.
10060
10109
  dependency_status: Status of dependencies in your manifest & lockfile
10061
10110
  """
10062
10111
 
@@ -10081,6 +10130,7 @@ class Project(model.Model):
10081
10130
  git_release_mgmt_enabled: Optional[bool] = None
10082
10131
  allow_warnings: Optional[bool] = None
10083
10132
  is_example: Optional[bool] = None
10133
+ has_production_counterpart: Optional[bool] = None
10084
10134
  dependency_status: Optional[str] = None
10085
10135
 
10086
10136
  def __init__(
@@ -10107,6 +10157,7 @@ class Project(model.Model):
10107
10157
  git_release_mgmt_enabled: Optional[bool] = None,
10108
10158
  allow_warnings: Optional[bool] = None,
10109
10159
  is_example: Optional[bool] = None,
10160
+ has_production_counterpart: Optional[bool] = None,
10110
10161
  dependency_status: Optional[str] = None
10111
10162
  ):
10112
10163
  self.can = can
@@ -10130,6 +10181,7 @@ class Project(model.Model):
10130
10181
  self.git_release_mgmt_enabled = git_release_mgmt_enabled
10131
10182
  self.allow_warnings = allow_warnings
10132
10183
  self.is_example = is_example
10184
+ self.has_production_counterpart = has_production_counterpart
10133
10185
  self.dependency_status = dependency_status
10134
10186
 
10135
10187
 
@@ -10953,6 +11005,7 @@ class Role(model.Model):
10953
11005
  permission_set_id: (Write-Only) Id of permission set
10954
11006
  model_set:
10955
11007
  model_set_id: (Write-Only) Id of model set
11008
+ internal: Is this a Looker internal role
10956
11009
  url: Link to get this item
10957
11010
  users_url: Link to get list of users with this role
10958
11011
  """
@@ -10964,6 +11017,7 @@ class Role(model.Model):
10964
11017
  permission_set_id: Optional[str] = None
10965
11018
  model_set: Optional["ModelSet"] = None
10966
11019
  model_set_id: Optional[str] = None
11020
+ internal: Optional[bool] = None
10967
11021
  url: Optional[str] = None
10968
11022
  users_url: Optional[str] = None
10969
11023
 
@@ -10977,6 +11031,7 @@ class Role(model.Model):
10977
11031
  permission_set_id: Optional[str] = None,
10978
11032
  model_set: Optional["ModelSet"] = None,
10979
11033
  model_set_id: Optional[str] = None,
11034
+ internal: Optional[bool] = None,
10980
11035
  url: Optional[str] = None,
10981
11036
  users_url: Optional[str] = None
10982
11037
  ):
@@ -10987,6 +11042,7 @@ class Role(model.Model):
10987
11042
  self.permission_set_id = permission_set_id
10988
11043
  self.model_set = model_set
10989
11044
  self.model_set_id = model_set_id
11045
+ self.internal = internal
10990
11046
  self.url = url
10991
11047
  self.users_url = users_url
10992
11048
 
@@ -11002,6 +11058,7 @@ class RoleSearch(model.Model):
11002
11058
  permission_set_id: (Write-Only) Id of permission set
11003
11059
  model_set:
11004
11060
  model_set_id: (Write-Only) Id of model set
11061
+ internal: Is this a Looker internal role
11005
11062
  user_count: Count of users with this role
11006
11063
  url: Link to get this item
11007
11064
  users_url: Link to get list of users with this role
@@ -11014,6 +11071,7 @@ class RoleSearch(model.Model):
11014
11071
  permission_set_id: Optional[str] = None
11015
11072
  model_set: Optional["ModelSet"] = None
11016
11073
  model_set_id: Optional[str] = None
11074
+ internal: Optional[bool] = None
11017
11075
  user_count: Optional[int] = None
11018
11076
  url: Optional[str] = None
11019
11077
  users_url: Optional[str] = None
@@ -11028,6 +11086,7 @@ class RoleSearch(model.Model):
11028
11086
  permission_set_id: Optional[str] = None,
11029
11087
  model_set: Optional["ModelSet"] = None,
11030
11088
  model_set_id: Optional[str] = None,
11089
+ internal: Optional[bool] = None,
11031
11090
  user_count: Optional[int] = None,
11032
11091
  url: Optional[str] = None,
11033
11092
  users_url: Optional[str] = None
@@ -11039,6 +11098,7 @@ class RoleSearch(model.Model):
11039
11098
  self.permission_set_id = permission_set_id
11040
11099
  self.model_set = model_set
11041
11100
  self.model_set_id = model_set_id
11101
+ self.internal = internal
11042
11102
  self.user_count = user_count
11043
11103
  self.url = url
11044
11104
  self.users_url = users_url
@@ -11278,6 +11338,8 @@ class SamlConfig(model.Model):
11278
11338
  can: Operations the current user is able to perform on this object
11279
11339
  enabled: Enable/Disable Saml authentication for the server
11280
11340
  idp_cert: Identity Provider Certificate (provided by IdP)
11341
+ idp_cert_multi:
11342
+ multi_certs_supported: Indicates whether this SAML configuration is set up to use multiple Identity Provider certificates (idp_cert_multi) or a single certificate (idp_cert). When true, idp_cert_multi is used; otherwise, idp_cert is used.
11281
11343
  idp_url: Identity Provider Url (provided by IdP)
11282
11344
  idp_issuer: Identity Provider Issuer (provided by IdP)
11283
11345
  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.
@@ -11313,6 +11375,8 @@ class SamlConfig(model.Model):
11313
11375
  can: Optional[MutableMapping[str, bool]] = None
11314
11376
  enabled: Optional[bool] = None
11315
11377
  idp_cert: Optional[str] = None
11378
+ idp_cert_multi: Optional["SamlIdpCertMulti"] = None
11379
+ multi_certs_supported: Optional[bool] = None
11316
11380
  idp_url: Optional[str] = None
11317
11381
  idp_issuer: Optional[str] = None
11318
11382
  idp_audience: Optional[str] = None
@@ -11350,6 +11414,8 @@ class SamlConfig(model.Model):
11350
11414
  can: Optional[MutableMapping[str, bool]] = None,
11351
11415
  enabled: Optional[bool] = None,
11352
11416
  idp_cert: Optional[str] = None,
11417
+ idp_cert_multi: Optional["SamlIdpCertMulti"] = None,
11418
+ multi_certs_supported: Optional[bool] = None,
11353
11419
  idp_url: Optional[str] = None,
11354
11420
  idp_issuer: Optional[str] = None,
11355
11421
  idp_audience: Optional[str] = None,
@@ -11384,6 +11450,8 @@ class SamlConfig(model.Model):
11384
11450
  self.can = can
11385
11451
  self.enabled = enabled
11386
11452
  self.idp_cert = idp_cert
11453
+ self.idp_cert_multi = idp_cert_multi
11454
+ self.multi_certs_supported = multi_certs_supported
11387
11455
  self.idp_url = idp_url
11388
11456
  self.idp_issuer = idp_issuer
11389
11457
  self.idp_audience = idp_audience
@@ -11490,6 +11558,19 @@ class SamlGroupWrite(model.Model):
11490
11558
  self.url = url
11491
11559
 
11492
11560
 
11561
+ @attr.s(auto_attribs=True, init=False)
11562
+ class SamlIdpCertMulti(model.Model):
11563
+ """
11564
+ Attributes:
11565
+ signing: List of signing certificates. Values should be without pre-encapsulation and post-encapsulation boundaries
11566
+ """
11567
+
11568
+ signing: Optional[Sequence[str]] = None
11569
+
11570
+ def __init__(self, *, signing: Optional[Sequence[str]] = None):
11571
+ self.signing = signing
11572
+
11573
+
11493
11574
  @attr.s(auto_attribs=True, init=False)
11494
11575
  class SamlMetadataParseResult(model.Model):
11495
11576
  """
@@ -11498,12 +11579,14 @@ class SamlMetadataParseResult(model.Model):
11498
11579
  idp_issuer: Identify Provider Issuer
11499
11580
  idp_url: Identify Provider Url
11500
11581
  idp_cert: Identify Provider Certificate
11582
+ idp_cert_multi:
11501
11583
  """
11502
11584
 
11503
11585
  can: Optional[MutableMapping[str, bool]] = None
11504
11586
  idp_issuer: Optional[str] = None
11505
11587
  idp_url: Optional[str] = None
11506
11588
  idp_cert: Optional[str] = None
11589
+ idp_cert_multi: Optional["SamlIdpCertMulti"] = None
11507
11590
 
11508
11591
  def __init__(
11509
11592
  self,
@@ -11511,12 +11594,14 @@ class SamlMetadataParseResult(model.Model):
11511
11594
  can: Optional[MutableMapping[str, bool]] = None,
11512
11595
  idp_issuer: Optional[str] = None,
11513
11596
  idp_url: Optional[str] = None,
11514
- idp_cert: Optional[str] = None
11597
+ idp_cert: Optional[str] = None,
11598
+ idp_cert_multi: Optional["SamlIdpCertMulti"] = None
11515
11599
  ):
11516
11600
  self.can = can
11517
11601
  self.idp_issuer = idp_issuer
11518
11602
  self.idp_url = idp_url
11519
11603
  self.idp_cert = idp_cert
11604
+ self.idp_cert_multi = idp_cert_multi
11520
11605
 
11521
11606
 
11522
11607
  @attr.s(auto_attribs=True, init=False)
@@ -12170,6 +12255,7 @@ class Setting(model.Model):
12170
12255
  dashboard_auto_refresh_restriction: Toggle Dashboard Auto Refresh restriction
12171
12256
  dashboard_auto_refresh_minimum_interval: Minimum time interval for dashboard element automatic refresh. Examples: (30 seconds, 1 minute)
12172
12257
  managed_certificate_uri: Array of URIs pointing to the location of a root certificate in Secret Manager
12258
+ content_certification_documentation_link: Link to content certification documentation.
12173
12259
  """
12174
12260
 
12175
12261
  instance_config: Optional["InstanceConfig"] = None
@@ -12197,6 +12283,7 @@ class Setting(model.Model):
12197
12283
  dashboard_auto_refresh_restriction: Optional[bool] = None
12198
12284
  dashboard_auto_refresh_minimum_interval: Optional[str] = None
12199
12285
  managed_certificate_uri: Optional[Sequence[str]] = None
12286
+ content_certification_documentation_link: Optional[str] = None
12200
12287
 
12201
12288
  def __init__(
12202
12289
  self,
@@ -12225,7 +12312,8 @@ class Setting(model.Model):
12225
12312
  login_notification_text: Optional[str] = None,
12226
12313
  dashboard_auto_refresh_restriction: Optional[bool] = None,
12227
12314
  dashboard_auto_refresh_minimum_interval: Optional[str] = None,
12228
- managed_certificate_uri: Optional[Sequence[str]] = None
12315
+ managed_certificate_uri: Optional[Sequence[str]] = None,
12316
+ content_certification_documentation_link: Optional[str] = None
12229
12317
  ):
12230
12318
  self.instance_config = instance_config
12231
12319
  self.extension_framework_enabled = extension_framework_enabled
@@ -12254,6 +12342,9 @@ class Setting(model.Model):
12254
12342
  dashboard_auto_refresh_minimum_interval
12255
12343
  )
12256
12344
  self.managed_certificate_uri = managed_certificate_uri
12345
+ self.content_certification_documentation_link = (
12346
+ content_certification_documentation_link
12347
+ )
12257
12348
 
12258
12349
 
12259
12350
  @attr.s(auto_attribs=True, init=False)
@@ -13359,8 +13450,8 @@ class User(model.Model):
13359
13450
  embed_group_folder_id: (Embed only) ID of user's group folder based on the external_group_id optionally specified during embed user login
13360
13451
  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.
13361
13452
  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.
13362
- 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.
13363
- 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.
13453
+ is_service_account: Indicates if this user is a service account.
13454
+ service_account_name: The display name of the service account. This field is omitted for non service account users.
13364
13455
  url: Link to get this item
13365
13456
  """
13366
13457
 
@@ -14602,6 +14693,7 @@ class WriteDashboard(model.Model):
14602
14693
  tile_text_color: Tile text color
14603
14694
  title_color: Title color
14604
14695
  appearance:
14696
+ layout_granularity: The layout granularity to apply to this dashboard (ie: default or granular)
14605
14697
  """
14606
14698
 
14607
14699
  description: Optional[str] = None
@@ -14630,6 +14722,7 @@ class WriteDashboard(model.Model):
14630
14722
  tile_text_color: Optional[str] = None
14631
14723
  title_color: Optional[str] = None
14632
14724
  appearance: Optional["DashboardAppearance"] = None
14725
+ layout_granularity: Optional[str] = None
14633
14726
 
14634
14727
  def __init__(
14635
14728
  self,
@@ -14659,7 +14752,8 @@ class WriteDashboard(model.Model):
14659
14752
  tile_background_color: Optional[str] = None,
14660
14753
  tile_text_color: Optional[str] = None,
14661
14754
  title_color: Optional[str] = None,
14662
- appearance: Optional["DashboardAppearance"] = None
14755
+ appearance: Optional["DashboardAppearance"] = None,
14756
+ layout_granularity: Optional[str] = None
14663
14757
  ):
14664
14758
  self.description = description
14665
14759
  self.hidden = hidden
@@ -14689,6 +14783,7 @@ class WriteDashboard(model.Model):
14689
14783
  self.tile_text_color = tile_text_color
14690
14784
  self.title_color = title_color
14691
14785
  self.appearance = appearance
14786
+ self.layout_granularity = layout_granularity
14692
14787
 
14693
14788
 
14694
14789
  @attr.s(auto_attribs=True, init=False)
@@ -14951,6 +15046,10 @@ class WriteDashboardLayoutComponent(model.Model):
14951
15046
  column: Column
14952
15047
  width: Width
14953
15048
  height: Height
15049
+ granular_row: Row (granular layout)
15050
+ granular_column: Column (granular layout)
15051
+ granular_width: Width (granular layout)
15052
+ granular_height: Height (granular layout)
14954
15053
  """
14955
15054
 
14956
15055
  dashboard_layout_id: Optional[str] = None
@@ -14959,6 +15058,10 @@ class WriteDashboardLayoutComponent(model.Model):
14959
15058
  column: Optional[int] = None
14960
15059
  width: Optional[int] = None
14961
15060
  height: Optional[int] = None
15061
+ granular_row: Optional[int] = None
15062
+ granular_column: Optional[int] = None
15063
+ granular_width: Optional[int] = None
15064
+ granular_height: Optional[int] = None
14962
15065
 
14963
15066
  def __init__(
14964
15067
  self,
@@ -14968,7 +15071,11 @@ class WriteDashboardLayoutComponent(model.Model):
14968
15071
  row: Optional[int] = None,
14969
15072
  column: Optional[int] = None,
14970
15073
  width: Optional[int] = None,
14971
- height: Optional[int] = None
15074
+ height: Optional[int] = None,
15075
+ granular_row: Optional[int] = None,
15076
+ granular_column: Optional[int] = None,
15077
+ granular_width: Optional[int] = None,
15078
+ granular_height: Optional[int] = None
14972
15079
  ):
14973
15080
  self.dashboard_layout_id = dashboard_layout_id
14974
15081
  self.dashboard_element_id = dashboard_element_id
@@ -14976,6 +15083,10 @@ class WriteDashboardLayoutComponent(model.Model):
14976
15083
  self.column = column
14977
15084
  self.width = width
14978
15085
  self.height = height
15086
+ self.granular_row = granular_row
15087
+ self.granular_column = granular_column
15088
+ self.granular_width = granular_width
15089
+ self.granular_height = granular_height
14979
15090
 
14980
15091
 
14981
15092
  @attr.s(auto_attribs=True, init=False)
@@ -15024,7 +15135,7 @@ class WriteDatagroup(model.Model):
15024
15135
  class WriteDBConnection(model.Model):
15025
15136
  """
15026
15137
  Dynamic writeable type for DBConnection removes:
15027
- can, dialect, snippets, pdts_enabled, named_driver_version_actual, uses_oauth, uses_instance_oauth, uses_service_auth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed, default_bq_connection, p4sa_name
15138
+ can, dialect, snippets, pdts_enabled, named_driver_version_actual, has_password, uses_oauth, uses_instance_oauth, uses_service_auth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed, default_bq_connection, p4sa_name
15028
15139
 
15029
15140
  Attributes:
15030
15141
  name: Name of the connection. Also used as the unique identifier
@@ -16125,19 +16236,23 @@ class WriteOIDCConfig(model.Model):
16125
16236
  class WritePasswordConfig(model.Model):
16126
16237
  """
16127
16238
  Dynamic writeable type for PasswordConfig removes:
16128
- can
16239
+ can, policy_enabled_at
16129
16240
 
16130
16241
  Attributes:
16131
16242
  min_length: Minimum number of characters required for a new password. Must be between 7 and 100
16132
16243
  require_numeric: Require at least one numeric character
16133
16244
  require_upperlower: Require at least one uppercase and one lowercase letter
16134
16245
  require_special: Require at least one special character
16246
+ expiration_enabled: Enable/Disable password expiration policy.
16247
+ expiration_duration_days: Number of days before passwords expire. Must be between 30 and 365.
16135
16248
  """
16136
16249
 
16137
16250
  min_length: Optional[int] = None
16138
16251
  require_numeric: Optional[bool] = None
16139
16252
  require_upperlower: Optional[bool] = None
16140
16253
  require_special: Optional[bool] = None
16254
+ expiration_enabled: Optional[bool] = None
16255
+ expiration_duration_days: Optional[int] = None
16141
16256
 
16142
16257
  def __init__(
16143
16258
  self,
@@ -16145,12 +16260,16 @@ class WritePasswordConfig(model.Model):
16145
16260
  min_length: Optional[int] = None,
16146
16261
  require_numeric: Optional[bool] = None,
16147
16262
  require_upperlower: Optional[bool] = None,
16148
- require_special: Optional[bool] = None
16263
+ require_special: Optional[bool] = None,
16264
+ expiration_enabled: Optional[bool] = None,
16265
+ expiration_duration_days: Optional[int] = None
16149
16266
  ):
16150
16267
  self.min_length = min_length
16151
16268
  self.require_numeric = require_numeric
16152
16269
  self.require_upperlower = require_upperlower
16153
16270
  self.require_special = require_special
16271
+ self.expiration_enabled = expiration_enabled
16272
+ self.expiration_duration_days = expiration_duration_days
16154
16273
 
16155
16274
 
16156
16275
  @attr.s(auto_attribs=True, init=False)
@@ -16246,7 +16365,7 @@ class WritePrivatelabelConfiguration(model.Model):
16246
16365
  class WriteProject(model.Model):
16247
16366
  """
16248
16367
  Dynamic writeable type for Project removes:
16249
- can, id, uses_git, is_example
16368
+ can, id, uses_git, is_example, has_production_counterpart
16250
16369
 
16251
16370
  Attributes:
16252
16371
  name: Project display name
@@ -16503,7 +16622,7 @@ class WriteResultMakerWithIdVisConfigAndDynamicFields(model.Model):
16503
16622
  class WriteRole(model.Model):
16504
16623
  """
16505
16624
  Dynamic writeable type for Role removes:
16506
- can, id, url, users_url
16625
+ can, id, internal, url, users_url
16507
16626
 
16508
16627
  Attributes:
16509
16628
  name: Name of Role
@@ -16546,6 +16665,8 @@ class WriteSamlConfig(model.Model):
16546
16665
  Attributes:
16547
16666
  enabled: Enable/Disable Saml authentication for the server
16548
16667
  idp_cert: Identity Provider Certificate (provided by IdP)
16668
+ idp_cert_multi:
16669
+ multi_certs_supported: Indicates whether this SAML configuration is set up to use multiple Identity Provider certificates (idp_cert_multi) or a single certificate (idp_cert). When true, idp_cert_multi is used; otherwise, idp_cert is used.
16549
16670
  idp_url: Identity Provider Url (provided by IdP)
16550
16671
  idp_issuer: Identity Provider Issuer (provided by IdP)
16551
16672
  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.
@@ -16572,6 +16693,8 @@ class WriteSamlConfig(model.Model):
16572
16693
 
16573
16694
  enabled: Optional[bool] = None
16574
16695
  idp_cert: Optional[str] = None
16696
+ idp_cert_multi: Optional["SamlIdpCertMulti"] = None
16697
+ multi_certs_supported: Optional[bool] = None
16575
16698
  idp_url: Optional[str] = None
16576
16699
  idp_issuer: Optional[str] = None
16577
16700
  idp_audience: Optional[str] = None
@@ -16600,6 +16723,8 @@ class WriteSamlConfig(model.Model):
16600
16723
  *,
16601
16724
  enabled: Optional[bool] = None,
16602
16725
  idp_cert: Optional[str] = None,
16726
+ idp_cert_multi: Optional["SamlIdpCertMulti"] = None,
16727
+ multi_certs_supported: Optional[bool] = None,
16603
16728
  idp_url: Optional[str] = None,
16604
16729
  idp_issuer: Optional[str] = None,
16605
16730
  idp_audience: Optional[str] = None,
@@ -16625,6 +16750,8 @@ class WriteSamlConfig(model.Model):
16625
16750
  ):
16626
16751
  self.enabled = enabled
16627
16752
  self.idp_cert = idp_cert
16753
+ self.idp_cert_multi = idp_cert_multi
16754
+ self.multi_certs_supported = multi_certs_supported
16628
16755
  self.idp_url = idp_url
16629
16756
  self.idp_issuer = idp_issuer
16630
16757
  self.idp_audience = idp_audience
@@ -16876,6 +17003,7 @@ class WriteSetting(model.Model):
16876
17003
  dashboard_auto_refresh_restriction: Toggle Dashboard Auto Refresh restriction
16877
17004
  dashboard_auto_refresh_minimum_interval: Minimum time interval for dashboard element automatic refresh. Examples: (30 seconds, 1 minute)
16878
17005
  managed_certificate_uri: Array of URIs pointing to the location of a root certificate in Secret Manager
17006
+ content_certification_documentation_link: Link to content certification documentation.
16879
17007
  """
16880
17008
 
16881
17009
  extension_framework_enabled: Optional[bool] = None
@@ -16898,6 +17026,7 @@ class WriteSetting(model.Model):
16898
17026
  dashboard_auto_refresh_restriction: Optional[bool] = None
16899
17027
  dashboard_auto_refresh_minimum_interval: Optional[str] = None
16900
17028
  managed_certificate_uri: Optional[Sequence[str]] = None
17029
+ content_certification_documentation_link: Optional[str] = None
16901
17030
 
16902
17031
  def __init__(
16903
17032
  self,
@@ -16921,7 +17050,8 @@ class WriteSetting(model.Model):
16921
17050
  embed_config: Optional["WriteEmbedConfig"] = None,
16922
17051
  dashboard_auto_refresh_restriction: Optional[bool] = None,
16923
17052
  dashboard_auto_refresh_minimum_interval: Optional[str] = None,
16924
- managed_certificate_uri: Optional[Sequence[str]] = None
17053
+ managed_certificate_uri: Optional[Sequence[str]] = None,
17054
+ content_certification_documentation_link: Optional[str] = None
16925
17055
  ):
16926
17056
  self.extension_framework_enabled = extension_framework_enabled
16927
17057
  self.extension_load_url_enabled = extension_load_url_enabled
@@ -16945,6 +17075,9 @@ class WriteSetting(model.Model):
16945
17075
  dashboard_auto_refresh_minimum_interval
16946
17076
  )
16947
17077
  self.managed_certificate_uri = managed_certificate_uri
17078
+ self.content_certification_documentation_link = (
17079
+ content_certification_documentation_link
17080
+ )
16948
17081
 
16949
17082
 
16950
17083
  @attr.s(auto_attribs=True, init=False)
@@ -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.20"
23
+ sdk_version = "26.0"
24
24
  environment_prefix = "LOOKERSDK"
@@ -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.20.0"
23
+ __version__ = "26.0.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: looker_sdk
3
- Version: 25.20.0
3
+ Version: 26.0.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.
File without changes
File without changes
File without changes
File without changes
File without changes