From e820bdf1c2254c182e843a54851320a4f90301d8 Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Fri, 20 Feb 2026 02:13:43 +0000 Subject: [PATCH 1/2] ## Python SDK Changes: * `glean.authentication.checkdatasourceauth()`: `response.unauthorized_datasource_instances` **Changed** --- .speakeasy/gen.lock | 36 +++++++++---------- .speakeasy/gen.yaml | 2 +- .speakeasy/glean-merged-spec.yaml | 8 +++-- .speakeasy/workflow.lock | 12 +++---- RELEASES.md | 12 ++++++- docs/models/checkdatasourceauthresponse.md | 6 ++-- pyproject.toml | 2 +- src/glean/api_client/_version.py | 4 +-- .../models/checkdatasourceauthresponse.py | 35 +++++------------- .../pathpostrestapiv1createcollection.go | 20 +++++------ .../handler/pathpostrestapiv1getchat.go | 4 +-- .../components/checkdatasourceauthresponse.go | 6 ++-- 12 files changed, 70 insertions(+), 77 deletions(-) diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index b0adaf65..0cfbc743 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,19 +1,19 @@ lockVersion: 2.0.0 id: 3e3290ca-0ee8-4981-b1bc-14536048fa63 management: - docChecksum: e61f09454154d7eb019991c03f6d19eb + docChecksum: 168d09185da75c45f6edca32cb2bc2dd docVersion: 0.9.0 speakeasyVersion: 1.722.7 generationVersion: 2.832.9 - releaseVersion: 0.12.7 - configChecksum: 8aebd542e0622973cae358ece93487de + releaseVersion: 0.12.8 + configChecksum: 50bf621427a8287d9ca62293e512f86a repoURL: https://github.com/gleanwork/api-client-python.git installationURL: https://github.com/gleanwork/api-client-python.git published: true persistentEdits: - generation_id: 14a6d36a-77ef-4a8e-8cd9-f7a1c0dc8bcb - pristine_commit_hash: 0e7f43da90541b2445d05211577217c1bab49f5f - pristine_tree_hash: 5319dfb5aff7a24b5c67c68b76d1baf663ce8139 + generation_id: bcf8dca0-d5eb-40ce-a204-2aa32fe24c88 + pristine_commit_hash: 41297bcf79da7abf5156c3d09490fd4236aff892 + pristine_tree_hash: 639a9981217f2ac59f39e86a5e053a64e33f9fbe features: python: additionalDependencies: 1.0.0 @@ -451,8 +451,8 @@ trackedFiles: pristine_git_object: f003c186b000ff51b939282191e5d42e08e06f7b docs/models/checkdatasourceauthresponse.md: id: c4214ea019e2 - last_write_checksum: sha1:ede1e2ca7769edf83659cc1dfe2d2e1de2de6c1d - pristine_git_object: b1ea62b7cc4e3bed1c5e1715ccd8fbdf3d01331e + last_write_checksum: sha1:0cb03f6f8262685c2963aee29986841a38b6548a + pristine_git_object: be60699cc5a111d76b214d6f28642c7e79c6a806 docs/models/checkdocumentaccessrequest.md: id: 7e17285c9fb1 last_write_checksum: sha1:40cc7d27e54e5aca99ebaa24670579d312b9252c @@ -2735,8 +2735,8 @@ trackedFiles: pristine_git_object: e2fda7fe263c2a111e53872e3ad5bc324b4dccfe pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:8e7869a84ec05f482a7e02eb3ac7c4e268dfdfc6 - pristine_git_object: 1697f7e0b295af2f4094232e666e9eff6a4d4d80 + last_write_checksum: sha1:cd9618a071dc65e548c604011f7922a19bd4e112 + pristine_git_object: 358810d2a9d3bd25e6fbe61eaab9cc0c6b9e374c scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:c2c83f71dea61eb50c9e05da83b16d18b4da8794 @@ -2763,8 +2763,8 @@ trackedFiles: pristine_git_object: 58c4d70ac1797b86ff5c4237cafbc344c42d8f64 src/glean/api_client/_version.py: id: 0ce22b26136b - last_write_checksum: sha1:ad364a656d38e32a1c1a528364700f94839986ab - pristine_git_object: 0cba552d2edd6eeb52410ef1a127271395525a0e + last_write_checksum: sha1:1e660e8b70d98a8dc857edd2b64e505881b58095 + pristine_git_object: ff2fde5492a4ff878e3ea49923b2f26af789a187 src/glean/api_client/agents.py: id: b925701a9217 last_write_checksum: sha1:c1688c3d141db7707458f3ac7ff29c4a71e6812b @@ -3199,8 +3199,8 @@ trackedFiles: pristine_git_object: f4a630c009419f6f9144d393a808957c75b1eb3c src/glean/api_client/models/checkdatasourceauthresponse.py: id: 4b92648bff66 - last_write_checksum: sha1:6b448e1f738f635983ab023658febd17d68f36bf - pristine_git_object: 3a043334e052e58c3ad73c407ec235556034208d + last_write_checksum: sha1:383e77b55a1ef1d8a4014954daacecefabb594e1 + pristine_git_object: 23a67c29ffa76ce2ab3a08554fd16045f5325512 src/glean/api_client/models/checkdocumentaccessrequest.py: id: 8ae1352111ea last_write_checksum: sha1:5c9a03c342cc40cf9618527f4802af3d9a4a49cd @@ -5144,7 +5144,7 @@ trackedFiles: tests/mockserver/internal/handler/pathpostrestapiv1createauthtoken.go: last_write_checksum: sha1:6ce83ba03066acb436796c018d19715615f548c1 tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go: - last_write_checksum: sha1:14b4a1d98dd55ce2b487ae1aaab4a7dece08df25 + last_write_checksum: sha1:f9f4c718408bddadbdf826194f07970bb111e57e tests/mockserver/internal/handler/pathpostrestapiv1createshortcut.go: last_write_checksum: sha1:dcdf684a85e20db1aee571db9a54a3ee259d71d5 tests/mockserver/internal/handler/pathpostrestapiv1deleteallchats.go: @@ -5178,7 +5178,7 @@ trackedFiles: tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go: last_write_checksum: sha1:3bec6f7cd190f9394bebac2407f9d7f1e606e479 tests/mockserver/internal/handler/pathpostrestapiv1getchat.go: - last_write_checksum: sha1:2c2b7acb22e422a721a21801cccfa30fedfd3169 + last_write_checksum: sha1:089475adb3686c656bd0eb52940285a7e037ab83 tests/mockserver/internal/handler/pathpostrestapiv1getchatapplication.go: last_write_checksum: sha1:7b81898137fdb3a89b4dcfa318b9b5b92e8860c0 tests/mockserver/internal/handler/pathpostrestapiv1getchatfiles.go: @@ -5384,7 +5384,7 @@ trackedFiles: tests/mockserver/internal/sdk/models/components/chatzerostatesuggestionoptions.go: last_write_checksum: sha1:da633547681ec1c8ef5df79cc1d2919fb3714d13 tests/mockserver/internal/sdk/models/components/checkdatasourceauthresponse.go: - last_write_checksum: sha1:caa976ebc0e76d521725d4dd83e17c840842fd9a + last_write_checksum: sha1:e99e71069a2dee200904ebf2457ee9853b1777b4 tests/mockserver/internal/sdk/models/components/checkdocumentaccessrequest.go: last_write_checksum: sha1:4b403181de5f24bde26d022703e625a832f685c8 tests/mockserver/internal/sdk/models/components/checkdocumentaccessresponse.go: @@ -7398,7 +7398,7 @@ generatedTests: checkdatasourceauth: "2026-02-19T15:48:52Z" releaseNotes: | ## Python SDK Changes: - * `glean.authentication.checkdatasourceauth()`: **Added** + * `glean.authentication.checkdatasourceauth()`: `response.unauthorized_datasource_instances` **Changed** generatedFiles: - .devcontainer/README.md - .devcontainer/devcontainer.json diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index a3c1a0a6..c84e9c51 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -33,7 +33,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: true python: - version: 0.12.7 + version: 0.12.8 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/glean-merged-spec.yaml b/.speakeasy/glean-merged-spec.yaml index 22519199..a069bf8a 100644 --- a/.speakeasy/glean-merged-spec.yaml +++ b/.speakeasy/glean-merged-spec.yaml @@ -2,7 +2,7 @@ openapi: 3.0.0 info: version: 0.9.0 title: Glean API - x-source-commit-sha: 204dc378669e42116b8b928d58d5fddabb228aef + x-source-commit-sha: 56c08697ca3b6869022a262114e61f1385914425 description: | # Introduction In addition to the data sources that Glean has built-in support for, Glean also provides a REST API that enables customers to put arbitrary content in the search index. This is useful, for example, for doing permissions-aware search over content in internal tools that reside on-prem as well as for searching over applications that Glean does not currently support first class. In addition these APIs allow the customer to push organization data (people info, organization structure etc) into Glean. @@ -22,7 +22,7 @@ info: These API clients provide type-safe, idiomatic interfaces for working with Glean IndexingAPIs in your language of choice. x-logo: url: https://app.glean.com/images/glean-text2.svg - x-open-api-commit-sha: 8a4d8a857ef07a135526624459142e85f9444ec2 + x-open-api-commit-sha: daa8736a6f0763faffd2c1079da8a42345536ed7 x-speakeasy-name: 'Glean API' servers: - url: https://{instance}-be.glean.com @@ -7367,11 +7367,13 @@ components: description: | Relative path to initiate or resume OAuth for the current user and instance, including a one-time authentication token as a query parameter. Clients should prepend their configured Glean backend base URL. CheckDatasourceAuthResponse: + required: + - unauthorizedDatasourceInstances properties: unauthorizedDatasourceInstances: type: array description: | - Datasource instances that require per-user OAuth authorization. Empty or absent when all datasources are authorized. + Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized. items: $ref: "#/components/schemas/UnauthorizedDatasourceInstance" CreateAuthTokenResponse: diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 9db52a1f..a38a230a 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -2,11 +2,11 @@ speakeasyVersion: 1.722.7 sources: Glean API: sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:aa0a496396e723844c85b7713e2a2d9795a8e4c9bb8ad5f4119e1ff0b3f46fc1 - sourceBlobDigest: sha256:f052174bfef7ebd0efee80555a7ae4db9d3ba41118e726db87762ea1dbab1240 + sourceRevisionDigest: sha256:8b912e61e9727548c1e231c33a1cab5988630896d3c81639fe9b2961c8656d94 + sourceBlobDigest: sha256:079082f8fabe8221e1d14af242c72c22efa7be6626969593ccebcd74d19c3c80 tags: - latest - - speakeasy-sdk-regen-1771467808 + - speakeasy-sdk-regen-1771525162 Glean Client API: sourceNamespace: glean-client-api sourceRevisionDigest: sha256:4edc63ad559e4f2c9fb9ebf5edaaaaa9269f1874d271cfd84b441d6dacac43d2 @@ -17,10 +17,10 @@ targets: glean: source: Glean API sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:aa0a496396e723844c85b7713e2a2d9795a8e4c9bb8ad5f4119e1ff0b3f46fc1 - sourceBlobDigest: sha256:f052174bfef7ebd0efee80555a7ae4db9d3ba41118e726db87762ea1dbab1240 + sourceRevisionDigest: sha256:8b912e61e9727548c1e231c33a1cab5988630896d3c81639fe9b2961c8656d94 + sourceBlobDigest: sha256:079082f8fabe8221e1d14af242c72c22efa7be6626969593ccebcd74d19c3c80 codeSamplesNamespace: glean-api-specs-python-code-samples - codeSamplesRevisionDigest: sha256:f23770fa56fb7f38298e39c6a50f878d2ac7f7b136e13a173c7e74927bee3cd0 + codeSamplesRevisionDigest: sha256:07c1eebc0272335ffeb2b98c0b094c73bfefcf74858173515c00c683b16702f6 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/RELEASES.md b/RELEASES.md index a5ebe41b..4bd4269a 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -578,4 +578,14 @@ Based on: ### Generated - [python v0.12.7] . ### Releases -- [PyPI v0.12.7] https://pypi.org/project/glean-api-client/0.12.7 - . \ No newline at end of file +- [PyPI v0.12.7] https://pypi.org/project/glean-api-client/0.12.7 - . + +## 2026-02-20 02:10:28 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.722.7 (2.832.9) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.8] . +### Releases +- [PyPI v0.12.8] https://pypi.org/project/glean-api-client/0.12.8 - . \ No newline at end of file diff --git a/docs/models/checkdatasourceauthresponse.md b/docs/models/checkdatasourceauthresponse.md index b1ea62b7..be60699c 100644 --- a/docs/models/checkdatasourceauthresponse.md +++ b/docs/models/checkdatasourceauthresponse.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | -| `unauthorized_datasource_instances` | List[[models.UnauthorizedDatasourceInstance](../models/unauthorizeddatasourceinstance.md)] | :heavy_minus_sign: | Datasource instances that require per-user OAuth authorization. Empty or absent when all datasources are authorized.
| \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `unauthorized_datasource_instances` | List[[models.UnauthorizedDatasourceInstance](../models/unauthorizeddatasourceinstance.md)] | :heavy_check_mark: | Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized.
| \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 1697f7e0..358810d2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "glean-api-client" -version = "0.12.7" +version = "0.12.8" description = "Python Client SDK Generated by Speakeasy." authors = [{ name = "Glean Technologies, Inc." },] readme = "README-PYPI.md" diff --git a/src/glean/api_client/_version.py b/src/glean/api_client/_version.py index 0cba552d..ff2fde54 100644 --- a/src/glean/api_client/_version.py +++ b/src/glean/api_client/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "glean-api-client" -__version__: str = "0.12.7" +__version__: str = "0.12.8" __openapi_doc_version__: str = "0.9.0" __gen_version__: str = "2.832.9" -__user_agent__: str = "speakeasy-sdk/python 0.12.7 2.832.9 0.9.0 glean-api-client" +__user_agent__: str = "speakeasy-sdk/python 0.12.8 2.832.9 0.9.0 glean-api-client" try: if __package__ is not None: diff --git a/src/glean/api_client/models/checkdatasourceauthresponse.py b/src/glean/api_client/models/checkdatasourceauthresponse.py index 3a043334..23a67c29 100644 --- a/src/glean/api_client/models/checkdatasourceauthresponse.py +++ b/src/glean/api_client/models/checkdatasourceauthresponse.py @@ -5,47 +5,28 @@ UnauthorizedDatasourceInstance, UnauthorizedDatasourceInstanceTypedDict, ) -from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.types import BaseModel import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing import List +from typing_extensions import Annotated, TypedDict class CheckDatasourceAuthResponseTypedDict(TypedDict): - unauthorized_datasource_instances: NotRequired[ - List[UnauthorizedDatasourceInstanceTypedDict] - ] - r"""Datasource instances that require per-user OAuth authorization. Empty or absent when all datasources are authorized. + unauthorized_datasource_instances: List[UnauthorizedDatasourceInstanceTypedDict] + r"""Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized. """ class CheckDatasourceAuthResponse(BaseModel): unauthorized_datasource_instances: Annotated[ - Optional[List[UnauthorizedDatasourceInstance]], + List[UnauthorizedDatasourceInstance], pydantic.Field(alias="unauthorizedDatasourceInstances"), - ] = None - r"""Datasource instances that require per-user OAuth authorization. Empty or absent when all datasources are authorized. + ] + r"""Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized. """ - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["unauthorizedDatasourceInstances"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m - try: CheckDatasourceAuthResponse.model_rebuild() diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go b/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go index 371b9023..5c99a0ad 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go @@ -56,14 +56,14 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ operations.ResponseBody2{ Collection: &components.Collection{ Name: "", - Description: "whole busily jive hawk gee basic minus hence", + Description: "motionless whenever paintwork import over cuckoo", AddedRoles: []components.UserRoleSpecification{ components.UserRoleSpecification{ Person: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", }, - Role: components.UserRoleAnswerModerator, + Role: components.UserRoleOwner, }, }, RemovedRoles: []components.UserRoleSpecification{ @@ -90,7 +90,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ID: 158969, + ID: 363711, Creator: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -101,7 +101,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, Items: []components.CollectionItem{ components.CollectionItem{ - CollectionID: 110375, + CollectionID: 570197, CreatedBy: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -266,13 +266,13 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ Name: "George Clooney", ObfuscatedID: "abc123", }, - Role: components.UserRoleEditor, + Role: components.UserRoleAnswerModerator, }, }, }, Collection: &components.Collection{ Name: "", - Description: "wedge colorfully orientate rally", + Description: "athwart skateboard newsstand farm bourgeoisie ah how elliptical aha well-to-do", AudienceFilters: []components.FacetFilter{ components.FacetFilter{ FieldName: types.String("type"), @@ -288,7 +288,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ID: 131797, + ID: 643990, Creator: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -300,7 +300,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ Children: []components.Collection{ components.Collection{ Name: "", - Description: "outside yippee sidetrack mature regularly mouser inject worth", + Description: "woot purse salty even as advanced", AudienceFilters: []components.FacetFilter{ components.FacetFilter{ FieldName: types.String("type"), @@ -316,7 +316,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ID: 149448, + ID: 359978, Creator: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -328,7 +328,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ItemType: components.CollectionItemItemTypeCollection, + ItemType: components.CollectionItemItemTypeURL, }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go b/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go index 023af9c7..020eb777 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go @@ -628,8 +628,8 @@ func testGetchatGetchat0(w http.ResponseWriter, req *http.Request) { Roles: []components.UserRoleSpecification{}, SourceDocumentSpec: types.Pointer(components.CreateDocumentSpecUnionDocumentSpec3( components.DocumentSpec3{ - UgcType: components.DocumentSpecUgcType1Announcements, - ContentID: 848009, + UgcType: components.DocumentSpecUgcType1Shortcuts, + ContentID: 602763, }, )), SourceType: components.AnswerSourceTypeAssistant.ToPointer(), diff --git a/tests/mockserver/internal/sdk/models/components/checkdatasourceauthresponse.go b/tests/mockserver/internal/sdk/models/components/checkdatasourceauthresponse.go index ff5addac..978854e6 100644 --- a/tests/mockserver/internal/sdk/models/components/checkdatasourceauthresponse.go +++ b/tests/mockserver/internal/sdk/models/components/checkdatasourceauthresponse.go @@ -3,14 +3,14 @@ package components type CheckDatasourceAuthResponse struct { - // Datasource instances that require per-user OAuth authorization. Empty or absent when all datasources are authorized. + // Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized. // - UnauthorizedDatasourceInstances []UnauthorizedDatasourceInstance `json:"unauthorizedDatasourceInstances,omitempty"` + UnauthorizedDatasourceInstances []UnauthorizedDatasourceInstance `json:"unauthorizedDatasourceInstances"` } func (o *CheckDatasourceAuthResponse) GetUnauthorizedDatasourceInstances() []UnauthorizedDatasourceInstance { if o == nil { - return nil + return []UnauthorizedDatasourceInstance{} } return o.UnauthorizedDatasourceInstances } From 395e561227b4c972a83d04c599d4f9cdcbe7be48 Mon Sep 17 00:00:00 2001 From: "speakeasy-github[bot]" <128539517+speakeasy-github[bot]@users.noreply.github.com> Date: Fri, 20 Feb 2026 02:13:56 +0000 Subject: [PATCH 2/2] empty commit to trigger [run-tests] workflow