Skip to content

Commit 12092b9

Browse files
committed
## Python SDK Changes:
* `glean.client.tools.retrieve_tool_server_auth_status()`: **Added** * `glean.client.tools.authorize_tool_server()`: **Added** * `glean.client.search.retrieve_feed()`: * `request.categories[].enum(admin_health_center)` **Added** * `response.results[]` **Changed**
1 parent 4e0a555 commit 12092b9

49 files changed

Lines changed: 1675 additions & 90 deletions

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: 153 additions & 53 deletions
Large diffs are not rendered by default.

.speakeasy/gen.yaml

Lines changed: 3 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.1
37+
version: 0.15.2
3838
additionalDependencies:
3939
dev: {}
4040
main: {}
@@ -51,6 +51,7 @@ python:
5151
constFieldCasing: upper
5252
defaultErrorName: GleanError
5353
description: Python Client SDK Generated by Speakeasy.
54+
durationFormat: false
5455
enableCustomCodeRegions: false
5556
enumFormat: enum
5657
envVarPrefix: GLEAN
@@ -99,3 +100,4 @@ python:
99100
sseFlatResponse: false
100101
templateVersion: v2
101102
useAsyncHooks: false
103+
uuidFormat: false

.speakeasy/glean-merged-spec.yaml

Lines changed: 196 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ openapi: 3.0.0
22
info:
33
version: "0.9.0"
44
title: Glean API
5-
x-source-commit-sha: 33bf057cf0f948a83126e81582717aebdb622bfa
6-
x-open-api-commit-sha: 4f3a4abf8f003a4edc5522021b22184c76d051ad
5+
x-source-commit-sha: 36490380aba39f767c75800da51cc926b7c58f58
6+
x-open-api-commit-sha: 174a041ef5d07c9ff5b6c8244de3262dbdad2b24
77
description: |
88
# Introduction
99
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.
@@ -2973,6 +2973,89 @@ paths:
29732973
required: true
29742974
schema:
29752975
type: string
2976+
/rest/api/v1/tool-servers/{serverId}/auth:
2977+
get:
2978+
operationId: getToolServerAuthStatus
2979+
summary: Get end-user authentication status for a tool server.
2980+
description: |
2981+
Returns display information and the calling user's current authentication status
2982+
for the specified tool server.
2983+
tags:
2984+
- Tools
2985+
security:
2986+
- APIToken: []
2987+
responses:
2988+
"200":
2989+
description: Successful operation
2990+
content:
2991+
application/json:
2992+
schema:
2993+
$ref: '#/components/schemas/ToolServerAuthStatusResponse'
2994+
"400":
2995+
description: Bad Request
2996+
"401":
2997+
description: Unauthorized
2998+
"404":
2999+
description: Tool server not found
3000+
"429":
3001+
description: Too Many Requests
3002+
x-visibility: Preview
3003+
x-glean-experimental:
3004+
id: 52fde6ec-c18b-4de6-b761-f82008542ae7
3005+
introduced: "2026-07-02"
3006+
x-speakeasy-name-override: retrieveToolServerAuthStatus
3007+
x-speakeasy-group: client.tools
3008+
post:
3009+
operationId: authorizeToolServer
3010+
summary: Start the OAuth authorization flow for a tool server.
3011+
description: |
3012+
Initiates the third-party OAuth flow for the specified tool server and returns the
3013+
authorization URL that the client should navigate the end user to. After the OAuth
3014+
callback completes, the user's browser is redirected back to `returnUrl` with query
3015+
parameters indicating the result.
3016+
3017+
`returnUrl` must match the tenant's configured return URL allowlist; otherwise the
3018+
request is rejected with 400.
3019+
tags:
3020+
- Tools
3021+
security:
3022+
- APIToken: []
3023+
requestBody:
3024+
content:
3025+
application/json:
3026+
schema:
3027+
$ref: '#/components/schemas/AuthorizeToolServerRequest'
3028+
required: true
3029+
responses:
3030+
"200":
3031+
description: Successful operation
3032+
content:
3033+
application/json:
3034+
schema:
3035+
$ref: '#/components/schemas/AuthorizeToolServerResponse'
3036+
"400":
3037+
description: Invalid request (e.g. returnUrl not in allowlist, unsupported auth type)
3038+
"401":
3039+
description: Unauthorized
3040+
"403":
3041+
description: User not entitled to the tool server
3042+
"404":
3043+
description: Tool server not found
3044+
"429":
3045+
description: Too Many Requests
3046+
x-visibility: Preview
3047+
x-glean-experimental:
3048+
id: 1935476e-ecaf-4c1f-a9fd-1e768cf68f30
3049+
introduced: "2026-07-02"
3050+
x-speakeasy-name-override: authorizeToolServer
3051+
x-speakeasy-group: client.tools
3052+
parameters:
3053+
- name: serverId
3054+
in: path
3055+
description: Unique identifier of the tool server.
3056+
required: true
3057+
schema:
3058+
type: string
29763059
/api/index/v1/indexdocument:
29773060
post:
29783061
summary: Index document
@@ -5091,6 +5174,67 @@ components:
50915174
- rate_limit_exceeded
50925175
- internal_error
50935176
- service_unavailable
5177+
x-glean-problem-detail-codes:
5178+
invalid_request:
5179+
status: 400
5180+
title: Invalid Request
5181+
missing_required_field:
5182+
status: 400
5183+
title: Missing Required Field
5184+
invalid_parameter:
5185+
status: 400
5186+
title: Invalid Parameter
5187+
invalid_cursor:
5188+
status: 400
5189+
title: Invalid Pagination Cursor
5190+
expired_cursor:
5191+
status: 400
5192+
title: Expired Pagination Cursor
5193+
invalid_filter:
5194+
status: 400
5195+
title: Invalid Filter
5196+
invalid_datasource:
5197+
status: 400
5198+
title: Invalid Datasource
5199+
authentication_required:
5200+
status: 401
5201+
title: Authentication Required
5202+
token_expired:
5203+
status: 401
5204+
title: Token Expired
5205+
insufficient_permissions:
5206+
status: 403
5207+
title: Insufficient Permissions
5208+
resource_not_found:
5209+
status: 404
5210+
title: Resource Not Found
5211+
method_not_allowed:
5212+
status: 405
5213+
title: Method Not Allowed
5214+
request_timeout:
5215+
status: 408
5216+
title: Request Timeout
5217+
request_too_large:
5218+
status: 413
5219+
title: Request Too Large
5220+
conflict:
5221+
status: 409
5222+
title: Conflict
5223+
gone:
5224+
status: 410
5225+
title: Gone
5226+
unprocessable_query:
5227+
status: 422
5228+
title: Unprocessable Query
5229+
rate_limit_exceeded:
5230+
status: 429
5231+
title: Rate Limit Exceeded
5232+
internal_error:
5233+
status: 500
5234+
title: Internal Error
5235+
service_unavailable:
5236+
status: 503
5237+
title: Service Unavailable
50945238
example: invalid_cursor
50955239
PlatformProblemDetailError:
50965240
type: object
@@ -5125,7 +5269,7 @@ components:
51255269
type: string
51265270
format: uri
51275271
description: URI identifying the error type.
5128-
example: https://developer.glean.com/errors/invalid-cursor
5272+
example: https://developers.glean.com/errors/invalid-cursor
51295273
title:
51305274
type: string
51315275
description: Short, human-readable summary of the error.
@@ -5145,7 +5289,7 @@ components:
51455289
type: string
51465290
format: uri
51475291
description: Direct URL to documentation for this error code.
5148-
example: https://developer.glean.com/errors/invalid-cursor
5292+
example: https://developers.glean.com/errors/invalid-cursor
51495293
request_id:
51505294
type: string
51515295
description: Platform-generated request ID for support correlation.
@@ -11970,6 +12114,7 @@ components:
1197012114
- DEMO_CARD
1197112115
- OOO_PLANNER
1197212116
- OOO_CATCH_UP
12117+
- ADMIN_HEALTH_CENTER
1197312118
description: Categories of content requested. An allowlist gives flexibility to request content separately or together.
1197412119
requestOptions:
1197512120
$ref: '#/components/schemas/FeedRequestOptions'
@@ -12413,6 +12558,7 @@ components:
1241312558
- DEMO_CARD
1241412559
- OOO_PLANNER
1241512560
- OOO_CATCH_UP
12561+
- ADMIN_HEALTH_CENTER
1241612562
description: Type of the justification.
1241712563
justification:
1241812564
type: string
@@ -12502,6 +12648,7 @@ components:
1250212648
- DEMO_CARD
1250312649
- OOO_PLANNER
1250412650
- OOO_CATCH_UP
12651+
- ADMIN_HEALTH_CENTER
1250512652
description: Category of the result, one of the requested categories in incoming request.
1250612653
primaryEntry:
1250712654
$ref: '#/components/schemas/FeedEntry'
@@ -13135,6 +13282,51 @@ components:
1313513282
After the user consents, control returns to `returnUrl` from the request.
1313613283
required:
1313713284
- redirectUrl
13285+
ToolServerAuthStatus:
13286+
type: string
13287+
enum:
13288+
- AWAITING_AUTH
13289+
- AUTHORIZED
13290+
description: Authentication status for the calling user.
13291+
ToolServerAuthStatusResponse:
13292+
type: object
13293+
properties:
13294+
displayName:
13295+
type: string
13296+
description: Human-readable name of the tool server.
13297+
logoUrl:
13298+
type: string
13299+
description: Logo URL for the tool server.
13300+
description:
13301+
type: string
13302+
description: Brief description of the tool server.
13303+
authStatus:
13304+
$ref: '#/components/schemas/ToolServerAuthStatus'
13305+
authType:
13306+
$ref: '#/components/schemas/ActionAuthType'
13307+
required:
13308+
- authStatus
13309+
- authType
13310+
AuthorizeToolServerRequest:
13311+
type: object
13312+
properties:
13313+
returnUrl:
13314+
type: string
13315+
description: |
13316+
URL to redirect the end user's browser back to after the OAuth flow completes.
13317+
Must be present in the tenant's configured return URL allowlist.
13318+
required:
13319+
- returnUrl
13320+
AuthorizeToolServerResponse:
13321+
type: object
13322+
properties:
13323+
authorizationUrl:
13324+
type: string
13325+
description: |
13326+
URL that the client should navigate the end user to in order to begin the OAuth flow.
13327+
After the user consents, control returns to `returnUrl` from the request.
13328+
required:
13329+
- authorizationUrl
1313813330
IndexDocumentRequest:
1313913331
type: object
1314013332
properties:

.speakeasy/tests.arazzo.yaml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158828,3 +158828,41 @@ workflows:
158828158828
type: simple
158829158829
x-speakeasy-test-group: search
158830158830
x-speakeasy-test-rebuild: true
158831+
- workflowId: getToolServerAuthStatus
158832+
steps:
158833+
- stepId: test
158834+
operationId: getToolServerAuthStatus
158835+
parameters:
158836+
- name: serverId
158837+
in: path
158838+
value: <id>
158839+
successCriteria:
158840+
- condition: $statusCode == 200
158841+
- condition: $response.header.Content-Type == application/json
158842+
- context: $response.body
158843+
condition: |
158844+
{"authStatus":"AUTHORIZED","authType":"AUTH_NONE"}
158845+
type: simple
158846+
x-speakeasy-test-group: tools
158847+
x-speakeasy-test-rebuild: true
158848+
- workflowId: authorizeToolServer
158849+
steps:
158850+
- stepId: test
158851+
operationId: authorizeToolServer
158852+
parameters:
158853+
- name: serverId
158854+
in: path
158855+
value: <id>
158856+
requestBody:
158857+
contentType: application/json
158858+
payload:
158859+
returnUrl: https://lucky-disadvantage.com
158860+
successCriteria:
158861+
- condition: $statusCode == 200
158862+
- condition: $response.header.Content-Type == application/json
158863+
- context: $response.body
158864+
condition: |
158865+
{"authorizationUrl":"https://shocked-casket.name/"}
158866+
type: simple
158867+
x-speakeasy-test-group: tools
158868+
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.788.1
1+
speakeasyVersion: 1.789.0
22
sources:
33
Glean API:
44
sourceNamespace: glean-api-specs
5-
sourceRevisionDigest: sha256:8b1b5374e6d5c2f98bc7cddfa619249cd150deba48f6c8b9f2637f723ff73fd2
6-
sourceBlobDigest: sha256:3373213fc1a05b08aad1cf828d00ce46e1da651645fc1ccde24fcdf3efca5861
5+
sourceRevisionDigest: sha256:451b11d49cfc606413dec737ec60780f6dae98a9f29f810c0d1d8e0c90c8755f
6+
sourceBlobDigest: sha256:97ceef869ba9b5d6e0ad7c7c9e2bd780314789c83dd4eb3c6cc3afe08f6c3c88
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:8b1b5374e6d5c2f98bc7cddfa619249cd150deba48f6c8b9f2637f723ff73fd2
20-
sourceBlobDigest: sha256:3373213fc1a05b08aad1cf828d00ce46e1da651645fc1ccde24fcdf3efca5861
19+
sourceRevisionDigest: sha256:451b11d49cfc606413dec737ec60780f6dae98a9f29f810c0d1d8e0c90c8755f
20+
sourceBlobDigest: sha256:97ceef869ba9b5d6e0ad7c7c9e2bd780314789c83dd4eb3c6cc3afe08f6c3c88
2121
codeSamplesNamespace: glean-api-specs-python-code-samples
22-
codeSamplesRevisionDigest: sha256:42ee88e1e120eaba45acb7fec56cd56a4a6c0988876f4b9be96e2ac3adf98ea9
22+
codeSamplesRevisionDigest: sha256:0c2ffb1bbb551c0718176c53dd5fdd322c6c78ec6ab0979f9469cfef459b051e
2323
workflow:
2424
workflowVersion: 1.0.0
2525
speakeasyVersion: latest

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,8 @@ For more information on obtaining the appropriate token type, please contact you
464464
* [run](docs/sdks/tools/README.md#run) - Execute the specified tool
465465
* [retrieve_action_pack_auth_status](docs/sdks/tools/README.md#retrieve_action_pack_auth_status) - Get end-user authentication status for an action pack.
466466
* [authorize_action_pack](docs/sdks/tools/README.md#authorize_action_pack) - Start the OAuth authorization flow for an action pack.
467+
* [retrieve_tool_server_auth_status](docs/sdks/tools/README.md#retrieve_tool_server_auth_status) - Get end-user authentication status for a tool server.
468+
* [authorize_tool_server](docs/sdks/tools/README.md#authorize_tool_server) - Start the OAuth authorization flow for a tool server.
467469

468470
### [Client.Verification](docs/sdks/clientverification/README.md)
469471

RELEASES.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -778,4 +778,14 @@ Based on:
778778
### Generated
779779
- [python v0.15.1] .
780780
### Releases
781-
- [PyPI v0.15.1] https://pypi.org/project/glean-api-client/0.15.1 - .
781+
- [PyPI v0.15.1] https://pypi.org/project/glean-api-client/0.15.1 - .
782+
783+
## 2026-07-07 21:23:00
784+
### Changes
785+
Based on:
786+
- OpenAPI Doc
787+
- Speakeasy CLI 1.789.0 (2.916.2) https://github.com/speakeasy-api/speakeasy
788+
### Generated
789+
- [python v0.15.2] .
790+
### Releases
791+
- [PyPI v0.15.2] https://pypi.org/project/glean-api-client/0.15.2 - .

docs/errors/platformproblemdetailerror.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ Error response following RFC 9457, extended with `code` and `documentation_url`
88

99
| Field | Type | Required | Description | Example |
1010
| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
11-
| `type` | *str* | :heavy_check_mark: | URI identifying the error type. | https://developer.glean.com/errors/invalid-cursor |
11+
| `type` | *str* | :heavy_check_mark: | URI identifying the error type. | https://developers.glean.com/errors/invalid-cursor |
1212
| `title` | *str* | :heavy_check_mark: | Short, human-readable summary of the error. | Invalid Pagination Cursor |
1313
| `status` | *int* | :heavy_check_mark: | HTTP status code mirrored from the response. | 400 |
1414
| `detail` | *str* | :heavy_check_mark: | Human-readable explanation specific to this occurrence. | The provided cursor has expired. Start a new search to get a fresh cursor.<br/> |
1515
| `code` | [models.PlatformProblemDetailCode](../models/platformproblemdetailcode.md) | :heavy_check_mark: | Stable machine-readable error code. | invalid_cursor |
16-
| `documentation_url` | *Optional[str]* | :heavy_minus_sign: | Direct URL to documentation for this error code. | https://developer.glean.com/errors/invalid-cursor |
16+
| `documentation_url` | *Optional[str]* | :heavy_minus_sign: | Direct URL to documentation for this error code. | https://developers.glean.com/errors/invalid-cursor |
1717
| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | req_7f8a9b0c1d2e |
1818
| `errors` | List[[models.PlatformProblemDetailError](../models/platformproblemdetailerror.md)] | :heavy_minus_sign: | Field-level validation problems, one entry per offending field. | |

0 commit comments

Comments
 (0)