Skip to content

Commit 81ef356

Browse files
committed
## Python SDK Changes:
* `glean.chat.create()`: * `request.input.union(Array<PlatformChatInputMessage>)[].role` **Changed** (Breaking ⚠️) * `response` **Changed** (Breaking ⚠️) * `glean.triggers.create()`: **Added** * `glean.triggers.list()`: **Added** * `glean.triggers.get()`: **Added** * `glean.triggers.update()`: **Added** * `glean.triggers.delete()`: **Added** * `glean.triggers.search_events()`: **Added** * `glean.triggers.list_presets()`: **Added** * `glean.triggers.get_preset()`: **Added** * `glean.triggers.list_preset_input_values()`: **Added** * `glean.triggers.search_preset_events()`: **Added** * `glean.client.search.retrieve_feed()`: * `request.categories[].enum(knowledge_gap)` **Added** * `response.results[]` **Changed**
1 parent 89f7307 commit 81ef356

203 files changed

Lines changed: 11770 additions & 1310 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.speakeasy/gen.lock

Lines changed: 803 additions & 140 deletions
Large diffs are not rendered by default.

.speakeasy/gen.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ generation:
3434
generateNewTests: true
3535
skipResponseBodyAssertions: true
3636
python:
37-
version: 0.15.5
37+
version: 0.16.0
3838
additionalDependencies:
3939
dev: {}
4040
main: {}
@@ -68,6 +68,7 @@ python:
6868
flatteningOrder: parameters-first
6969
forwardCompatibleEnumsByDefault: true
7070
forwardCompatibleUnionsByDefault: "false"
71+
httpClientLibrary: httpx
7172
imports:
7273
option: openapi
7374
paths:

.speakeasy/glean-merged-spec.yaml

Lines changed: 2146 additions & 928 deletions
Large diffs are not rendered by default.

.speakeasy/tests.arazzo.yaml

