diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 72966c04..0dec8a67 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: b07e1adf6a3fe531134f91a3ec3e8d6d + docChecksum: 342db3c3e961e5c5bd4d74702a75f99d docVersion: 0.9.0 speakeasyVersion: 1.761.1 generationVersion: 2.879.6 - releaseVersion: 0.12.19 - configChecksum: b417f3c3a59516a14cfdc575dd099a41 + releaseVersion: 0.12.20 + configChecksum: 118c8b5d37717e432d05b23672b24c21 repoURL: https://github.com/gleanwork/api-client-python.git installationURL: https://github.com/gleanwork/api-client-python.git published: true persistentEdits: - generation_id: 1bf8ec41-e692-480c-81f7-b4e36cd8d109 - pristine_commit_hash: 88b8a6e2c0d4e72cdb61d1321ab69798885fcaa2 - pristine_tree_hash: 994ca2d8b3f242d3a0054b3bc5c09be6122499c2 + generation_id: c252eb6e-6ce5-4eba-9dca-21d3c3db7a16 + pristine_commit_hash: 1591a9ac40fc7b3e4fca24297e6846d1b9bbc01c + pristine_tree_hash: 8f15c3bdeb9247be31ce867946d42a3770f3ffc1 features: python: additionalDependencies: 1.0.0 @@ -183,8 +183,12 @@ trackedFiles: pristine_git_object: fc4a769fd5f7f8c5e36e1eec936d9454f0f01242 docs/models/agentsinsightsv2response.md: id: c419d6511b8b - last_write_checksum: sha1:29a7479361fd666c5acca9722f30a0c49e124bc8 - pristine_git_object: c0812335d968b650ae99d0b59b95d2e9307237ae + last_write_checksum: sha1:d49bd06daf5f273c6eebe93704178fd528d7cbb2 + pristine_git_object: dba88e1e980221c133143d71febe10860c6d6a11 + docs/models/agentstimesavedinsight.md: + id: c998db614c46 + last_write_checksum: sha1:3d385b1b58b2fc13b30f1b93a62ebfba57549f4a + pristine_git_object: 3a84fa9ff9a66340187f4f85c0cf96113d68cedc docs/models/agentsusagebydepartmentinsight.md: id: 8e00b4ec28db last_write_checksum: sha1:ba6bc3369d70a9f8b0cd136e5ffa9318b54222d3 @@ -2415,8 +2419,8 @@ trackedFiles: pristine_git_object: c7f7adecc74cc4072799169c68332df2d8932c44 docs/models/ugctype.md: id: 675d62d57771 - last_write_checksum: sha1:dc863b7e745b73f7284e28036cff182d7f2205ab - pristine_git_object: 696a31174d19000f1e167ae332eaf343e6bd0bbb + last_write_checksum: sha1:24c94e0c1d55ef733d3c09cf44f550d1a34b5a5c + pristine_git_object: e71aeefa9a330bc28813fed5cca41340d7fe880d docs/models/uiconfig.md: id: c4d3817a701c last_write_checksum: sha1:dd422e5a1bbf9af85722cd43c5437716b8bb3017 @@ -2771,8 +2775,8 @@ trackedFiles: pristine_git_object: e2fda7fe263c2a111e53872e3ad5bc324b4dccfe pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:5fd94901bbb750af287b5750f6c23693ae8c002c - pristine_git_object: ead28da3fa17b2bf357f9956c686da6aa14f6db6 + last_write_checksum: sha1:c951a37ac61b64abea95db042bf2af7726bbe02b + pristine_git_object: dcdf40b65963a18a502e45c39a0c29f6cdbe3a10 scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:c2c83f71dea61eb50c9e05da83b16d18b4da8794 @@ -2799,8 +2803,8 @@ trackedFiles: pristine_git_object: 58c4d70ac1797b86ff5c4237cafbc344c42d8f64 src/glean/api_client/_version.py: id: 0ce22b26136b - last_write_checksum: sha1:3f72c721c9f39b95f61f8a33a7fe074d74e4b780 - pristine_git_object: 08ab8ef27cc9d18d00705e3e842c5167e2945e57 + last_write_checksum: sha1:c2aed2497aa6263744e15e15dd70b19c04bbab47 + pristine_git_object: fe96c87c29efe2f67d0da2142bf872b686d989b4 src/glean/api_client/agents.py: id: b925701a9217 last_write_checksum: sha1:ee99ae3d58f7f77ac2eba99c104d04d53c16c09c @@ -2951,8 +2955,8 @@ trackedFiles: pristine_git_object: 1c182cb0150642014463e1ceec8bc8b785e5b9f3 src/glean/api_client/models/__init__.py: id: d5f6ea5efcbe - last_write_checksum: sha1:b0e5531849a2dfb911367b7dc47b9d5cd78d6880 - pristine_git_object: b70da8c195e1135d746858d7a1e6663864a66d42 + last_write_checksum: sha1:933cbf9306e550a9849248316ec1120b7f4d1a0f + pristine_git_object: 5e0398ac17b5608c16f3f948888215e1a0b5a368 src/glean/api_client/models/actionsummary.py: id: 34ccdf9f1526 last_write_checksum: sha1:cfefc6678a5612dc8d50f2b0074dc54bb88e00e0 @@ -3031,8 +3035,12 @@ trackedFiles: pristine_git_object: 027fbade0c78c6974ff596ccf77a0149eeb7084b src/glean/api_client/models/agentsinsightsv2response.py: id: 2bb9ea2bc70e - last_write_checksum: sha1:6fc1738e963ea52ac699b75e0fefb17bd41470a1 - pristine_git_object: 64eb67f7f3435b7e03e3f3c293b4261c2313ccd9 + last_write_checksum: sha1:9e985d3fa4e1bb005978c06ac7ce6d4e1801c35f + pristine_git_object: cf04728a8f53f60e72d88d6c9cb7396ba3c04ecb + src/glean/api_client/models/agentstimesavedinsight.py: + id: a0f77b3b907e + last_write_checksum: sha1:35ead2111d854eb693eca7afd85af70cb69e4b41 + pristine_git_object: f81071aa0f0fe1f453f7c084811d028dae28f05d src/glean/api_client/models/agentsusagebydepartmentinsight.py: id: 50317bf09cb6 last_write_checksum: sha1:6ee545d0cdd6246b7b743870984e71276ab7dfd6 @@ -4795,8 +4803,8 @@ trackedFiles: pristine_git_object: 8b5a32ccf25fcfb0fb904e8046bf1b36110a3880 src/glean/api_client/models/ugctype.py: id: 9afda9fb9dd7 - last_write_checksum: sha1:c78efcc5ea286c48e849b1a91ed86cb55bd6aa7d - pristine_git_object: 5b529907922ba1e3119d6a29498701d86d1709be + last_write_checksum: sha1:bdabe557aa1173ae62fab86281d0c35a7b3bcccc + pristine_git_object: e15d070b1728ce113c661d3f9d2fc0e99dfc2d03 src/glean/api_client/models/unauthorizeddatasourceinstance.py: id: d3507c78b8df last_write_checksum: sha1:e86e33256eecf3766c2cc9fedeab56e34e0f129c @@ -5356,7 +5364,9 @@ trackedFiles: tests/mockserver/internal/sdk/models/components/agentsinsightsv2request.go: last_write_checksum: sha1:5bbebc8109a68e2b22dc0ca044b009a4ff491d1f tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go: - last_write_checksum: sha1:cb0063cb35cebc0ef00ce928c06e4b723f3ce9fb + last_write_checksum: sha1:37dfa579c66588425502ca91ae07cb9529bebd65 + tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go: + last_write_checksum: sha1:4c8368b220ca2cc15463104f6abcfe89bda8d574 tests/mockserver/internal/sdk/models/components/agentsusagebydepartmentinsight.go: last_write_checksum: sha1:21c46d3f5363b157c2e4ee70451c7d0b3e8d77df tests/mockserver/internal/sdk/models/components/agentusersinsight.go: @@ -6118,7 +6128,7 @@ trackedFiles: tests/mockserver/internal/sdk/models/components/toolslistresponse.go: last_write_checksum: sha1:12c38931f0f2810e038e30a743845a97b876d03c tests/mockserver/internal/sdk/models/components/ugctype.go: - last_write_checksum: sha1:444443b7409bfbb85d042e60888f889cc6bcf62b + last_write_checksum: sha1:d8c8ca33947ffdca4a7b8a9ecb00379fa15624b0 tests/mockserver/internal/sdk/models/components/unauthorizeddatasourceinstance.go: last_write_checksum: sha1:39fb84396b33bc645fb5e6ebcea36ab88b5db179 tests/mockserver/internal/sdk/models/components/unpin.go: @@ -6567,8 +6577,8 @@ trackedFiles: pristine_git_object: 6cc8aeec3c52329d389081db0a27f10f53f214b9 tests/test_messages.py: id: be23089b1f8b - last_write_checksum: sha1:2404e23964ef6a1f5ddc900402b34e597d2d9617 - pristine_git_object: 132005ec7d1e35f805b6a8c28e07e043bce22f0a + last_write_checksum: sha1:5db8087e85104ab50b362638150fa1f6686a3c30 + pristine_git_object: c0fd29dab7d365ef9d78c0c291b925e6b9fd7298 tests/test_people.py: id: 37c243940039 last_write_checksum: sha1:7c7268ffeebe48d81ed25e9b1cfc3a395abf5c1f @@ -6591,8 +6601,8 @@ trackedFiles: pristine_git_object: df2944ebda36db652b2770dd1c23be83df90fc99 tests/test_summarize.py: id: a255d8a6f627 - last_write_checksum: sha1:56ebc69bb4f81505bc6d5f557eafd27f2bf6287d - pristine_git_object: 3f56a110361de93de6f420cfacda057683eabbc8 + last_write_checksum: sha1:0a66e5784eb0a938b4399c0829e4fd716735482b + pristine_git_object: ef4774cfa7c7777478cd7081760ef38fbb9a0f32 tests/test_tools.py: id: 70889bdf7321 last_write_checksum: sha1:3c0c220f8975b050c322f6475e95f7af4e65b995 @@ -6910,7 +6920,7 @@ examples: application/json: {} responses: "200": - application/json: {"gleanAssist": {"activityInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "SEARCH"}]}, "overviewResponse": {"perUserInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "assistantResponse": {"perUserInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "agentsResponse": {"topAgentsInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "agentsUsageByDepartmentInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "agentUsersInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}} + application/json: {"gleanAssist": {"activityInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "SEARCH"}]}, "overviewResponse": {"perUserInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "assistantResponse": {"perUserInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "agentsResponse": {"topAgentsInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "agentsUsageByDepartmentInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "agentUsersInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "agentsTimeSavedInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}} messages: speakeasy-default-messages: requestBody: @@ -7520,7 +7530,10 @@ generatedTests: checkdatasourceauth: "2026-02-19T15:48:52Z" getDatasourceInstanceConfiguration: "2026-03-09T18:34:29Z" updateDatasourceInstanceConfiguration: "2026-03-09T18:34:29Z" -releaseNotes: "## Python SDK Changes:\n* `glean.client.announcements.create()`: \n * `request.body.structured_list[].document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n * `response.body.structured_list[].document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.announcements.update()`: \n * `request.body.structured_list[].document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n * `response.body.structured_list[].document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.answers.create()`: \n * `request.data.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n * `response.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.answers.update()`: \n * `request.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n * `response.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.answers.retrieve()`: `response.answer_result.answer.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.answers.list()`: `response.answer_results[].answer.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.chat.create()`: \n * `request.messages[].citations[].source_document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n * `response.messages[].citations[].source_document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.chat.retrieve()`: `response.chat_result.chat.created_by.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.chat.list()`: `response.chat_results[].chat.created_by.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.chat.create_stream()`: \n * `request.messages[].citations[].source_document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.collections.add_items()`: `response.collection.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.collections.create()`: \n * `request.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n * `response.union(class (0)).collection.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.collections.delete_item()`: `response.collection.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.collections.update()`: \n * `request.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n * `response.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.collections.update_item()`: `response.collection.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.collections.retrieve()`: `response.collection.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.collections.list()`: `response.collections[].added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.documents.retrieve()`: \n * `request.get_documents_request.document_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n * `response.documents.Map.union(Document).metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.documents.retrieve_by_facets()`: `response.documents[].metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.documents.summarize()`: \n * `request.document_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.insights.retrieve()`: `response.glean_assist.activity_insights[].user.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.messages.retrieve()`: `response.search_response.results[].structured_results[].document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.pins.update()`: `response.attribution.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.pins.retrieve()`: `response.pin.attribution.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.pins.list()`: `response.pins[].attribution.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.pins.create()`: `response.attribution.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.search.query_as_admin()`: \n * `request.source_document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n * `response.results[].structured_results[].document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.search.autocomplete()`: `response.results[].document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.search.retrieve_feed()`: \n * `request.categories[]` **Changed**\n * `response.results[]` **Changed**\n* `glean.client.search.recommendations()`: \n * `request.source_document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n * `response.results[].structured_results[].document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.search.query()`: \n * `request.source_document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n * `response.results[].structured_results[].document.metadata.author.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.entities.list()`: `response.results[].related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.entities.read_people()`: `response.results[].related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.shortcuts.create()`: \n * `request.data.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n * `response.shortcut.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.shortcuts.retrieve()`: `response.shortcut.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.shortcuts.list()`: `response.shortcuts[].added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.shortcuts.update()`: \n * `request.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n * `response.shortcut.added_roles[].source_document_spec.union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.verification.add_reminder()`: `response.metadata.last_verifier.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.verification.list()`: `response.documents[].metadata.last_verifier.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n* `glean.client.verification.verify()`: `response.metadata.last_verifier.related_documents[].query_suggestion.request_options.inclusions.container_specs[].union(class (3)).ugc_type.enum(artifacts)` **Added**\n" +releaseNotes: | + ## Python SDK Changes: + * `glean.client.insights.retrieve()`: `response.agents_response` **Changed** + * `glean.client.search.retrieve_feed()`: `response.results[].primary_entry.prompt_template.favorite_info.ugc_type.enum(spreadsheet_type)` **Added** generatedFiles: - .devcontainer/README.md - .devcontainer/devcontainer.json diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index bebfd540..f6bc877c 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -34,7 +34,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: true python: - version: 0.12.19 + version: 0.12.20 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/glean-merged-spec.yaml b/.speakeasy/glean-merged-spec.yaml index ab3e19e1..3be5cff9 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: 8a0e3a32d5d6639d10ef809d104942a79d54d1a0 + x-source-commit-sha: 3301b0cde4a4bf6d9bb67d909bfbfc2d97c47ad8 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: f89c07f572daff630aa6a660c5c20e8aa3227322 + x-open-api-commit-sha: f13962c9263237558900c5da6ccfa48ea4edb68c x-speakeasy-name: 'Glean API' servers: - url: https://{instance}-be.glean.com @@ -9329,6 +9329,27 @@ components: runCount: type: integer description: Total number of agent runs for this user over the specified time period. + AgentsTimeSavedInsight: + properties: + agentId: + type: string + description: Agent ID + agentName: + type: string + description: Agent name + icon: + $ref: "#/components/schemas/IconConfig" + description: Agent icon configuration + isDeleted: + type: boolean + description: Indicates whether the agent has been deleted + runCount: + type: integer + description: Total number of runs for this agent over the specified time period. + minsPerRun: + type: number + format: float + description: Average minutes saved per run for this agent over the specified time period. AgentsInsightsV2Response: allOf: - $ref: "#/components/schemas/CurrentActiveUsers" @@ -9355,8 +9376,19 @@ components: type: array items: $ref: "#/components/schemas/AgentUsersInsight" + agentsTimeSavedInsights: + type: array + items: + $ref: "#/components/schemas/AgentsTimeSavedInsight" + description: Insights for agents time saved over the specified time period. dailyAgentRunsTimeseries: $ref: "#/components/schemas/LabeledCountInfo" + successfulRunsTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + failedRunsTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + pausedRunsTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" upvotesTimeseries: $ref: "#/components/schemas/LabeledCountInfo" downvotesTimeseries: @@ -10493,6 +10525,7 @@ components: - SCRIBES_TYPE - SHORTCUTS_TYPE - SLIDE_TYPE + - SPREADSHEET_TYPE - WORKFLOWS_TYPE FavoriteInfo: type: object diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index d8081750..00438d47 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -2,8 +2,8 @@ speakeasyVersion: 1.761.1 sources: Glean API: sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:0f10e7b25d98791a46b0ed9fffad9d56ce1e52d63ca5d8c2598ff2fda3df6321 - sourceBlobDigest: sha256:59995e53d0ac0527b824756126d89dd7c4638fffb3b57711446f35604d0012a0 + sourceRevisionDigest: sha256:08d4d58caccd1bef6ef8e22dfcf97a354aded9212e6fea82f0aa6557c2ac60b7 + sourceBlobDigest: sha256:6937879dbbc72083c2849b612846828aafdd666c568135d879d9a9f3b6ede95e tags: - latest Glean Client API: @@ -16,10 +16,10 @@ targets: glean: source: Glean API sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:0f10e7b25d98791a46b0ed9fffad9d56ce1e52d63ca5d8c2598ff2fda3df6321 - sourceBlobDigest: sha256:59995e53d0ac0527b824756126d89dd7c4638fffb3b57711446f35604d0012a0 + sourceRevisionDigest: sha256:08d4d58caccd1bef6ef8e22dfcf97a354aded9212e6fea82f0aa6557c2ac60b7 + sourceBlobDigest: sha256:6937879dbbc72083c2849b612846828aafdd666c568135d879d9a9f3b6ede95e codeSamplesNamespace: glean-api-specs-python-code-samples - codeSamplesRevisionDigest: sha256:97795efcbae3db6986718ffba511ae7bc145269ba1f5012d30d69bc48b6e5772 + codeSamplesRevisionDigest: sha256:236be967997805680d4e427baaf01aeddfc19c362e810b0602bd8c148d0b703b workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/RELEASES.md b/RELEASES.md index 9ce5652e..c724ad7f 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -698,4 +698,14 @@ Based on: ### Generated - [python v0.12.19] . ### Releases -- [PyPI v0.12.19] https://pypi.org/project/glean-api-client/0.12.19 - . \ No newline at end of file +- [PyPI v0.12.19] https://pypi.org/project/glean-api-client/0.12.19 - . + +## 2026-04-09 02:28:47 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.761.1 (2.879.6) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.20] . +### Releases +- [PyPI v0.12.20] https://pypi.org/project/glean-api-client/0.12.20 - . \ No newline at end of file diff --git a/docs/models/agentsinsightsv2response.md b/docs/models/agentsinsightsv2response.md index c0812335..dba88e1e 100644 --- a/docs/models/agentsinsightsv2response.md +++ b/docs/models/agentsinsightsv2response.md @@ -14,6 +14,10 @@ | `top_agents_insights` | List[[models.PerAgentInsight](../models/peragentinsight.md)] | :heavy_minus_sign: | N/A | | `agents_usage_by_department_insights` | List[[models.AgentsUsageByDepartmentInsight](../models/agentsusagebydepartmentinsight.md)] | :heavy_minus_sign: | N/A | | `agent_users_insights` | List[[models.AgentUsersInsight](../models/agentusersinsight.md)] | :heavy_minus_sign: | N/A | +| `agents_time_saved_insights` | List[[models.AgentsTimeSavedInsight](../models/agentstimesavedinsight.md)] | :heavy_minus_sign: | Insights for agents time saved over the specified time period. | | `daily_agent_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `successful_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `failed_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `paused_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `upvotes_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `downvotes_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/agentstimesavedinsight.md b/docs/models/agentstimesavedinsight.md new file mode 100644 index 00000000..3a84fa9f --- /dev/null +++ b/docs/models/agentstimesavedinsight.md @@ -0,0 +1,13 @@ +# AgentsTimeSavedInsight + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `agent_id` | *Optional[str]* | :heavy_minus_sign: | Agent ID | | +| `agent_name` | *Optional[str]* | :heavy_minus_sign: | Agent name | | +| `icon` | [Optional[models.IconConfig]](../models/iconconfig.md) | :heavy_minus_sign: | Defines how to render an icon | {
"color": "#343CED",
"key": "person_icon",
"iconType": "GLYPH",
"name": "user"
} | +| `is_deleted` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether the agent has been deleted | | +| `run_count` | *Optional[int]* | :heavy_minus_sign: | Total number of runs for this agent over the specified time period. | | +| `mins_per_run` | *Optional[float]* | :heavy_minus_sign: | Average minutes saved per run for this agent over the specified time period. | | \ No newline at end of file diff --git a/docs/models/ugctype.md b/docs/models/ugctype.md index 696a3117..e71aeefa 100644 --- a/docs/models/ugctype.md +++ b/docs/models/ugctype.md @@ -31,4 +31,5 @@ value = UgcType.AGENT_TYPE | `SCRIBES_TYPE` | SCRIBES_TYPE | | `SHORTCUTS_TYPE` | SHORTCUTS_TYPE | | `SLIDE_TYPE` | SLIDE_TYPE | +| `SPREADSHEET_TYPE` | SPREADSHEET_TYPE | | `WORKFLOWS_TYPE` | WORKFLOWS_TYPE | \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index ead28da3..dcdf40b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "glean-api-client" -version = "0.12.19" +version = "0.12.20" 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 08ab8ef2..fe96c87c 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.19" +__version__: str = "0.12.20" __openapi_doc_version__: str = "0.9.0" __gen_version__: str = "2.879.6" -__user_agent__: str = "speakeasy-sdk/python 0.12.19 2.879.6 0.9.0 glean-api-client" +__user_agent__: str = "speakeasy-sdk/python 0.12.20 2.879.6 0.9.0 glean-api-client" try: if __package__ is not None: diff --git a/src/glean/api_client/models/__init__.py b/src/glean/api_client/models/__init__.py index b70da8c1..5e0398ac 100644 --- a/src/glean/api_client/models/__init__.py +++ b/src/glean/api_client/models/__init__.py @@ -139,6 +139,10 @@ AgentsInsightsV2Response, AgentsInsightsV2ResponseTypedDict, ) + from .agentstimesavedinsight import ( + AgentsTimeSavedInsight, + AgentsTimeSavedInsightTypedDict, + ) from .agentsusagebydepartmentinsight import ( AgentsUsageByDepartmentInsight, AgentsUsageByDepartmentInsightTypedDict, @@ -1480,6 +1484,8 @@ "AgentsInsightsV2RequestTypedDict", "AgentsInsightsV2Response", "AgentsInsightsV2ResponseTypedDict", + "AgentsTimeSavedInsight", + "AgentsTimeSavedInsightTypedDict", "AgentsUsageByDepartmentInsight", "AgentsUsageByDepartmentInsightTypedDict", "AllowlistOptions", @@ -2631,6 +2637,8 @@ "AgentsInsightsV2RequestTypedDict": ".agentsinsightsv2request", "AgentsInsightsV2Response": ".agentsinsightsv2response", "AgentsInsightsV2ResponseTypedDict": ".agentsinsightsv2response", + "AgentsTimeSavedInsight": ".agentstimesavedinsight", + "AgentsTimeSavedInsightTypedDict": ".agentstimesavedinsight", "AgentsUsageByDepartmentInsight": ".agentsusagebydepartmentinsight", "AgentsUsageByDepartmentInsightTypedDict": ".agentsusagebydepartmentinsight", "AgentUsersInsight": ".agentusersinsight", diff --git a/src/glean/api_client/models/agentsinsightsv2response.py b/src/glean/api_client/models/agentsinsightsv2response.py index 64eb67f7..cf04728a 100644 --- a/src/glean/api_client/models/agentsinsightsv2response.py +++ b/src/glean/api_client/models/agentsinsightsv2response.py @@ -1,6 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from .agentstimesavedinsight import ( + AgentsTimeSavedInsight, + AgentsTimeSavedInsightTypedDict, +) from .agentsusagebydepartmentinsight import ( AgentsUsageByDepartmentInsight, AgentsUsageByDepartmentInsightTypedDict, @@ -30,7 +34,12 @@ class AgentsInsightsV2ResponseTypedDict(TypedDict): List[AgentsUsageByDepartmentInsightTypedDict] ] agent_users_insights: NotRequired[List[AgentUsersInsightTypedDict]] + agents_time_saved_insights: NotRequired[List[AgentsTimeSavedInsightTypedDict]] + r"""Insights for agents time saved over the specified time period.""" daily_agent_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] + successful_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] + failed_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] + paused_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] upvotes_timeseries: NotRequired[LabeledCountInfoTypedDict] downvotes_timeseries: NotRequired[LabeledCountInfoTypedDict] @@ -76,10 +85,28 @@ class AgentsInsightsV2Response(BaseModel): Optional[List[AgentUsersInsight]], pydantic.Field(alias="agentUsersInsights") ] = None + agents_time_saved_insights: Annotated[ + Optional[List[AgentsTimeSavedInsight]], + pydantic.Field(alias="agentsTimeSavedInsights"), + ] = None + r"""Insights for agents time saved over the specified time period.""" + daily_agent_runs_timeseries: Annotated[ Optional[LabeledCountInfo], pydantic.Field(alias="dailyAgentRunsTimeseries") ] = None + successful_runs_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="successfulRunsTimeseries") + ] = None + + failed_runs_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="failedRunsTimeseries") + ] = None + + paused_runs_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="pausedRunsTimeseries") + ] = None + upvotes_timeseries: Annotated[ Optional[LabeledCountInfo], pydantic.Field(alias="upvotesTimeseries") ] = None @@ -101,7 +128,11 @@ def serialize_model(self, handler): "topAgentsInsights", "agentsUsageByDepartmentInsights", "agentUsersInsights", + "agentsTimeSavedInsights", "dailyAgentRunsTimeseries", + "successfulRunsTimeseries", + "failedRunsTimeseries", + "pausedRunsTimeseries", "upvotesTimeseries", "downvotesTimeseries", ] diff --git a/src/glean/api_client/models/agentstimesavedinsight.py b/src/glean/api_client/models/agentstimesavedinsight.py new file mode 100644 index 00000000..f81071aa --- /dev/null +++ b/src/glean/api_client/models/agentstimesavedinsight.py @@ -0,0 +1,68 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .iconconfig import IconConfig, IconConfigTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AgentsTimeSavedInsightTypedDict(TypedDict): + agent_id: NotRequired[str] + r"""Agent ID""" + agent_name: NotRequired[str] + r"""Agent name""" + icon: NotRequired[IconConfigTypedDict] + r"""Defines how to render an icon""" + is_deleted: NotRequired[bool] + r"""Indicates whether the agent has been deleted""" + run_count: NotRequired[int] + r"""Total number of runs for this agent over the specified time period.""" + mins_per_run: NotRequired[float] + r"""Average minutes saved per run for this agent over the specified time period.""" + + +class AgentsTimeSavedInsight(BaseModel): + agent_id: Annotated[Optional[str], pydantic.Field(alias="agentId")] = None + r"""Agent ID""" + + agent_name: Annotated[Optional[str], pydantic.Field(alias="agentName")] = None + r"""Agent name""" + + icon: Optional[IconConfig] = None + r"""Defines how to render an icon""" + + is_deleted: Annotated[Optional[bool], pydantic.Field(alias="isDeleted")] = None + r"""Indicates whether the agent has been deleted""" + + run_count: Annotated[Optional[int], pydantic.Field(alias="runCount")] = None + r"""Total number of runs for this agent over the specified time period.""" + + mins_per_run: Annotated[Optional[float], pydantic.Field(alias="minsPerRun")] = None + r"""Average minutes saved per run for this agent over the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["agentId", "agentName", "icon", "isDeleted", "runCount", "minsPerRun"] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +try: + AgentsTimeSavedInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/ugctype.py b/src/glean/api_client/models/ugctype.py index 5b529907..e15d070b 100644 --- a/src/glean/api_client/models/ugctype.py +++ b/src/glean/api_client/models/ugctype.py @@ -22,4 +22,5 @@ class UgcType(str, Enum, metaclass=utils.OpenEnumMeta): SCRIBES_TYPE = "SCRIBES_TYPE" SHORTCUTS_TYPE = "SHORTCUTS_TYPE" SLIDE_TYPE = "SLIDE_TYPE" + SPREADSHEET_TYPE = "SPREADSHEET_TYPE" WORKFLOWS_TYPE = "WORKFLOWS_TYPE" diff --git a/tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go b/tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go index 590fe93f..dab3698e 100644 --- a/tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go +++ b/tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go @@ -15,9 +15,14 @@ type AgentsInsightsV2Response struct { TopAgentsInsights []PerAgentInsight `json:"topAgentsInsights,omitempty"` AgentsUsageByDepartmentInsights []AgentsUsageByDepartmentInsight `json:"agentsUsageByDepartmentInsights,omitempty"` AgentUsersInsights []AgentUsersInsight `json:"agentUsersInsights,omitempty"` - DailyAgentRunsTimeseries *LabeledCountInfo `json:"dailyAgentRunsTimeseries,omitempty"` - UpvotesTimeseries *LabeledCountInfo `json:"upvotesTimeseries,omitempty"` - DownvotesTimeseries *LabeledCountInfo `json:"downvotesTimeseries,omitempty"` + // Insights for agents time saved over the specified time period. + AgentsTimeSavedInsights []AgentsTimeSavedInsight `json:"agentsTimeSavedInsights,omitempty"` + DailyAgentRunsTimeseries *LabeledCountInfo `json:"dailyAgentRunsTimeseries,omitempty"` + SuccessfulRunsTimeseries *LabeledCountInfo `json:"successfulRunsTimeseries,omitempty"` + FailedRunsTimeseries *LabeledCountInfo `json:"failedRunsTimeseries,omitempty"` + PausedRunsTimeseries *LabeledCountInfo `json:"pausedRunsTimeseries,omitempty"` + UpvotesTimeseries *LabeledCountInfo `json:"upvotesTimeseries,omitempty"` + DownvotesTimeseries *LabeledCountInfo `json:"downvotesTimeseries,omitempty"` } func (o *AgentsInsightsV2Response) GetMonthlyActiveUsers() *int64 { @@ -83,6 +88,13 @@ func (o *AgentsInsightsV2Response) GetAgentUsersInsights() []AgentUsersInsight { return o.AgentUsersInsights } +func (o *AgentsInsightsV2Response) GetAgentsTimeSavedInsights() []AgentsTimeSavedInsight { + if o == nil { + return nil + } + return o.AgentsTimeSavedInsights +} + func (o *AgentsInsightsV2Response) GetDailyAgentRunsTimeseries() *LabeledCountInfo { if o == nil { return nil @@ -90,6 +102,27 @@ func (o *AgentsInsightsV2Response) GetDailyAgentRunsTimeseries() *LabeledCountIn return o.DailyAgentRunsTimeseries } +func (o *AgentsInsightsV2Response) GetSuccessfulRunsTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.SuccessfulRunsTimeseries +} + +func (o *AgentsInsightsV2Response) GetFailedRunsTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.FailedRunsTimeseries +} + +func (o *AgentsInsightsV2Response) GetPausedRunsTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.PausedRunsTimeseries +} + func (o *AgentsInsightsV2Response) GetUpvotesTimeseries() *LabeledCountInfo { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go b/tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go new file mode 100644 index 00000000..96168672 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go @@ -0,0 +1,60 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type AgentsTimeSavedInsight struct { + // Agent ID + AgentID *string `json:"agentId,omitempty"` + // Agent name + AgentName *string `json:"agentName,omitempty"` + // Defines how to render an icon + Icon *IconConfig `json:"icon,omitempty"` + // Indicates whether the agent has been deleted + IsDeleted *bool `json:"isDeleted,omitempty"` + // Total number of runs for this agent over the specified time period. + RunCount *int64 `json:"runCount,omitempty"` + // Average minutes saved per run for this agent over the specified time period. + MinsPerRun *float32 `json:"minsPerRun,omitempty"` +} + +func (o *AgentsTimeSavedInsight) GetAgentID() *string { + if o == nil { + return nil + } + return o.AgentID +} + +func (o *AgentsTimeSavedInsight) GetAgentName() *string { + if o == nil { + return nil + } + return o.AgentName +} + +func (o *AgentsTimeSavedInsight) GetIcon() *IconConfig { + if o == nil { + return nil + } + return o.Icon +} + +func (o *AgentsTimeSavedInsight) GetIsDeleted() *bool { + if o == nil { + return nil + } + return o.IsDeleted +} + +func (o *AgentsTimeSavedInsight) GetRunCount() *int64 { + if o == nil { + return nil + } + return o.RunCount +} + +func (o *AgentsTimeSavedInsight) GetMinsPerRun() *float32 { + if o == nil { + return nil + } + return o.MinsPerRun +} diff --git a/tests/mockserver/internal/sdk/models/components/ugctype.go b/tests/mockserver/internal/sdk/models/components/ugctype.go index 96a1c420..3be651fc 100644 --- a/tests/mockserver/internal/sdk/models/components/ugctype.go +++ b/tests/mockserver/internal/sdk/models/components/ugctype.go @@ -26,6 +26,7 @@ const ( UgcTypeScribesType UgcType = "SCRIBES_TYPE" UgcTypeShortcutsType UgcType = "SHORTCUTS_TYPE" UgcTypeSlideType UgcType = "SLIDE_TYPE" + UgcTypeSpreadsheetType UgcType = "SPREADSHEET_TYPE" UgcTypeWorkflowsType UgcType = "WORKFLOWS_TYPE" ) @@ -70,6 +71,8 @@ func (e *UgcType) UnmarshalJSON(data []byte) error { fallthrough case "SLIDE_TYPE": fallthrough + case "SPREADSHEET_TYPE": + fallthrough case "WORKFLOWS_TYPE": *e = UgcType(v) return nil diff --git a/tests/test_messages.py b/tests/test_messages.py index 132005ec..c0fd29da 100644 --- a/tests/test_messages.py +++ b/tests/test_messages.py @@ -18,7 +18,7 @@ def test_messages_messages(): res = glean.client.messages.retrieve( id_type=models.IDType.CONVERSATION_ID, id="", - datasource=models.Datasource.FACEBOOKWORKPLACE, + datasource=models.Datasource.SLACK, timestamp_millis=558834, ) assert res is not None diff --git a/tests/test_summarize.py b/tests/test_summarize.py index 3f56a110..ef4774cf 100644 --- a/tests/test_summarize.py +++ b/tests/test_summarize.py @@ -1,6 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from glean.api_client import Glean, models +from glean.api_client import Glean import os from tests.test_client import create_test_http_client @@ -18,12 +18,10 @@ def test_summarize_summarize(): res = glean.client.documents.summarize( document_specs=[ { - "ugc_type": models.DocumentSpecUgcType2.ANNOUNCEMENTS, - "ugc_id": "", + "url": "https://nervous-stall.info", }, { - "ugc_type": models.DocumentSpecUgcType2.ANNOUNCEMENTS, - "ugc_id": "", + "id": "", }, ] )