Lines changed: 183 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159063,7 +159063,7 @@ workflows:
159063159063
- condition: $response.header.Content-Type == application/json
159064159064
- context: $response.body
159065159065
condition: |
159066-
{"id":"<id>","object":"response","created_at":"2026-05-19T05:32:52.505Z","status":"completed","output":[{"type":"message","role":"assistant","content":[{"type":"output_text","text":"<value>"}]}],"store":false,"request_id":"<id>"}
159066+
{"id":"<id>","object":"RESPONSE","created_at":"2026-05-19T05:32:52.505Z","status":"COMPLETED","output":[{"type":"MESSAGE","role":"ASSISTANT","content":[{"type":"OUTPUT_TEXT","text":"<value>"}]}],"store":false,"request_id":"<id>"}
159067159067
type: simple
159068159068
x-speakeasy-test-group: chat_SDK
159069159069
x-speakeasy-test-rebuild: true
@@ -159286,3 +159286,185 @@ workflows:
159286159286
type: simple
159287159287
x-speakeasy-test-group: people
159288159288
x-speakeasy-test-rebuild: true
159289+
- workflowId: platform-triggers-create
159290+
steps:
159291+
- stepId: test
159292+
operationId: platform-triggers-create
159293+
requestBody:
159294+
contentType: application/json
159295+
payload:
159296+
delivery:
159297+
auth:
159298+
secret: secret_test_123
159299+
type: BEARER
159300+
webhook_url: https://customer.app/webhook
159301+
description: High-priority Jira bugs in the Engineering project
159302+
inputs:
159303+
project: ENG
159304+
preset_id: jira_high_priority_bug
159305+
successCriteria:
159306+
- condition: $statusCode == 201
159307+
- condition: $response.header.Content-Type == application/json
159308+
- context: $response.body
159309+
condition: |
159310+
{"trigger":{"trigger_id":"trigger_test_123","preset_id":"jira_high_priority_bug","description":"High-priority Jira bugs in the Engineering project","status":"ENABLED","inputs":{"project":"ENG"},"delivery":{"webhook_url":"https://customer.app/webhook"},"created_at":"2025-08-17T18:19:46.877Z","updated_at":"2024-09-14T03:27:40.201Z","signing_secret":"whsec_xxx"},"request_id":"<id>"}
159311+
type: simple
159312+
x-speakeasy-test-group: triggers
159313+
x-speakeasy-test-rebuild: true
159314+
- workflowId: platform-triggers-list
159315+
steps:
159316+
- stepId: test
159317+
operationId: platform-triggers-list
159318+
parameters:
159319+
- name: page_size
159320+
in: query
159321+
value: 50
159322+
successCriteria:
159323+
- condition: $statusCode == 200
159324+
- condition: $response.header.Content-Type == application/json
159325+
- context: $response.body
159326+
condition: |
159327+
{"results":[],"has_more":true,"next_cursor":"<value>","request_id":"<id>"}
159328+
type: simple
159329+
x-speakeasy-test-group: triggers
159330+
x-speakeasy-test-rebuild: true
159331+
- workflowId: platform-triggers-get
159332+
steps:
159333+
- stepId: test
159334+
operationId: platform-triggers-get
159335+
parameters:
159336+
- name: trigger_id
159337+
in: path
159338+
value: <id>
159339+
successCriteria:
159340+
- condition: $statusCode == 200
159341+
- condition: $response.header.Content-Type == application/json
159342+
- context: $response.body
159343+
condition: |
159344+
{"trigger":{"trigger_id":"trigger_test_123","preset_id":"jira_high_priority_bug","description":"High-priority Jira bugs in the Engineering project","status":"ENABLED","inputs":{"project":"ENG"},"delivery":{"webhook_url":"https://customer.app/webhook"},"created_at":"2024-01-06T01:37:37.232Z","updated_at":"2025-07-02T01:19:47.126Z"},"request_id":"<id>"}
159345+
type: simple
159346+
x-speakeasy-test-group: triggers
159347+
x-speakeasy-test-rebuild: true
159348+
- workflowId: platform-triggers-update
159349+
steps:
159350+
- stepId: test
159351+
operationId: platform-triggers-update
159352+
parameters:
159353+
- name: trigger_id
159354+
in: path
159355+
value: <id>
159356+
requestBody:
159357+
contentType: application/json
159358+
payload:
159359+
delivery:
159360+
auth:
159361+
secret: secret_test_123
159362+
type: BEARER
159363+
webhook_url: https://customer.app/webhook
159364+
description: High-priority Jira bugs in the Engineering project
159365+
inputs:
159366+
project: ENG
159367+
status: ENABLED
159368+
successCriteria:
159369+
- condition: $statusCode == 200
159370+
- condition: $response.header.Content-Type == application/json
159371+
- context: $response.body
159372+
condition: |
159373+
{"trigger":{"trigger_id":"trigger_test_123","preset_id":"jira_high_priority_bug","description":"High-priority Jira bugs in the Engineering project","status":"ENABLED","inputs":{"project":"ENG"},"delivery":{"webhook_url":"https://customer.app/webhook"},"created_at":"2026-09-03T11:57:47.699Z","updated_at":"2026-01-25T02:15:09.513Z"},"request_id":"<id>"}
159374+
type: simple
159375+
x-speakeasy-test-group: triggers
159376+
x-speakeasy-test-rebuild: true
159377+
- workflowId: platform-triggers-events-search
159378+
steps:
159379+
- stepId: test
159380+
operationId: platform-triggers-events-search
159381+
parameters:
159382+
- name: trigger_id
159383+
in: path
159384+
value: <id>
159385+
successCriteria:
159386+
- condition: $statusCode == 200
159387+
- condition: $response.header.Content-Type == application/json
159388+
- context: $response.body
159389+
condition: |
159390+
{"results":[{"event_type":"DOCUMENT_CHANGE","datasource":"GITHUB","reason":"CREATED","doc_type":"Ticket","doc_id":"<id>","view_url":"https://silent-omelet.biz","title":"<value>","event_time":"2024-06-12T22:23:25.274Z"}],"has_more":false,"request_id":"<id>"}
159391+
type: simple
159392+
x-speakeasy-test-group: triggers
159393+
x-speakeasy-test-rebuild: true
159394+
- workflowId: platform-trigger-presets-list
159395+
steps:
159396+
- stepId: test
159397+
operationId: platform-trigger-presets-list
159398+
parameters:
159399+
- name: page_size
159400+
in: query
159401+
value: 50
159402+
successCriteria:
159403+
- condition: $statusCode == 200
159404+
- condition: $response.header.Content-Type == application/json
159405+
- context: $response.body
159406+
condition: |
159407+
{"results":[],"has_more":false,"next_cursor":null,"request_id":"<id>"}
159408+
type: simple
159409+
x-speakeasy-test-group: triggers
159410+
x-speakeasy-test-rebuild: true
159411+
- workflowId: platform-trigger-presets-get
159412+
steps:
159413+
- stepId: test
159414+
operationId: platform-trigger-presets-get
159415+
parameters:
159416+
- name: preset_id
159417+
in: path
159418+
value: <id>
159419+
successCriteria:
159420+
- condition: $statusCode == 200
159421+
- condition: $response.header.Content-Type == application/json
159422+
- context: $response.body
159423+
condition: |
159424+
{"trigger_preset":{"preset_id":"jira_high_priority_bug","datasource":"jira","display_name":"High-priority Jira bugs","description":"Fires when a high-priority bug is created.","inputs":[]},"request_id":"<id>"}
159425+
type: simple
159426+
x-speakeasy-test-group: triggers
159427+
x-speakeasy-test-rebuild: true
159428+
- workflowId: platform-trigger-presets-input-values-list
159429+
steps:
159430+
- stepId: test
159431+
operationId: platform-trigger-presets-input-values-list
159432+
parameters:
159433+
- name: preset_id
159434+
in: path
159435+
value: <id>
159436+
- name: field
159437+
in: query
159438+
value: <value>
159439+
successCriteria:
159440+
- condition: $statusCode == 200
159441+
- condition: $response.header.Content-Type == application/json
159442+
- context: $response.body
159443+
condition: |
159444+
{"results":[{"value":"person@example.com","display_name":"Test User"}],"is_truncated":false,"request_id":"<id>"}
159445+
type: simple
159446+
x-speakeasy-test-group: triggers
159447+
x-speakeasy-test-rebuild: true
159448+
- workflowId: platform-trigger-presets-events-search
159449+
steps:
159450+
- stepId: test
159451+
operationId: platform-trigger-presets-events-search
159452+
parameters:
159453+
- name: preset_id
159454+
in: path
159455+
value: <id>
159456+
requestBody:
159457+
contentType: application/json
159458+
payload:
159459+
inputs:
159460+
TITLE: checkout outage
159461+
page_size: 10
159462+
successCriteria:
159463+
- condition: $statusCode == 200
159464+
- condition: $response.header.Content-Type == application/json
159465+
- context: $response.body
159466+
condition: |
159467+
{"results":[{"event_type":"DOCUMENT_CHANGE","datasource":"GITHUB","reason":"CREATED","doc_type":"Ticket","doc_id":"<id>","view_url":"https://prickly-cutover.info/","title":"<value>","event_time":"2025-04-15T15:45:31.544Z"}],"has_more":false,"request_id":"<id>"}
159468+
type: simple
159469+
x-speakeasy-test-group: triggers
159470+
x-speakeasy-test-rebuild: true

.speakeasy/workflow.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
speakeasyVersion: 1.792.0
1+
speakeasyVersion: 1.795.0
22
sources:
33
Glean API:
44
sourceNamespace: glean-api-specs
5-
sourceRevisionDigest: sha256:ca77ef4550d695da210e8f0d32f3422d29e9d09f7aa66f7b13d248c6ec8c7941
6-
sourceBlobDigest: sha256:469de4cd2c8ab4928c3989656bf63cc265a8ceea5a8b3e3498734137b19723f8
5+
sourceRevisionDigest: sha256:906d5df126293e5f872b886542dc1764cbb8baec6036d021962209571e5a3ecb
6+
sourceBlobDigest: sha256:99172fc095528696df22f3530f78dd46b4178bb369b3a2935294f9825274135e
77
tags:
88
- latest
99
Glean Client API:
@@ -16,10 +16,10 @@ targets:
1616
glean:
1717
source: Glean API
1818
sourceNamespace: glean-api-specs
19-
sourceRevisionDigest: sha256:ca77ef4550d695da210e8f0d32f3422d29e9d09f7aa66f7b13d248c6ec8c7941
20-
sourceBlobDigest: sha256:469de4cd2c8ab4928c3989656bf63cc265a8ceea5a8b3e3498734137b19723f8
19+
sourceRevisionDigest: sha256:906d5df126293e5f872b886542dc1764cbb8baec6036d021962209571e5a3ecb
20+
sourceBlobDigest: sha256:99172fc095528696df22f3530f78dd46b4178bb369b3a2935294f9825274135e
2121
codeSamplesNamespace: glean-api-specs-python-code-samples
22-
codeSamplesRevisionDigest: sha256:2c3560eb6c6ea1afdbbf7fd64c9e27673ca3ae028fb784f30ecd9151553898f8
22+
codeSamplesRevisionDigest: sha256:bd82e18e93b71c667e2ca4aaf76a024c0c4962d96bfbd24e490096c6864b69c1
2323
workflow:
2424
workflowVersion: 1.0.0
2525
speakeasyVersion: latest

README.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -561,8 +561,8 @@ For more information on obtaining the appropriate token type, please contact you
561561

562562
* [create](docs/sdks/skills/README.md#create) - Create skill
563563
* [list](docs/sdks/skills/README.md#list) - List skills
564-
* [validate](docs/sdks/skills/README.md#validate) - Validate skill bundle
565564
* [import_](docs/sdks/skills/README.md#import_) - Import skills from GitHub
565+
* [validate](docs/sdks/skills/README.md#validate) - Validate skill bundle
566566
* [preview_source](docs/sdks/skills/README.md#preview_source) - Preview a GitHub skill source
567567
* [update](docs/sdks/skills/README.md#update) - Update skill
568568
* [delete](docs/sdks/skills/README.md#delete) - Delete skill
@@ -574,6 +574,19 @@ For more information on obtaining the appropriate token type, please contact you
574574
* [retrieve_version](docs/sdks/skills/README.md#retrieve_version) - Retrieve skill version
575575
* [retrieve_version_content](docs/sdks/skills/README.md#retrieve_version_content) - Download skill version content
576576

577+
### [Triggers](docs/sdks/triggers/README.md)
578+
579+
* [create](docs/sdks/triggers/README.md#create) - Create trigger
580+
* [list](docs/sdks/triggers/README.md#list) - List triggers
581+
* [get](docs/sdks/triggers/README.md#get) - Get trigger
582+
* [update](docs/sdks/triggers/README.md#update) - Update trigger
583+
* [delete](docs/sdks/triggers/README.md#delete) - Delete trigger
584+
* [search_events](docs/sdks/triggers/README.md#search_events) - Search events for a trigger
585+
* [list_presets](docs/sdks/triggers/README.md#list_presets) - List trigger presets
586+
* [get_preset](docs/sdks/triggers/README.md#get_preset) - Get trigger preset
587+
* [list_preset_input_values](docs/sdks/triggers/README.md#list_preset_input_values) - Search trigger preset input values
588+
* [search_preset_events](docs/sdks/triggers/README.md#search_preset_events) - Search events for a trigger preset
589+
577590
</details>
578591
<!-- End Available Resources and Operations [operations] -->
579592

@@ -889,6 +902,20 @@ class CustomClient(AsyncHttpClient):
889902

890903
s = Glean(async_client=CustomClient(httpx.AsyncClient()))
891904
```
905+
### httpx2 (Pydantic's httpx fork)
906+
907+
[httpx2](https://httpx2.pydantic.dev/) is Pydantic's maintained fork of `httpx`. To run this SDK on httpx2, call `alias_httpx()` at your program's entry point, before importing the SDK, so every `import httpx` — including the ones inside the SDK — resolves to `httpx2`:
908+
```python
909+
import httpx2
910+
911+
httpx2.alias_httpx()
912+
913+
from glean.api_client import Glean
914+
915+
s = Glean()
916+
```
917+
918+
An SDK can also be generated against httpx2 directly, so it depends on the fork instead of `httpx`, by setting `python.httpClientLibrary: httpx2` in `gen.yaml`.
892919
<!-- End Custom HTTP Client [http-client] -->
893920

894921
<!-- Start Resource Management [resource-management] -->

RELEASES.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -818,4 +818,14 @@ Based on:
818818
### Generated
819819
- [python v0.15.5] .
820820
### Releases
821-
- [PyPI v0.15.5] https://pypi.org/project/glean-api-client/0.15.5 - .
821+
- [PyPI v0.15.5] https://pypi.org/project/glean-api-client/0.15.5 - .
822+
823+
## 2026-08-19 17:25:59
824+
### Changes
825+
Based on:
826+
- OpenAPI Doc
827+
- Speakeasy CLI 1.795.0 (2.931.0) https://github.com/speakeasy-api/speakeasy
828+
### Generated
829+
- [python v0.16.0] .
830+
### Releases
831+
- [PyPI v0.16.0] https://pypi.org/project/glean-api-client/0.16.0 - .

0 commit comments

Comments
 (0)