From ca311cce58791bb6beedc6d77ad7001124ef7713 Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Sat, 26 Sep 2026 03:57:28 +0000 Subject: [PATCH 1/2] =?UTF-8?q?##=20Python=20SDK=20Changes:=20*=20`glean.s?= =?UTF-8?q?kills.create()`:=20=20=20*=20=20`response`=20**Changed**=20(Bre?= =?UTF-8?q?aking=20=E2=9A=A0=EF=B8=8F)=20=20=20*=20=20`error.status[409]`?= =?UTF-8?q?=20**Added**=20*=20`glean.skills.list()`:=20=20=20*=20=20`reque?= =?UTF-8?q?st.page=5Fsize`=20**Changed**=20=20=20*=20=20`response`=20**Cha?= =?UTF-8?q?nged**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`glean.skills.im?= =?UTF-8?q?port()`:=20=20=20*=20=20`response`=20**Changed**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20=20=20*=20=20`error.status[422]`=20**Adde?= =?UTF-8?q?d**=20*=20`glean.skills.preview=5Fsource()`:=20=20=20*=20=20`re?= =?UTF-8?q?quest.stream`=20**Removed**=20(Breaking=20=E2=9A=A0=EF=B8=8F)?= =?UTF-8?q?=20=20=20*=20=20`response.status[200].content[text/event-stream?= =?UTF-8?q?`=20**Removed**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20=20=20*=20?= =?UTF-8?q?=20`error.status[422]`=20**Added**=20*=20`glean.skills.update()?= =?UTF-8?q?`:=20=20`response.skill`=20**Changed**=20(Breaking=20=E2=9A=A0?= =?UTF-8?q?=EF=B8=8F)=20*=20`glean.skills.retrieve()`:=20=20`response.skil?= =?UTF-8?q?l`=20**Changed**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`glean?= =?UTF-8?q?.skills.sync()`:=20=20=20*=20=20`response`=20**Changed**=20(Bre?= =?UTF-8?q?aking=20=E2=9A=A0=EF=B8=8F)=20=20=20*=20=20`error`=20**Changed*?= =?UTF-8?q?*=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`glean.skills.create?= =?UTF-8?q?=5Fversion()`:=20=20`response`=20**Changed**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20*=20`glean.skills.list=5Fversions()`:=20?= =?UTF-8?q?=20=20*=20=20`request.page=5Fsize`=20**Changed**=20=20=20*=20?= =?UTF-8?q?=20`response`=20**Changed**=20(Breaking=20=E2=9A=A0=EF=B8=8F)?= =?UTF-8?q?=20*=20`glean.client.announcements.create()`:=20=20=20*=20=20`r?= =?UTF-8?q?equest.body.structured=5Flist[].document.metadata.author.identi?= =?UTF-8?q?ty=5Fonly`=20**Added**=20=20=20*=20=20`response.body.structured?= =?UTF-8?q?=5Flist[].document.metadata.author.identity=5Fonly`=20**Added**?= =?UTF-8?q?=20*=20`glean.client.announcements.update()`:=20=20=20*=20=20`r?= =?UTF-8?q?equest.body.structured=5Flist[].document.metadata.author.identi?= =?UTF-8?q?ty=5Fonly`=20**Added**=20=20=20*=20=20`response.body.structured?= =?UTF-8?q?=5Flist[].document.metadata.author.identity=5Fonly`=20**Added**?= =?UTF-8?q?=20*=20`glean.client.answers.create()`:=20=20=20*=20=20`request?= =?UTF-8?q?.data.added=5Froles[].person.identity=5Fonly`=20**Added**=20=20?= =?UTF-8?q?=20*=20=20`response.added=5Froles[].person.identity=5Fonly`=20*?= =?UTF-8?q?*Added**=20*=20`glean.client.answers.update()`:=20=20=20*=20=20?= =?UTF-8?q?`request.added=5Froles[].person.identity=5Fonly`=20**Added**=20?= =?UTF-8?q?=20=20*=20=20`response.added=5Froles[].person.identity=5Fonly`?= =?UTF-8?q?=20**Added**=20*=20`glean.client.answers.retrieve()`:=20=20`res?= =?UTF-8?q?ponse.answer=5Fresult.answer.added=5Froles[].person.identity=5F?= =?UTF-8?q?only`=20**Added**=20*=20`glean.client.answers.list()`:=20=20`re?= =?UTF-8?q?sponse.answer=5Fresults[].answer.added=5Froles[].person.identit?= =?UTF-8?q?y=5Fonly`=20**Added**=20*=20`glean.client.chat.create()`:=20=20?= =?UTF-8?q?=20*=20=20`request.messages[].citations[].source=5Fdocument.met?= =?UTF-8?q?adata.author.identity=5Fonly`=20**Added**=20=20=20*=20=20`respo?= =?UTF-8?q?nse.messages[].citations[].source=5Fdocument.metadata.author.id?= =?UTF-8?q?entity=5Fonly`=20**Added**=20*=20`glean.client.chat.retrieve()`?= =?UTF-8?q?:=20=20=20*=20=20`response.chat=5Fresult.chat.created=5Fby.iden?= =?UTF-8?q?tity=5Fonly`=20**Added**=20=20=20*=20=20`error.created=5Fby.ide?= =?UTF-8?q?ntity=5Fonly`=20**Added**=20*=20`glean.client.chat.list()`:=20?= =?UTF-8?q?=20`response.chat=5Fresults[].chat.created=5Fby.identity=5Fonly?= =?UTF-8?q?`=20**Added**=20*=20`glean.client.chat.create=5Fstream()`:=20?= =?UTF-8?q?=20=20*=20=20`request.messages[].citations[].source=5Fdocument.?= =?UTF-8?q?metadata.author.identity=5Fonly`=20**Added**=20*=20`glean.clien?= =?UTF-8?q?t.agents.create()`:=20=20`response.workflow.author.identity=5Fo?= =?UTF-8?q?nly`=20**Added**=20*=20`glean.client.agents.import()`:=20=20`re?= =?UTF-8?q?sponse.workflow=5Fresult.workflow.author.identity=5Fonly`=20**A?= =?UTF-8?q?dded**=20*=20`glean.client.collections.add=5Fitems()`:=20=20`re?= =?UTF-8?q?sponse.collection.added=5Froles[].person.identity=5Fonly`=20**A?= =?UTF-8?q?dded**=20*=20`glean.client.collections.create()`:=20=20=20*=20?= =?UTF-8?q?=20`request.added=5Froles[].person.identity=5Fonly`=20**Added**?= =?UTF-8?q?=20=20=20*=20=20`response.union(class=20(0)).collection.added?= =?UTF-8?q?=5Froles[].person.identity=5Fonly`=20**Added**=20*=20`glean.cli?= =?UTF-8?q?ent.collections.delete=5Fitem()`:=20=20`response.collection.add?= =?UTF-8?q?ed=5Froles[].person.identity=5Fonly`=20**Added**=20*=20`glean.c?= =?UTF-8?q?lient.collections.update()`:=20=20=20*=20=20`request.added=5Fro?= =?UTF-8?q?les[].person.identity=5Fonly`=20**Added**=20=20=20*=20=20`respo?= =?UTF-8?q?nse.added=5Froles[].person.identity=5Fonly`=20**Added**=20*=20`?= =?UTF-8?q?glean.client.collections.update=5Fitem()`:=20=20`response.colle?= =?UTF-8?q?ction.added=5Froles[].person.identity=5Fonly`=20**Added**=20*?= =?UTF-8?q?=20`glean.client.collections.retrieve()`:=20=20`response.collec?= =?UTF-8?q?tion.added=5Froles[].person.identity=5Fonly`=20**Added**=20*=20?= =?UTF-8?q?`glean.client.collections.list()`:=20=20`response.collections[]?= =?UTF-8?q?.added=5Froles[].person.identity=5Fonly`=20**Added**=20*=20`gle?= =?UTF-8?q?an.client.documents.retrieve()`:=20=20`response.documents.Map.union(Document).metadata.author.identity=5Fonly?= =?UTF-8?q?`=20**Added**=20*=20`glean.client.documents.retrieve=5Fby=5Ffac?= =?UTF-8?q?ets()`:=20=20`response.documents[].metadata.author.identity=5Fo?= =?UTF-8?q?nly`=20**Added**=20*=20`glean.client.insights.retrieve()`:=20?= =?UTF-8?q?=20`response.glean=5Fassist.activity=5Finsights[].user.identity?= =?UTF-8?q?=5Fonly`=20**Added**=20*=20`glean.client.messages.retrieve()`:?= =?UTF-8?q?=20=20`response.search=5Fresponse.results[].structured=5Fresult?= =?UTF-8?q?s[].document.metadata.author.identity=5Fonly`=20**Added**=20*?= =?UTF-8?q?=20`glean.client.pins.update()`:=20=20`response.attribution.ide?= =?UTF-8?q?ntity=5Fonly`=20**Added**=20*=20`glean.client.pins.retrieve()`:?= =?UTF-8?q?=20=20`response.pin.attribution.identity=5Fonly`=20**Added**=20?= =?UTF-8?q?*=20`glean.client.pins.list()`:=20=20`response.pins[].attributi?= =?UTF-8?q?on.identity=5Fonly`=20**Added**=20*=20`glean.client.pins.create?= =?UTF-8?q?()`:=20=20`response.attribution.identity=5Fonly`=20**Added**=20?= =?UTF-8?q?*=20`glean.client.search.query=5Fas=5Fadmin()`:=20=20=20*=20=20?= =?UTF-8?q?`request.source=5Fdocument.metadata.author.identity=5Fonly`=20*?= =?UTF-8?q?*Added**=20=20=20*=20=20`response.results[].structured=5Fresult?= =?UTF-8?q?s[].document.metadata.author.identity=5Fonly`=20**Added**=20*?= =?UTF-8?q?=20`glean.client.search.autocomplete()`:=20=20`response.results?= =?UTF-8?q?[].document.metadata.author.identity=5Fonly`=20**Added**=20*=20?= =?UTF-8?q?`glean.client.search.retrieve=5Ffeed()`:=20=20=20*=20=20`reques?= =?UTF-8?q?t.categories[].enum(onboarding=5Fauthorization)`=20**Added**=20?= =?UTF-8?q?=20=20*=20=20`response.results[]`=20**Changed**=20*=20`glean.cl?= =?UTF-8?q?ient.search.recommendations()`:=20=20=20*=20=20`request.source?= =?UTF-8?q?=5Fdocument.metadata.author.identity=5Fonly`=20**Added**=20=20?= =?UTF-8?q?=20*=20=20`response.results[].structured=5Fresults[].document.m?= =?UTF-8?q?etadata.author.identity=5Fonly`=20**Added**=20*=20`glean.client?= =?UTF-8?q?.search.query()`:=20=20=20*=20=20`request.source=5Fdocument.met?= =?UTF-8?q?adata.author.identity=5Fonly`=20**Added**=20=20=20*=20=20`respo?= =?UTF-8?q?nse.results[].structured=5Fresults[].document.metadata.author.i?= =?UTF-8?q?dentity=5Fonly`=20**Added**=20*=20`glean.client.entities.list()?= =?UTF-8?q?`:=20=20`response.results[].identity=5Fonly`=20**Added**=20*=20?= =?UTF-8?q?`glean.client.entities.read=5Fpeople()`:=20=20=20*=20=20`reques?= =?UTF-8?q?t.fallback=5Fto=5Fauthenticated=5Fidentity`=20**Added**=20=20?= =?UTF-8?q?=20*=20=20`response.results[].identity=5Fonly`=20**Added**=20*?= =?UTF-8?q?=20`glean.client.shortcuts.create()`:=20=20=20*=20=20`request.d?= =?UTF-8?q?ata.added=5Froles[].person.identity=5Fonly`=20**Added**=20=20?= =?UTF-8?q?=20*=20=20`response.shortcut.added=5Froles[].person.identity=5F?= =?UTF-8?q?only`=20**Added**=20*=20`glean.client.shortcuts.retrieve()`:=20?= =?UTF-8?q?=20`response.shortcut.added=5Froles[].person.identity=5Fonly`?= =?UTF-8?q?=20**Added**=20*=20`glean.client.shortcuts.list()`:=20=20`respo?= =?UTF-8?q?nse.shortcuts[].added=5Froles[].person.identity=5Fonly`=20**Add?= =?UTF-8?q?ed**=20*=20`glean.client.shortcuts.update()`:=20=20=20*=20=20`r?= =?UTF-8?q?equest.added=5Froles[].person.identity=5Fonly`=20**Added**=20?= =?UTF-8?q?=20=20*=20=20`response.shortcut.added=5Froles[].person.identity?= =?UTF-8?q?=5Fonly`=20**Added**=20*=20`glean.client.verification.add=5Frem?= =?UTF-8?q?inder()`:=20=20`response.metadata.last=5Fverifier.identity=5Fon?= =?UTF-8?q?ly`=20**Added**=20*=20`glean.client.verification.list()`:=20=20?= =?UTF-8?q?`response.documents[].metadata.last=5Fverifier.identity=5Fonly`?= =?UTF-8?q?=20**Added**=20*=20`glean.client.verification.verify()`:=20=20`?= =?UTF-8?q?response.metadata.last=5Fverifier.identity=5Fonly`=20**Added**?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .speakeasy/gen.lock | 606 ++++--- .speakeasy/gen.yaml | 2 +- .speakeasy/glean-merged-spec.yaml | 1494 +++++++++++++++-- .speakeasy/tests.arazzo.yaml | 25 +- .speakeasy/workflow.lock | 12 +- README.md | 1 + RELEASES.md | 12 +- docs/models/autocompleterequestresulttype.md | 2 +- docs/models/feedrequestcategory.md | 3 +- docs/models/feedresultcategory.md | 3 +- docs/models/justificationtype.md | 3 +- docs/models/peoplerequest.md | 17 +- docs/models/person.md | 1 + docs/models/platformproblemdetail.md | 18 + docs/models/platformskill.md | 26 +- docs/models/platformskillimportresponse.md | 8 +- docs/models/platformskillorigin.md | 5 +- docs/models/platformskillslistrequest.md | 8 +- docs/models/platformskillslistresponse.md | 2 +- .../platformskillslistversionsrequest.md | 10 +- .../platformskillsourcepreviewstreamerror.md | 12 + ...sourcepreviewstreamerrorserversentevent.md | 10 + ...atformskillsourcepreviewstreamerrortype.md | 18 + ...sourcepreviewstreameventserversentevent.md | 37 + ...latformskillsourcepreviewstreamprogress.md | 13 + ...rcepreviewstreamprogressserversentevent.md | 10 + ...ormskillsourcepreviewstreamprogresstype.md | 18 + .../platformskillsourcepreviewstreamresult.md | 11 + ...ourcepreviewstreamresultserversentevent.md | 10 + ...tformskillsourcepreviewstreamresulttype.md | 18 + .../platformskillsourcepreviewstreamscan.md | 12 + ...lsourcepreviewstreamscanserversentevent.md | 10 + ...latformskillsourcepreviewstreamscantype.md | 18 + .../platformskillsourcepreviewstreamskill.md | 11 + ...sourcepreviewstreamskillserversentevent.md | 10 + ...atformskillsourcepreviewstreamskilltype.md | 18 + ... => platformskillspreviewsourcerequest.md} | 4 +- .../platformskillspreviewsourceresponse.md | 17 - ...latformskillspreviewsourcestreamrequest.md | 9 + docs/models/platformskillstatus.md | 3 +- docs/models/platformskillsyncresponse.md | 11 +- docs/models/platformskillsyncresultstatus.md | 18 - docs/models/platformskillupdaterequest.md | 6 +- docs/models/platformskillupdatestatus.md | 3 +- .../platformskillversionslistresponse.md | 2 +- docs/sdks/entities/README.md | 23 +- docs/sdks/skills/README.md | 133 +- pyproject.toml | 2 +- src/glean/api_client/_version.py | 6 +- src/glean/api_client/entities.py | 6 + src/glean/api_client/models/__init__.py | 142 +- .../api_client/models/autocompleterequest.py | 2 +- src/glean/api_client/models/feedentry.py | 1 + src/glean/api_client/models/feedrequest.py | 1 + src/glean/api_client/models/feedresult.py | 1 + src/glean/api_client/models/peoplerequest.py | 8 + src/glean/api_client/models/person.py | 9 +- .../models/platform_skills_list_versionsop.py | 6 +- .../models/platform_skills_listop.py | 6 +- ...latform_skills_preview_source_streamop.py} | 26 +- .../platform_skills_preview_sourceop.py | 55 +- .../models/platformproblemdetail.py | 87 + src/glean/api_client/models/platformskill.py | 21 +- .../models/platformskillimportresponse.py | 8 +- .../api_client/models/platformskillorigin.py | 4 +- .../models/platformskillslistresponse.py | 4 +- .../platformskillsourcepreviewstreamerror.py | 65 + ...sourcepreviewstreamerrorserversentevent.py | 55 + ...sourcepreviewstreameventserversentevent.py | 52 + ...latformskillsourcepreviewstreamprogress.py | 41 + ...rcepreviewstreamprogressserversentevent.py | 55 + .../platformskillsourcepreviewstreamresult.py | 33 + ...ourcepreviewstreamresultserversentevent.py | 55 + .../platformskillsourcepreviewstreamscan.py | 37 + ...lsourcepreviewstreamscanserversentevent.py | 55 + .../platformskillsourcepreviewstreamskill.py | 33 + ...sourcepreviewstreamskillserversentevent.py | 55 + .../api_client/models/platformskillstatus.py | 2 +- .../models/platformskillsyncresponse.py | 10 +- .../models/platformskillsyncresultstatus.py | 10 - .../models/platformskillupdaterequest.py | 8 +- .../models/platformskillupdatestatus.py | 2 +- .../platformskillversionslistresponse.py | 4 +- src/glean/api_client/skills.py | 430 ++++- .../internal/handler/pathgetapiskills.go | 2 +- .../handler/pathgetapiskillsskillid.go | 2 +- .../pathgetapiskillsskillidversions.go | 2 +- .../handler/pathpatchapiskillsskillid.go | 2 +- .../internal/handler/pathpostapiskills.go | 8 +- .../handler/pathpostapiskillsimport.go | 2 +- .../handler/pathpostapiskillsskillidsync.go | 7 +- .../pathpostapiskillsskillidversions.go | 2 +- .../pathpostapiskillssourcespreview.go | 2 +- .../pathpostrestapiv1createcollection.go | 20 +- .../handler/pathpostrestapiv1getchat.go | 4 +- .../models/components/autocompleterequest.go | 6 +- .../sdk/models/components/feedentry.go | 3 + .../sdk/models/components/feedrequest.go | 3 + .../sdk/models/components/feedresult.go | 3 + .../sdk/models/components/peoplerequest.go | 21 + .../internal/sdk/models/components/person.go | 9 + .../platformauthenticationsuggestion.go | 15 + .../components/platformproblemdetail.go | 94 ++ .../components/platformproblemdetailerror.go | 15 + .../sdk/models/components/platformskill.go | 11 +- .../components/platformskillimportresponse.go | 3 +- .../models/components/platformskillorigin.go | 3 + .../components/platformskillslistresponse.go | 6 +- .../components/platformskillsourcepreview.go | 15 + .../platformskillsourcepreviewfailure.go | 15 + .../platformskillsourcepreviewfile.go | 15 + .../platformskillsourcepreviewrequest.go | 39 - .../platformskillsourcepreviewresponse.go | 15 + .../platformskillsourcepreviewstreamerror.go | 76 + ...sourcepreviewstreamerrorserversentevent.go | 43 + ...sourcepreviewstreameventserversentevent.go | 178 ++ ...latformskillsourcepreviewstreamprogress.go | 84 + ...rcepreviewstreamprogressserversentevent.go | 43 + .../platformskillsourcepreviewstreamresult.go | 65 + ...ourcepreviewstreamresultserversentevent.go | 43 + .../platformskillsourcepreviewstreamscan.go | 75 + ...lsourcepreviewstreamscanserversentevent.go | 43 + .../platformskillsourcepreviewstreamskill.go | 65 + ...sourcepreviewstreamskillserversentevent.go | 43 + .../models/components/platformskillstatus.go | 2 +- .../components/platformskillsyncresponse.go | 15 +- .../platformskillsyncresultstatus.go | 32 - .../components/platformskillupdaterequest.go | 3 +- .../components/platformskillupdatestatus.go | 2 +- .../platformskillversionslistresponse.go | 6 +- .../models/operations/platformskillscreate.go | 2 +- .../operations/platformskillscreateversion.go | 2 +- .../models/operations/platformskillslist.go | 16 +- .../operations/platformskillslistversions.go | 16 +- .../operations/platformskillspreviewsource.go | 39 +- .../platformskillspreviewsourcestream.go | 58 + .../sdk/optionalnullable/optionalnullable.go | 26 + .../optionalnullable/optionalnullable_test.go | 93 + tests/mockserver/internal/sdk/utils/json.go | 44 + tests/test_entities.py | 3 +- tests/test_skills.py | 6 +- tests/test_summarize.py | 6 +- 142 files changed, 4799 insertions(+), 794 deletions(-) create mode 100644 docs/models/platformproblemdetail.md create mode 100644 docs/models/platformskillsourcepreviewstreamerror.md create mode 100644 docs/models/platformskillsourcepreviewstreamerrorserversentevent.md create mode 100644 docs/models/platformskillsourcepreviewstreamerrortype.md create mode 100644 docs/models/platformskillsourcepreviewstreameventserversentevent.md create mode 100644 docs/models/platformskillsourcepreviewstreamprogress.md create mode 100644 docs/models/platformskillsourcepreviewstreamprogressserversentevent.md create mode 100644 docs/models/platformskillsourcepreviewstreamprogresstype.md create mode 100644 docs/models/platformskillsourcepreviewstreamresult.md create mode 100644 docs/models/platformskillsourcepreviewstreamresultserversentevent.md create mode 100644 docs/models/platformskillsourcepreviewstreamresulttype.md create mode 100644 docs/models/platformskillsourcepreviewstreamscan.md create mode 100644 docs/models/platformskillsourcepreviewstreamscanserversentevent.md create mode 100644 docs/models/platformskillsourcepreviewstreamscantype.md create mode 100644 docs/models/platformskillsourcepreviewstreamskill.md create mode 100644 docs/models/platformskillsourcepreviewstreamskillserversentevent.md create mode 100644 docs/models/platformskillsourcepreviewstreamskilltype.md rename docs/models/{platformskillsourcepreviewrequest.md => platformskillspreviewsourcerequest.md} (83%) delete mode 100644 docs/models/platformskillspreviewsourceresponse.md create mode 100644 docs/models/platformskillspreviewsourcestreamrequest.md delete mode 100644 docs/models/platformskillsyncresultstatus.md rename src/glean/api_client/models/{platformskillsourcepreviewrequest.py => platform_skills_preview_source_streamop.py} (58%) create mode 100644 src/glean/api_client/models/platformproblemdetail.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamerror.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamerrorserversentevent.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreameventserversentevent.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamprogress.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamprogressserversentevent.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamresult.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamresultserversentevent.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamscan.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamscanserversentevent.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamskill.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamskillserversentevent.py delete mode 100644 src/glean/api_client/models/platformskillsyncresultstatus.py create mode 100644 tests/mockserver/internal/sdk/models/components/platformproblemdetail.go delete mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewrequest.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerror.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerrorserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreameventserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogress.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogressserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresult.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresultserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscan.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscanserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskill.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskillserversentevent.go delete mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsyncresultstatus.go create mode 100644 tests/mockserver/internal/sdk/models/operations/platformskillspreviewsourcestream.go diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 34e6b42c..81f5b054 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: 1974948f3cdb42c18f515f1fb0fea2dd + docChecksum: 2ec7e52f97824692c8bd12864b7b66e1 docVersion: 0.9.0 - speakeasyVersion: 1.798.0 - generationVersion: 2.938.0 - releaseVersion: 0.17.15 - configChecksum: 1eb09757dc51c042e574b3e04826405c + speakeasyVersion: 1.799.0 + generationVersion: 2.941.0 + releaseVersion: 0.17.16 + configChecksum: bb68bec00fef7c965d2f40018b352432 repoURL: https://github.com/gleanwork/api-client-python.git installationURL: https://github.com/gleanwork/api-client-python.git published: true persistentEdits: - generation_id: 0c37b6b6-f498-4b35-9e48-b8cd9f4e6e68 - pristine_commit_hash: 2d2188952a3c1654eddee8b4920d6bdfb1418125 - pristine_tree_hash: 13f0956d61751a52fa8e0a390b15b03ef90cc4c3 + generation_id: 80773503-52df-42ab-8dc5-517e0148969a + pristine_commit_hash: 74dd9ae24931fc395ded5693b7d4cdf11ec0a204 + pristine_tree_hash: 2b09e0515430625b072cfb651e669ac965a321c0 features: python: acceptHeaders: 3.0.0 @@ -386,8 +386,8 @@ trackedFiles: pristine_git_object: f52bd9ee886df0323f70d1416c7f567beee45fe9 docs/models/autocompleterequestresulttype.md: id: b8d90b50b8a1 - last_write_checksum: sha1:384db0e85ba2259d36c469bf18aad238ce221de9 - pristine_git_object: 1133a59c5d24f501ea467fb19e9a467682cd9d31 + last_write_checksum: sha1:6a466170ae65f1bb77a34ffa577050a3c677731f + pristine_git_object: d5efb95f03562827c2bfafe0984c098e2e3de5fb docs/models/autocompleteresponse.md: id: a8f4f0d2e960 last_write_checksum: sha1:e80e1ab5896798594c21df4361f9c5711f55d8d0 @@ -1482,8 +1482,8 @@ trackedFiles: pristine_git_object: a851a7f13eb25d515fa9b9244c5dfdc98fa14e2c docs/models/feedrequestcategory.md: id: 31a02f3064c7 - last_write_checksum: sha1:6c058c44c4c9cc02dd16dbf222a4576348789c0f - pristine_git_object: 662a836bc9b99d7fe65d08ba4280adcacf0aa096 + last_write_checksum: sha1:d5f17b823f9ebe6aaf648d825704e62e5b723014 + pristine_git_object: 51d47d0b379fdcfba833a290b2faaa865f4e029e docs/models/feedrequestoptions.md: id: 58eb26b19e77 last_write_checksum: sha1:fd2ab08736cef8156169b0cfee8c52e7aed1accf @@ -1502,8 +1502,8 @@ trackedFiles: pristine_git_object: f6f92abf16b61f88b527e1c906f605e98306878e docs/models/feedresultcategory.md: id: a5f77f38d0a7 - last_write_checksum: sha1:3defded05526cfd53ff95f819046e9cebaddd2b0 - pristine_git_object: b1ed34c83753598c152bc76c41196860f036262e + last_write_checksum: sha1:42325178b8c89e4fe715f8dc7077b4cc6f3cd38f + pristine_git_object: 2542d5ef777f279e2076ea847a4a62855fe1ceda docs/models/fieldscope.md: id: e6b52bcb22a6 last_write_checksum: sha1:13a1492ce39d2f89a01d626996a345a1339a1873 @@ -1946,8 +1946,8 @@ trackedFiles: pristine_git_object: 647f9bb67a6af30d7fd71c8ddb3c5e1bf40bb938 docs/models/justificationtype.md: id: 8286affacee4 - last_write_checksum: sha1:3cd9f468ee470bfe137224e72c46b03501e33905 - pristine_git_object: 7764769f62ea15ddd762c89e561431c2490b3edb + last_write_checksum: sha1:bb79325091570e6ebb1174d3d1599dfca36d7cc4 + pristine_git_object: 61b62c7393dcc59838c624f9b827193f336089a1 docs/models/knowledgetype.md: id: 1e0c90679228 last_write_checksum: sha1:0030a7539b9362bbb59e0bbd36580676058b3540 @@ -2194,8 +2194,8 @@ trackedFiles: pristine_git_object: 4555c0106ca95de3c4ff40e7d2ec703506c30450 docs/models/peoplerequest.md: id: a2efd0c61878 - last_write_checksum: sha1:6d1ac4de80b9014019ead9c45dc74d6635be315f - pristine_git_object: cabbe6e5060ca81606726370df1d3cfeffee879f + last_write_checksum: sha1:35157d922bf4a512faa9e98f15cd5c5a3302fbb7 + pristine_git_object: 66af83b5b38f3321aea1bf2b7f71e6110b5c7fd8 docs/models/peoplerequestincludefield.md: id: 1cc1f2177bbd last_write_checksum: sha1:a02e302ceae15bdcd65b89c04a3d67252d95653b @@ -2226,8 +2226,8 @@ trackedFiles: pristine_git_object: 5d2835e91400f8c721cd32ac9c4ad0c2d4dff668 docs/models/person.md: id: 3b0ea6e43010 - last_write_checksum: sha1:c41a10861d5f427cfbdd80b81afbf201a43b3d51 - pristine_git_object: 233784bcf7eca5260994f7a48190e2207a6d6742 + last_write_checksum: sha1:48e57bd344ebad9f78e85d32dc2108412275e845 + pristine_git_object: e9846658ab15d8de3629fb55d1266a96824c983a docs/models/persondistance.md: id: 26300c30163c last_write_checksum: sha1:37d6ba089ac53d0338b6e7f5e00d343adcc05317 @@ -2688,6 +2688,10 @@ trackedFiles: id: 8e0eb24c7ab0 last_write_checksum: sha1:b7e91a102caa171583e0033985345592eded3a47 pristine_git_object: 9602adac9af14a6a401eaf90a16cdc7e7a96c954 + docs/models/platformproblemdetail.md: + id: 3eb00158d145 + last_write_checksum: sha1:582bc89cfb2012c5fddeda164929ffe4151265c9 + pristine_git_object: 95a5121d13c926d7a7e17c39607778ec83bf0738 docs/models/platformproblemdetailcode.md: id: fd61a3fb0333 last_write_checksum: sha1:a1d01a7e9ba65fba741eb7ffc7c318ec2f00a28b @@ -2722,8 +2726,8 @@ trackedFiles: pristine_git_object: 74045b8a6ae5e046bacdfb861ababddb3d770f5c docs/models/platformskill.md: id: 83c575f92901 - last_write_checksum: sha1:6b749a33dc64251968dac815aec5189373449b3e - pristine_git_object: f803434a2bd716ccdd0731bfb29c6921ce8e1c88 + last_write_checksum: sha1:d7789e381069b23aa1e7236c140f5db05fc246e2 + pristine_git_object: 3a68c65b0b08b80e44e2b10687404bfe7179949c docs/models/platformskillcreaterequest.md: id: d5a84c9d1cf0 last_write_checksum: sha1:90db6d3c8fe55234b4dcf26c734c04fc641ac719 @@ -2746,12 +2750,12 @@ trackedFiles: pristine_git_object: e6c95bd604dd05e5d2adfa909f30c2bf9d198b56 docs/models/platformskillimportresponse.md: id: 9a66de8859b8 - last_write_checksum: sha1:1c24f744a99500576dee1e41d5dd83ee9c799b7b - pristine_git_object: 9a383f207c36e4ac9c50a84c4f704c86dfb2d82d + last_write_checksum: sha1:2bb7017a4ea27b318bc2463d2961c9d929dc2f2a + pristine_git_object: 079c091efa09a850e3e829204a3c32c3b9a1ec95 docs/models/platformskillorigin.md: id: 66c12ec2d017 - last_write_checksum: sha1:281337f3fefcac11e66e5d8429b3b601dc357a57 - pristine_git_object: ca7bf36f2c931c0dce0bb529f8c2d86f4a06c326 + last_write_checksum: sha1:7d7f7efb7e4e48058e778bdc2b99d58fdfe55a38 + pristine_git_object: c43dbe562cc13c11ff28494d097e46859801ea2c docs/models/platformskillscreateversionrequest.md: id: bfcd223dbc04 last_write_checksum: sha1:5296d14b096632ffb2425da1f0db1fd6de40d18e @@ -2786,16 +2790,16 @@ trackedFiles: pristine_git_object: f9a2d64ae818b2da0d46bbec7f78eaae964678f0 docs/models/platformskillslistrequest.md: id: 475ac6fb76a7 - last_write_checksum: sha1:4bac5ec35ddeb35d13d8494aebd5e8237a1d6239 - pristine_git_object: ebf0ada9b31b7f0788d46aa6aa866d91270c86e7 + last_write_checksum: sha1:b59ca09afc101cfe225b37b8c7872e81fd6b3d39 + pristine_git_object: 321617bd7094f98b25bc2ef27698d1b18fd8223c docs/models/platformskillslistresponse.md: id: 03920dfa6e9d - last_write_checksum: sha1:a01d7093df9c1723f0fc7e5e55c75c13d502e8fd - pristine_git_object: 1adcf3fef9224325ffd1a40f5a37e26aaddc3d7a + last_write_checksum: sha1:ed6ed24b10e84239736f93f350d1745812cf4941 + pristine_git_object: c880bd4676f837f07a327ec209b5ebdc5a6a978f docs/models/platformskillslistversionsrequest.md: id: 47bd785d0b34 - last_write_checksum: sha1:c632c4018fd96fbca40e07d7dc3bf318ff65726f - pristine_git_object: a3fa36c955ce74ae0fac7bc821fe969fc407a67c + last_write_checksum: sha1:ea08c60a99059692a7f4c34b19fadde75543b27f + pristine_git_object: 75cd11778c969e1eb9d1cedaf140f876ac68cb2d docs/models/platformskillsourcepreview.md: id: a20f898498fd last_write_checksum: sha1:989f9420ee121202fec25562c5fc30ccdf14d953 @@ -2812,58 +2816,118 @@ trackedFiles: id: 80920192692e last_write_checksum: sha1:ab96df0544d94fda5d111d61cc9b4579a3039df0 pristine_git_object: 6f4626cb6098e3e52101516801035c098c0cdbe5 - docs/models/platformskillsourcepreviewrequest.md: - id: d7467b60160c - last_write_checksum: sha1:7771e2da7324d59d224a9e561721c2ff40209164 - pristine_git_object: 8d0b03a4ac2bc72a3059f1410f7e8f6bbbf0a537 docs/models/platformskillsourcepreviewresponse.md: id: 9f9048fa09fe last_write_checksum: sha1:7b55521b8f0031aeacb1bce804bf0975ba7ae809 pristine_git_object: 0c2df151a3683fcc39d966ca90cabfb9525316c1 + docs/models/platformskillsourcepreviewstreamerror.md: + id: 84fa968012d7 + last_write_checksum: sha1:97f1e6ec20f74e3a964b4c30a416bb2bcb65be40 + pristine_git_object: 0de09b2670392f551db795c2071ad791a0c4c2ef + docs/models/platformskillsourcepreviewstreamerrorserversentevent.md: + id: 10918a76db8c + last_write_checksum: sha1:c2b9e6c793ac949e4bd170397f309f6a807742d7 + pristine_git_object: 0f2bab47602c81d6371c632b06a162234b79cb7c + docs/models/platformskillsourcepreviewstreamerrortype.md: + id: 60f92906cb43 + last_write_checksum: sha1:c73df8474bcfd3c45116d12dcf818e0cb8fc99ba + pristine_git_object: eaea8d89f417242d97fc1c8624f14be7805f211d + docs/models/platformskillsourcepreviewstreameventserversentevent.md: + id: 2b7068826461 + last_write_checksum: sha1:243d109a425d7b57efde6fb37f79a948b43c23ab + pristine_git_object: 1a3ff6a82843a30827c83b3e4ec779b731222025 + docs/models/platformskillsourcepreviewstreamprogress.md: + id: e4da4f206067 + last_write_checksum: sha1:101308495c0e319d9b2b322643be0c48bbddcaca + pristine_git_object: 320e3d52723f656b87ef56dcd38ac50cfbfff4d8 + docs/models/platformskillsourcepreviewstreamprogressserversentevent.md: + id: bbdbc9def3d0 + last_write_checksum: sha1:6c3b5d9682eb5016ecfc11a37651d0210bd9c94e + pristine_git_object: 7f6063119c2da3df8886177b57c6ee339c62f281 + docs/models/platformskillsourcepreviewstreamprogresstype.md: + id: 8aca3319aa3b + last_write_checksum: sha1:16b7cb86c52f089982049c92794793c6023c0dd5 + pristine_git_object: 7a25cd48465de12437e3d637ab9d09b7834528c9 + docs/models/platformskillsourcepreviewstreamresult.md: + id: 356c29ee4486 + last_write_checksum: sha1:549befab1998dde0a248f99971aa18100375369e + pristine_git_object: c778b25759c85313782a5f0ca458661b43d13683 + docs/models/platformskillsourcepreviewstreamresultserversentevent.md: + id: a1ee433e9512 + last_write_checksum: sha1:348b4e1672a02994f3f7893229652a4c4585972e + pristine_git_object: fae2c0e8df796ec87cdb00506c281b0401f3aad8 + docs/models/platformskillsourcepreviewstreamresulttype.md: + id: c65916cbed8f + last_write_checksum: sha1:20aba21b3d7f8a8dc23f8c811484d4eb702eff25 + pristine_git_object: aae68d66595905a1b4d63f18dcfab9e1b3e37f6f + docs/models/platformskillsourcepreviewstreamscan.md: + id: 682dd1c4ac94 + last_write_checksum: sha1:77bc3bf4050ced3f63a869a501be1d48a997766e + pristine_git_object: c9705a55de286bee828d21cf133d413106497f97 + docs/models/platformskillsourcepreviewstreamscanserversentevent.md: + id: 93a676767392 + last_write_checksum: sha1:6140561ddc2c9811e95b0d3e5a14284196417a90 + pristine_git_object: 6b69806dba3fff88363d7028ad084b1512de5416 + docs/models/platformskillsourcepreviewstreamscantype.md: + id: 204786be9534 + last_write_checksum: sha1:8e1393f55c730b391ee12454e0c30313f01fdf70 + pristine_git_object: ba71c62a1d868b4c5c8f1a521066508dd477adb2 + docs/models/platformskillsourcepreviewstreamskill.md: + id: 1022b279fd21 + last_write_checksum: sha1:4803b1c4450544121fd113733ecb9317ab1b3e0d + pristine_git_object: 30f6225d86c636cdd44bd72985e34aebe7af5236 + docs/models/platformskillsourcepreviewstreamskillserversentevent.md: + id: 8951af43b977 + last_write_checksum: sha1:e23975a87d6fb75c88dfc72627d110bc05b617b9 + pristine_git_object: 740b8380ce08e8911a8755a3da825fcad3b6e46a + docs/models/platformskillsourcepreviewstreamskilltype.md: + id: 3e8a3c520903 + last_write_checksum: sha1:ce60088a3d60da225764574db25f58458ed2ed7e + pristine_git_object: 512ad4ade81b7aec03979689d2e561ce83c06556 docs/models/platformskillsourceprovenance.md: id: 259c50c9c90f last_write_checksum: sha1:d59dbc5d8d6a5e0a6da71f5a1bb3be1e0b2c8274 pristine_git_object: e7728f1bfc51509dc05d0b9e293eb08ad68c445c - docs/models/platformskillspreviewsourceresponse.md: - id: be33b627842c - last_write_checksum: sha1:8d5442369d04fcd70f652a28c6258b06cd62b0da - pristine_git_object: 2eabd1c452141c977bdd9e331b859694a4fc2ee6 + docs/models/platformskillspreviewsourcerequest.md: + id: 017ec0950f44 + last_write_checksum: sha1:ba633b1c419b5486a331f6c125dafc3f8e761d61 + pristine_git_object: cabcbff80fb0de9536581d7cf469f96630559ffb + docs/models/platformskillspreviewsourcestreamrequest.md: + id: 8a6b578e83fc + last_write_checksum: sha1:fad6a52c69236fda99be3c361170ec95b0e845e3 + pristine_git_object: 6d30247d171b81ed97a1c1a30f1b790c6f80effb docs/models/platformskillssyncrequest.md: id: d3c24d4f20d7 last_write_checksum: sha1:16c8019fe366f4e5e91a17a18bcba02a937a608f pristine_git_object: 58111860295d2bcff39bf2efbe38d9e2780419d1 docs/models/platformskillstatus.md: id: 33c93e7414d6 - last_write_checksum: sha1:7012661e93710994b8dc2a827b82bdb7da8bbb5f - pristine_git_object: 566f1092589cad8787c57dd7042e2f2c71ea49b4 + last_write_checksum: sha1:6772ad6cc5d999998f407328a948f6da8e16d78d + pristine_git_object: b863a5ebbecc12c027fe079e7600071000326fcd docs/models/platformskillsupdaterequest.md: id: f8592c4371a6 last_write_checksum: sha1:b9e9e33e0c952581b1087225608c9902fc4219ea pristine_git_object: c26ebd332bc1edbbd349c0de8c2ee6217da11c0f docs/models/platformskillsyncresponse.md: id: b449d9f6b2c6 - last_write_checksum: sha1:f8f1d23d37aac8ede523cdb7fa744e9c9dc55cbc - pristine_git_object: 03dbf80751f2c02778e0cc7385705d3aa909d5b1 - docs/models/platformskillsyncresultstatus.md: - id: c9adf6fdba97 - last_write_checksum: sha1:cf5d419b18c912661597d3c70a8dceb632c02a64 - pristine_git_object: 764a5847d5ff5ebbd775bf661c03a756d8b39817 + last_write_checksum: sha1:915b185f95fbcc164290cf2da3094760c6568875 + pristine_git_object: a3e141159f903a7a0c482415c2a2d732f3537562 docs/models/platformskillsyncstatus.md: id: c12e6da882a8 last_write_checksum: sha1:ddca3bc0c472815cbf35240dc3ce2f17c6fc87e2 pristine_git_object: 36b3ddd907f7ed42f42bfb7983afdb9f4dfb2b42 docs/models/platformskillupdaterequest.md: id: 6203e2a98d33 - last_write_checksum: sha1:593dd3b031c30c8fae572763aae685c552f22f03 - pristine_git_object: 1d94bb0a434f77403b9f6c4109e6beb9c71fa6a4 + last_write_checksum: sha1:548e4ade9c41186b1754d8412dd398d765599e60 + pristine_git_object: 3f454aaa8f8a81c951c893c63954a4f9575a8f13 docs/models/platformskillupdateresponse.md: id: de4f570e9a3d last_write_checksum: sha1:da13ed5450b210d4064056c72a712b270e6fe718 pristine_git_object: ae42e1d6a8e34603f2e157126f6eb8e733f6c3ff docs/models/platformskillupdatestatus.md: id: bbf036925440 - last_write_checksum: sha1:21c6edca9d3ba5ae257ae975d4fe66dfd707f6f6 - pristine_git_object: 898c434f2864d96532b529d80076e2b5cb20d68a + last_write_checksum: sha1:27d3f67a9992947df8cfc8ad9fe8d31c24394ccf + pristine_git_object: 87187173601e02a3d9171a6f2b43ba12fa4def64 docs/models/platformskillvalidationfile.md: id: ec82528a1836 last_write_checksum: sha1:f4f4f45aeabf5eb63cf40ce57edc939fe13a8d17 @@ -2906,8 +2970,8 @@ trackedFiles: pristine_git_object: a89c7a90219eb99cf80714dd5307fbdafceccbd8 docs/models/platformskillversionslistresponse.md: id: 04f03f45e509 - last_write_checksum: sha1:3fd42ad6fe3a2cd0ec97e477a960f18e9584c883 - pristine_git_object: edd94537c72a222df7aab60ddd84a4419ff712d1 + last_write_checksum: sha1:666195fb5bd138dceed17accc7fc25c72e11f066 + pristine_git_object: 082388b1d3aa6d33d3413f71d92207e50b4307a7 docs/models/platformtimerange.md: id: c37b2e815a8d last_write_checksum: sha1:31db2f83dba4ccb6d0a5e7b80edbeff356529101 @@ -3918,8 +3982,8 @@ trackedFiles: pristine_git_object: adac51700d9683a41dffb2f5c20ee18008a9e135 docs/sdks/entities/README.md: id: a140ac5181b9 - last_write_checksum: sha1:8ed55d70b05f1eb5c6c9f5a660f7321491cf05e4 - pristine_git_object: 55516c7df24464202dc36f9c118c323d266539f3 + last_write_checksum: sha1:bc03774c1d8541c868fe35963f549a1151a4648f + pristine_git_object: a5c95e0ed9dc9054df9e3c28baf3ae23c8e1cde7 docs/sdks/findings/README.md: id: 7f7356eb9e9c last_write_checksum: sha1:31cec287b2a5668e3f3bcf54173669c8a15aa292 @@ -3978,8 +4042,8 @@ trackedFiles: pristine_git_object: 43e735ef788378a15ac4a6e52aa4843ea4c5d4c8 docs/sdks/skills/README.md: id: 3a14a5c90791 - last_write_checksum: sha1:7c5b6dde477b907a0accac6ca019eb5d84aa5d03 - pristine_git_object: 7a11b9bcd4372fcefc3e59e66dc179ee8727bcee + last_write_checksum: sha1:86d96a041a5ab57b6a81ff70301fe3d4f142b334 + pristine_git_object: 6c9d5b42da5a3cff3e329e3960215a0ec0c9cb3f docs/sdks/tools/README.md: id: 044286549bac last_write_checksum: sha1:9b9a8e80c1d16018bd66150ba482b83825d6cf67 @@ -4006,8 +4070,8 @@ trackedFiles: pristine_git_object: 79e388be87446ab6a4064b372bad0e8376d0cb5e pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:50549d323659a35ab0a59c8c19451dc2d0aeba56 - pristine_git_object: b7cb0276a9bf207ec590dcac01947fd965245496 + last_write_checksum: sha1:dbe486cbfd0b3bd898820391ea73c269d83da610 + pristine_git_object: c6ffa3b52149c85754a7d5c6596b00214529923b scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:c2c83f71dea61eb50c9e05da83b16d18b4da8794 @@ -4034,8 +4098,8 @@ trackedFiles: pristine_git_object: 55f23c1feabfedeb7e8cd5bea8b910f0ae0b77d9 src/glean/api_client/_version.py: id: 0ce22b26136b - last_write_checksum: sha1:6c63f673880e68be2815c4272eb4f4360d15423c - pristine_git_object: 4af11e8ed077223e781737633b6fd821ee561c3d + last_write_checksum: sha1:b9910e2610a52490d00884d0df946c028348b17f + pristine_git_object: d4400eaac5de54e19c68cd474f6c4c690a8286bf src/glean/api_client/agents.py: id: b925701a9217 last_write_checksum: sha1:b911520f8b3938733aa37d8a8a5fb0c0aeb63cee @@ -4110,8 +4174,8 @@ trackedFiles: pristine_git_object: 1187e013fddc68f46bf0601237a4d8d6ba878e41 src/glean/api_client/entities.py: id: 38ebbab2f8a0 - last_write_checksum: sha1:bd52afae4d0b4d60e85189a4f6b999c280128329 - pristine_git_object: adc08d2771a312d55750096248b0f1a82d0432d0 + last_write_checksum: sha1:206168b489dbcfccd78cfab6e655c1228af50b7f + pristine_git_object: 44a41c9875078eb45326a4c198a8726f348ab9ca src/glean/api_client/errors/__init__.py: id: 88bbd5450191 last_write_checksum: sha1:1efa888eacd97dfa261f42013ae3690ab348346d @@ -4218,8 +4282,8 @@ trackedFiles: pristine_git_object: b140b656b788bb0deb8a974420783b338f0521e2 src/glean/api_client/models/__init__.py: id: d5f6ea5efcbe - last_write_checksum: sha1:e8461ac57d0cb12b0d136b1eab7374503d248019 - pristine_git_object: 6eac20c2c6f5bdb7f619dcc74a5c907742b0a8d8 + last_write_checksum: sha1:28a3477b0ecb746a849af791942ef4b1bddc88f5 + pristine_git_object: 82e4421a1632c4213feb8733805e7eb4db05389f src/glean/api_client/models/accessrequestpermissiondeniedresponse_error.py: id: 22a2fa0d5899 last_write_checksum: sha1:f7dd6f906a4dd7433992f77395f9fb491fa5ac5c @@ -4422,8 +4486,8 @@ trackedFiles: pristine_git_object: 97d2bf4e337f24d11d53d15916bd5c59b9942b66 src/glean/api_client/models/autocompleterequest.py: id: 23b29c9e7dcf - last_write_checksum: sha1:f2f792c9d5539d92bb275385cae0a32667382c50 - pristine_git_object: 77f48a08f4bde254f8e201d5d03863cd15b9b150 + last_write_checksum: sha1:267be41c9d987da2f2dfc8a0d8ad3cb26e234566 + pristine_git_object: adfebaa0aa87fee2b86ff14fdae1fd527a7008bb src/glean/api_client/models/autocompleteresponse.py: id: 860297c9ef84 last_write_checksum: sha1:7972aeb2f5bd1c56df96bbd708088add6d5f04fd @@ -5298,16 +5362,16 @@ trackedFiles: pristine_git_object: 44041cb376d89949c815ea1e7813505940605855 src/glean/api_client/models/feedentry.py: id: 023eb6c10ae1 - last_write_checksum: sha1:803bdce57dc5815add1ac47744ecfb35ec26b3b8 - pristine_git_object: 83e2c6f0abadf1a67f849ff34c9ec825be039bd4 + last_write_checksum: sha1:2f979dcdd3e339703e244c6370aa3277767c19fd + pristine_git_object: 93c02b1f985abe310ca6a0954c2de45f31d3b207 src/glean/api_client/models/feedop.py: id: b8067ac0a127 last_write_checksum: sha1:c58cb0a3a01925eb14d84176c5c6e9d8f4d84cf1 pristine_git_object: f39626285f84630e5a9233736d652914b759d44b src/glean/api_client/models/feedrequest.py: id: 33496b6a5bab - last_write_checksum: sha1:5d2d1b1a5b9cca934cd4d1a91b24b1a78a5afe3a - pristine_git_object: 75cd4b1bd2b9eb2508887a6e83485136713adef4 + last_write_checksum: sha1:56b16bb0f42c10a295f60fc96eeb945cfea35ea7 + pristine_git_object: fd1876c636e711e86423e79dd36937f211e6ecea src/glean/api_client/models/feedrequestoptions.py: id: b99003fbf522 last_write_checksum: sha1:d5ffee29242075cbe6d2dd5ec916b0c3d40acf54 @@ -5318,8 +5382,8 @@ trackedFiles: pristine_git_object: 683438c837601f483526ec18756fadc7222edb24 src/glean/api_client/models/feedresult.py: id: ae187332b37a - last_write_checksum: sha1:d0e0236236965e4d5f2b3dd8776849e5e0bc36fc - pristine_git_object: f450760d9e50554270028662971d013df801cbd6 + last_write_checksum: sha1:d4fd68d5339dc1b3ccd1fd7ec51cbcadde76b85f + pristine_git_object: 17d452945f6fe0726665d9e067701204e37f5a59 src/glean/api_client/models/followupaction.py: id: e2de5c4c8524 last_write_checksum: sha1:49e1a826449081fecfcd828c940604db949a8533 @@ -5862,8 +5926,8 @@ trackedFiles: pristine_git_object: ab286401ed0296450b2ba4751cdb51ccff6f5a5c src/glean/api_client/models/peoplerequest.py: id: a7dcc3001149 - last_write_checksum: sha1:3d45a0ac68de0c33d9e040aa3e263653808803bf - pristine_git_object: 520c04d8b03a50d6c062827eb9dde4f67057f46a + last_write_checksum: sha1:1860e6f7a24bdb3bfbc40847d525b1272d924dba + pristine_git_object: 1ecee9b17688fcee5d67e193b1ca08cd878f74a4 src/glean/api_client/models/peopleresponse.py: id: 85f4d95884f9 last_write_checksum: sha1:ed99cd7a6f88c2b90a020d44ca984544e9693cb6 @@ -5886,8 +5950,8 @@ trackedFiles: pristine_git_object: 52b20386d1215ca9d5ddf1510c569954ae510c38 src/glean/api_client/models/person.py: id: 486c8c3db123 - last_write_checksum: sha1:277538c34f3024a5aa55ea6476e84268555c3eb5 - pristine_git_object: 24355a993c1e2b4e370eac468508ccf90242ac1c + last_write_checksum: sha1:1a6ad2c2c4cbe493c84499fe442660ae8ba56005 + pristine_git_object: be88dd7ee62fed92315207cff2267fc5d437062a src/glean/api_client/models/persondistance.py: id: 307f87d6cd91 last_write_checksum: sha1:90c27054198a8779074839f5226724e81271b462 @@ -5990,16 +6054,20 @@ trackedFiles: pristine_git_object: fc64256bf43449e23e1e7d093a45ee3fdfc441e5 src/glean/api_client/models/platform_skills_list_versionsop.py: id: 4d91c282c246 - last_write_checksum: sha1:4d572ac46c4a7085442f8724e12fed67ee6256fb - pristine_git_object: 145d396dbaf75e185792e6b19a4f0d635beffd37 + last_write_checksum: sha1:6d512e70608e914407b2a51c96ddbe9e54815e21 + pristine_git_object: b34fd73fdde468889d03ff2534a9ff58a4fca25d src/glean/api_client/models/platform_skills_listop.py: id: 2172706b6858 - last_write_checksum: sha1:7e9d92bd23b8072d38fc787c08d2c1d11afee1dd - pristine_git_object: 3f77419309047da04a558921ae77b447bf465d40 + last_write_checksum: sha1:ec8e8ead0aba41dadf4c74c51c9544f3f121a191 + pristine_git_object: 5c21fa77645acbbeaed69a4e5ad7cb9844670e3b + src/glean/api_client/models/platform_skills_preview_source_streamop.py: + id: 18b6a2dae087 + last_write_checksum: sha1:ea54a718241b065e791ed9f8e967818908521288 + pristine_git_object: 2ce11df6c8c13e74a959efc0ebc1b10e1a37169d src/glean/api_client/models/platform_skills_preview_sourceop.py: id: b7afa7764cef - last_write_checksum: sha1:cc21b3ead6075cb3db6426c2329b070648cdf32b - pristine_git_object: 30dcdd72bccb0fbfafd8c74a556654fd98da0b04 + last_write_checksum: sha1:72d025c4863fddbcca0f2ffc40d0647b5379875b + pristine_git_object: f56672761b4b2dee0cbff34294868eb7448492a4 src/glean/api_client/models/platform_skills_syncop.py: id: c6a29bedca20 last_write_checksum: sha1:90811712776457d85a5abe880857d1aef55f0197 @@ -6292,6 +6360,10 @@ trackedFiles: id: 2ff9ab749423 last_write_checksum: sha1:a366e67090ccf5a9754576467db2043a33e8a8e2 pristine_git_object: 3f68797935412add6a9cbe28335641064352c8c5 + src/glean/api_client/models/platformproblemdetail.py: + id: 564643c3d847 + last_write_checksum: sha1:bc77e15836741f22cc5d2f67b8fe32d2e4668986 + pristine_git_object: 05d4d46e2111a803b4194f0d81d50b315a7efa15 src/glean/api_client/models/platformproblemdetailcode.py: id: 3aa0b8193255 last_write_checksum: sha1:7f0f9bc67cdaa742e4cf4494bf2a3c29f8b58a16 @@ -6318,8 +6390,8 @@ trackedFiles: pristine_git_object: ff13d204ece88b150c32fb69c65e266c7756b1af src/glean/api_client/models/platformskill.py: id: 10e1f311015c - last_write_checksum: sha1:c0225f37738625dbb6cab763be77cf5e40beafeb - pristine_git_object: 4b7e21a7eff4002f44ca69cc00ea080b152db720 + last_write_checksum: sha1:e1a70d0d4758869a8afc969c11b59f8426666c64 + pristine_git_object: d77b1fa2833bbe578a96a19f0402770e9aacf491 src/glean/api_client/models/platformskillcreaterequest.py: id: 9d75227d70d1 last_write_checksum: sha1:f6dadfcbab4b2800dd99abb6807b82b27c8c288e @@ -6338,16 +6410,16 @@ trackedFiles: pristine_git_object: 00ca6da543a5ad48d248e87c5199b36a415e8f2d src/glean/api_client/models/platformskillimportresponse.py: id: 5c641d8380aa - last_write_checksum: sha1:12aceeb94df10e62efcf8438f8db1b14cf92a5d2 - pristine_git_object: 4e8827e598b98f0f70a1a8fa6d132d56e421ed6c + last_write_checksum: sha1:f39609872801aec07d3ec7830aa5b4f8d21027eb + pristine_git_object: f07899250a6c4e5058cf71b41de0f25222b77699 src/glean/api_client/models/platformskillorigin.py: id: ac7dd2421a25 - last_write_checksum: sha1:d3373713ce852bfc79d180d5a9cb6d27d5bdd0e3 - pristine_git_object: 320c60ec3c2d46cef59742d40c6de29c43425776 + last_write_checksum: sha1:e75c12568b0a13107be45cc71c61343f91a4a5db + pristine_git_object: f05da6ac9653f6ba3b9fb1de2f1bd66730aa00ae src/glean/api_client/models/platformskillslistresponse.py: id: b031da1d2783 - last_write_checksum: sha1:45e8d141fb11032f3fd143d1818845a7eb750c3c - pristine_git_object: 7303b0519deea755bd54b5f5a42e5e0908c5c92f + last_write_checksum: sha1:771558db4f0e0d491b51cce54360fd084fe31051 + pristine_git_object: 8d37912ab9c1d7576088665dc12638d485bd510b src/glean/api_client/models/platformskillsourcepreview.py: id: aeb8f137962d last_write_checksum: sha1:2e2fd40151aff7cd3f0cb08997d66ffce8bfc314 @@ -6364,46 +6436,82 @@ trackedFiles: id: d7594e3706a8 last_write_checksum: sha1:8111240b45e77e5605be4d2993df8cbb0d1fe89b pristine_git_object: 71aee5339cc6d9c46394bd7c34b50cd51cde5a40 - src/glean/api_client/models/platformskillsourcepreviewrequest.py: - id: 521e672126c6 - last_write_checksum: sha1:987c57fe9b2db03d39cac8dc58750e7dfdacf7b3 - pristine_git_object: 92057490d80383015b2b175b7cd1b07845f46a24 src/glean/api_client/models/platformskillsourcepreviewresponse.py: id: 41861007f222 last_write_checksum: sha1:9eb2f08cf3b4ed7924286cc6c0233868ca1168c2 pristine_git_object: 37cf8bc1466c6482fd43c53d3ac2b54759d7d9b8 + src/glean/api_client/models/platformskillsourcepreviewstreamerror.py: + id: 5a87352ef914 + last_write_checksum: sha1:4334a44e1c7d20ca04ee3f9bacd4ee0af81d90a0 + pristine_git_object: 68f225d37986aa6aa2a122bdaf8c9d6650720eb3 + src/glean/api_client/models/platformskillsourcepreviewstreamerrorserversentevent.py: + id: 3d6a6f10c215 + last_write_checksum: sha1:7b4fc344bcf4b976f1ac30c635b33bb74c350ad0 + pristine_git_object: cd9a68bdfcea436b6dd29b7cf495f27cba535b0d + src/glean/api_client/models/platformskillsourcepreviewstreameventserversentevent.py: + id: 187d998b8358 + last_write_checksum: sha1:57c6e49c9c023f8feda24909b2e8a8b13a164e5d + pristine_git_object: a4974c16fb4e51fba062d1a25c6b1efad390610e + src/glean/api_client/models/platformskillsourcepreviewstreamprogress.py: + id: 4150674e4e9b + last_write_checksum: sha1:8d9f98350d600f09481f85d39d59e90cf60023c0 + pristine_git_object: ecca3b704cd9db73933238972abe905e8f3688b3 + src/glean/api_client/models/platformskillsourcepreviewstreamprogressserversentevent.py: + id: 08a0cd6abc04 + last_write_checksum: sha1:dcc1a85f50f73fd1ed260233241c4e80c08bcc70 + pristine_git_object: 60c2dbed5e9f4464fc77ff713d5eb2fe35b1a109 + src/glean/api_client/models/platformskillsourcepreviewstreamresult.py: + id: 36520c198eac + last_write_checksum: sha1:7c2f9f0100f9f84584e31863615d0e3c98a611c6 + pristine_git_object: df6d3b6ef858e6c4415579d09ea3b4da137cf569 + src/glean/api_client/models/platformskillsourcepreviewstreamresultserversentevent.py: + id: 4475a41fb7e4 + last_write_checksum: sha1:72ec21c35c356c749b601685f87f9eef59be019a + pristine_git_object: 0741143e4b96a4fb01f0f26116bd2be1c1b0fed7 + src/glean/api_client/models/platformskillsourcepreviewstreamscan.py: + id: 3361e8ce4f5a + last_write_checksum: sha1:acf9e15967f6864307c0c29b109a9c265d1f010f + pristine_git_object: a8fd422972c649a00c59dd85553ecba063c2d3d5 + src/glean/api_client/models/platformskillsourcepreviewstreamscanserversentevent.py: + id: 0a1e279e7ab2 + last_write_checksum: sha1:dc4e9d65b448d67b88c6c93fa76814f95ecce53b + pristine_git_object: aa588667793ad02acc2b771bb991e3f3a82eb75c + src/glean/api_client/models/platformskillsourcepreviewstreamskill.py: + id: 7a2284184193 + last_write_checksum: sha1:071f2b93c7f5671f8932b50c148545cc6a874516 + pristine_git_object: 937205e34b188f3f5112cd3e8feabe190a6972f4 + src/glean/api_client/models/platformskillsourcepreviewstreamskillserversentevent.py: + id: a7a0cb837838 + last_write_checksum: sha1:6259d650dadb7a3bedc7ec369f197e6fc3fd1e52 + pristine_git_object: 6197d06de7f450eca9fe73fbeb6b9cb6534f428b src/glean/api_client/models/platformskillsourceprovenance.py: id: 9d34177a5499 last_write_checksum: sha1:f1e2f0b74c65cd83e452b6e1cb0e33f0921c1085 pristine_git_object: d1352b1f9d6654cc43a2c81e33177d5c9a0e8528 src/glean/api_client/models/platformskillstatus.py: id: 4576e2918e48 - last_write_checksum: sha1:1590f56ac48366b921495bf292ee76b6e847d4e2 - pristine_git_object: d57185fb36c553090f5e797908e9f47447901c0c + last_write_checksum: sha1:f7a447d7333ae356690db028cc6d43c3f0bf8f7b + pristine_git_object: d705872350e43b38447834a1dd5b5574fe308612 src/glean/api_client/models/platformskillsyncresponse.py: id: 6de5744ff262 - last_write_checksum: sha1:945703bb35b623bd6b98200f00e17fe7c653f2ce - pristine_git_object: 731c531db42da5de432430aee73cf11706bb310c - src/glean/api_client/models/platformskillsyncresultstatus.py: - id: 453d374eb1cc - last_write_checksum: sha1:f8cac0172ec78194127e051d04f0af14e0012d2d - pristine_git_object: b85415a1e5bd2e1c3fb32ff934e89b60338d1c43 + last_write_checksum: sha1:7d2ec9da8ef2962769f964b56b47e1199055aecf + pristine_git_object: 8fe7526e9bed75768019ab8123f553b3abfae62a src/glean/api_client/models/platformskillsyncstatus.py: id: 4603ae41cbb9 last_write_checksum: sha1:911e9731ed66a257df85158125499d212a37f995 pristine_git_object: 13fb6bcf5a11934ae1c8e1cd100715fd8aaaedf6 src/glean/api_client/models/platformskillupdaterequest.py: id: 02dbc059a73d - last_write_checksum: sha1:84dd229a9a3f9cf61b6be86a544bece3187b5c22 - pristine_git_object: 0d87a591d2b5c92c347c166731dced9c89da0330 + last_write_checksum: sha1:93bece11a36bb7953324f8a6999f94c31c847a4b + pristine_git_object: 77732fcd46db281be7c884c4ca5a6426b3110750 src/glean/api_client/models/platformskillupdateresponse.py: id: 4a7d3fa0c78f last_write_checksum: sha1:ea15b9e50758327fe3bb81eeae59c81f226dcc6f pristine_git_object: b508a52fe52301ac4c371126c3ea8f09d411b6a8 src/glean/api_client/models/platformskillupdatestatus.py: id: a1d6763af4bf - last_write_checksum: sha1:3655d3529f2bad31a7424a908deaa69afc46782b - pristine_git_object: ede7b308d849e5253a989fd75bd3485b16bed70e + last_write_checksum: sha1:9d2335cb91a2e2c0ae3488a36dc8d8fc47214d12 + pristine_git_object: 50cf71de015a456447b8260ae703304c5470862d src/glean/api_client/models/platformskillvalidationfile.py: id: 840ce4c25e59 last_write_checksum: sha1:a179e1a787bba71733234145ad88e9dd3350cd5a @@ -6438,8 +6546,8 @@ trackedFiles: pristine_git_object: 828ce5457e0a36292852e503244f1af9a23429e7 src/glean/api_client/models/platformskillversionslistresponse.py: id: 6ffeabf770b5 - last_write_checksum: sha1:0a3bd8c4cccd599f3fea52d575eefd59d83c7e0f - pristine_git_object: 2ae04090bb81ff38aeed222fbb2330e20d169eff + last_write_checksum: sha1:5a7d3f257969977964f675198fc992d98a4a24ab + pristine_git_object: 37b4b1c81f298ffdc3060a16c62ce1db60834236 src/glean/api_client/models/platformtimerange.py: id: bf2b03e84949 last_write_checksum: sha1:645217a3827cd2a7455b88277f1ba2dcd4a5daf1 @@ -7194,8 +7302,8 @@ trackedFiles: pristine_git_object: 0c1935e06607a39d513f45b02bf52a155a8614cd src/glean/api_client/skills.py: id: 79f3c37e1b5a - last_write_checksum: sha1:aebe5c9b6e2b24a13332ca13160d3994e008e477 - pristine_git_object: 89e97e10c092905a2b012a8f05f8fc986d018c6e + last_write_checksum: sha1:b0836d89bd1073ff7fa2e343acc25e2f5fed7b89 + pristine_git_object: 952c87d51fd53024475f4d15380700dcd83bf9a9 src/glean/api_client/tools.py: id: 3ea40147c1cc last_write_checksum: sha1:017a12cc5b3fdce612fdb317a468b370e5100cc3 @@ -7382,20 +7490,20 @@ trackedFiles: pristine_git_object: 61dfb292ca694340fd9796a891113cfb07aa8a32 tests/mockserver/internal/handler/pathgetapiskills.go: id: a1697453079c - last_write_checksum: sha1:1608120c2f9ce748fdd2d373e576b6a0758092c1 - pristine_git_object: 7baa51e79fd4c8ed0f5c9ebadf5030c74e966973 + last_write_checksum: sha1:a55e5b037d9f0e456da29cb0a42a885f008d6b1e + pristine_git_object: 7eb2a3a1fc9f63f752f7890d231e2f2aab702211 tests/mockserver/internal/handler/pathgetapiskillsskillid.go: id: 97a0dcaf8ddf - last_write_checksum: sha1:d939db8a7f6d6e5b3e09402246efd0d1b53c44eb - pristine_git_object: 4f097d8448491dc032cba2fdbb1f9aae85f80600 + last_write_checksum: sha1:24aa74ef2592dcaaa912f1b9fea68c7662f39f76 + pristine_git_object: 7e0b98d73ed1b22de3957e3450a027046599a2dc tests/mockserver/internal/handler/pathgetapiskillsskillidcontent.go: id: 5a0bd6fb5b08 last_write_checksum: sha1:9765b1ebe84d20e2dd85613fc06fe22d1480315f pristine_git_object: 4a1564dde9fce01753cc7f40030578593bc5b2b5 tests/mockserver/internal/handler/pathgetapiskillsskillidversions.go: id: e8b9995766c3 - last_write_checksum: sha1:ceff593610562de91fd47b0694d8231834f8f8b2 - pristine_git_object: 878e7567ff9bba78baaa03b2a59c2b82f641d4a0 + last_write_checksum: sha1:44fbd551c419ec13c7ea3def121f8a5c3cf0ae72 + pristine_git_object: 41840fae0388e7a4ac5e650a546a1710952693c8 tests/mockserver/internal/handler/pathgetapiskillsskillidversionsversion.go: id: 6b886ba93965 last_write_checksum: sha1:66539864b0089984ac709c946711d854bc4a1930 @@ -7482,8 +7590,8 @@ trackedFiles: pristine_git_object: 163466cb44aa1a16439b3bd65ab52f00aeeff427 tests/mockserver/internal/handler/pathpatchapiskillsskillid.go: id: e09721a8879b - last_write_checksum: sha1:90c425f15814afd0ac42817b7ad6a056b6efc278 - pristine_git_object: 2b4d9db548fd58503a768732db17aca59d354d25 + last_write_checksum: sha1:f2d567eb1aa2e0b539119f09ce5a1d18326aba1c + pristine_git_object: abc15386116735f44ec67a9fa7801f55973961ac tests/mockserver/internal/handler/pathpatchapitriggerstriggerid.go: id: 76c9eb373567 last_write_checksum: sha1:e444fbfab92b77e23c98fd0e33531018450185ed @@ -7634,24 +7742,24 @@ trackedFiles: pristine_git_object: 1e3fe6a9bed655ba32d7c59fe577f41beac69da8 tests/mockserver/internal/handler/pathpostapiskills.go: id: 8ed490cc6d95 - last_write_checksum: sha1:5749c3cbb8d3cc90c75ead5cd6547775e97d1ef4 - pristine_git_object: dfe54aafb86188b641df7d3f4ab98fba364b68c7 + last_write_checksum: sha1:baf2227d6bd2c85e94842170a811ed97ec2e2b5c + pristine_git_object: d69982892fc128b84300a4507e9fe1d15ade935b tests/mockserver/internal/handler/pathpostapiskillsimport.go: id: 07a47818c029 - last_write_checksum: sha1:41bc34387c843be0cbccb2bae4af32a7112e76f7 - pristine_git_object: cdcc73daba6ec8b34a04797674ce757cfce51e6b + last_write_checksum: sha1:4410caa65fa50da5b941547b5dd17b1e2c68ffb9 + pristine_git_object: 6c82be5d55724173c78931456a028f514902d293 tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go: id: efdd0a8f2a3d - last_write_checksum: sha1:39cdf62ad6655c214bb0e38092b0464862e0a039 - pristine_git_object: 0cab544fc9c247c4b5f8d19a1e83d47996c7501f + last_write_checksum: sha1:a2081eecf8bdf5a392d788a9b87182ec59450af8 + pristine_git_object: c54314faee70f92e1a882b7a12f3bfcfbbec8638 tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go: id: f6e6dcee5ffa - last_write_checksum: sha1:5a244bc3c1b083e78d22e3358ac4691ece188428 - pristine_git_object: 1f3d1fde1c6e5db9a85a116b88255e61a451fab4 + last_write_checksum: sha1:44b93ca1008e2dfd4a3ab346fd3159690f2e7185 + pristine_git_object: 664245fc17546fda61773d1dabaa8aed1c55a59e tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go: id: 58d10f72cfe6 - last_write_checksum: sha1:f648c8848f17daa6b1777d48cddfa881ff0a6d2f - pristine_git_object: 11e0efcabee999d01568917c5497ea70e3804e62 + last_write_checksum: sha1:e3f49b6ee23218bbcaadd4c2dc2a5345be4251a7 + pristine_git_object: f8a79c8f6f62b627e17d9493adf18d4bbcbfa5ba tests/mockserver/internal/handler/pathpostapiskillsvalidation.go: id: eaa6c1478b34 last_write_checksum: sha1:cc8f959924866fdf5febe729b5d5819ff7e53173 @@ -7726,8 +7834,8 @@ trackedFiles: pristine_git_object: ab9263d43404e8e6f07af222a3e785aca2fbf35f tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go: id: 3fb93a419933 - last_write_checksum: sha1:7b2ffc9e36bbfc20c3bc1894f3727f96aa94ac74 - pristine_git_object: 75fb8eb70f6913c8f83c2895f5542bee631ffdaf + last_write_checksum: sha1:09a57acc1d004a2fff76290b6c25e24471ad333e + pristine_git_object: 469bd6e6ee30bb11661f2a596a4504b75fa07da0 tests/mockserver/internal/handler/pathpostrestapiv1createshortcut.go: id: 8d9d3abb0c34 last_write_checksum: sha1:dcdf684a85e20db1aee571db9a54a3ee259d71d5 @@ -7798,8 +7906,8 @@ trackedFiles: pristine_git_object: abb763ddc8504b28c0cb6fdf8d25237d46e21bab tests/mockserver/internal/handler/pathpostrestapiv1getchat.go: id: a0ec7bafa599 - last_write_checksum: sha1:2267292ba8173cf8df70ddbc6ac02ff3439cb879 - pristine_git_object: 8740195860b6c08e036caae19aab8e7374350960 + last_write_checksum: sha1:b48e2313407814ee4f8ed181b8e5299a84960c44 + pristine_git_object: 96d4127e0455272a9842e2d1954e5fcefa3278cc tests/mockserver/internal/handler/pathpostrestapiv1getchatapplication.go: id: 7d101c69d4bc last_write_checksum: sha1:7b81898137fdb3a89b4dcfa318b9b5b92e8860c0 @@ -8138,8 +8246,8 @@ trackedFiles: pristine_git_object: 774930f21f6761e703d10082d6fd42bd5d7c5c32 tests/mockserver/internal/sdk/models/components/autocompleterequest.go: id: 56aa024b9118 - last_write_checksum: sha1:86415b3329533a2415815b14551f11a9c3dc3c3e - pristine_git_object: 2b02c414795216c099acd4479055f09d9c3d5492 + last_write_checksum: sha1:63941c26209efd373583eab713bf1a7f7c15f836 + pristine_git_object: d3de9d57317f6d2a6bb29809b40dbb35d2a75138 tests/mockserver/internal/sdk/models/components/autocompleteresponse.go: id: 66cd6764f2df last_write_checksum: sha1:ac7d26f25b2828f520494f4fbe7cd7c2beb9f44a @@ -8906,12 +9014,12 @@ trackedFiles: pristine_git_object: 04cc3a93272ac70933b0485bee31b335e05ab623 tests/mockserver/internal/sdk/models/components/feedentry.go: id: d25fd66fcf7a - last_write_checksum: sha1:f0a0c2321e2aff01b51b21b61df68d95f5ba979f - pristine_git_object: 44f5dfe7632e9ca462176445542fe70166921464 + last_write_checksum: sha1:58dc0db31dfdb82c237ea22d767d87b9953639d7 + pristine_git_object: 17af2d4e4fb0a40c79c56150d37f9ac23e085aba tests/mockserver/internal/sdk/models/components/feedrequest.go: id: b06bc4cef0cf - last_write_checksum: sha1:dba9418e46ca3f7d4fddec08c66623f9771d590d - pristine_git_object: 9489bdd527389d50e3826ebbeedc8de805528e57 + last_write_checksum: sha1:7be4ed02a4268791e023e8a2d1b7b5d2cacbbaf3 + pristine_git_object: 0802edf029cfdd49106b0a7f71e5dca02936183e tests/mockserver/internal/sdk/models/components/feedrequestoptions.go: id: fd9245fe1bf2 last_write_checksum: sha1:fa30b7fd6ee3e45896d7bbe36e33e7c0cb9000ba @@ -8922,8 +9030,8 @@ trackedFiles: pristine_git_object: 54f9d1a8997983156c84e69f888c59a80d06c2b1 tests/mockserver/internal/sdk/models/components/feedresult.go: id: 47411573e67a - last_write_checksum: sha1:ecef21a7754d70942718bf1dc156a8222c8fa36d - pristine_git_object: 4d9a33d3f245e67bb3d7ace1b5396672c73e236d + last_write_checksum: sha1:6ad65c6461037b0499d94ced551cb99c153588e3 + pristine_git_object: bfabbe251139a2408241d4f60edbd4f0074591e2 tests/mockserver/internal/sdk/models/components/followupaction.go: id: 38179fec19b1 last_write_checksum: sha1:32a31f7af77a58ce6f3284e8550d01fcf0d3bddd @@ -9326,8 +9434,8 @@ trackedFiles: pristine_git_object: 1432e9ddd5212e0f1142ae4ceefbf7e75c7e5805 tests/mockserver/internal/sdk/models/components/peoplerequest.go: id: b9eb3293a335 - last_write_checksum: sha1:ed92d35b9ee73fab4f70e9aaab17f6ad7c9351cf - pristine_git_object: 1240c00e54f6f5c4493022e643470ffd9011b8ac + last_write_checksum: sha1:d1a5b495e37ee65c5b191bca851f439330f87cdc + pristine_git_object: 4d75414bba70fd50be626d32415fdb6c58245207 tests/mockserver/internal/sdk/models/components/peopleresponse.go: id: e570c57343b4 last_write_checksum: sha1:370070abc7236a46218b5d2eeb74f00a4a082aba @@ -9350,8 +9458,8 @@ trackedFiles: pristine_git_object: f9056e4fc9da37d708e834fc6731ba114ce05981 tests/mockserver/internal/sdk/models/components/person.go: id: 11bb88f6a505 - last_write_checksum: sha1:205cadebb2dd56343e3985b090b1532ace9838e0 - pristine_git_object: ab2c5f86c9d1327bfde1edcb7706392180b8b8fc + last_write_checksum: sha1:e14e9cc2a0e35848bb4635516af18cf3b50b8943 + pristine_git_object: e3bd94410f6abc514c06fe966587bba221702eaa tests/mockserver/internal/sdk/models/components/persondistance.go: id: 38ff917355bb last_write_checksum: sha1:b1c7f853fd358135eeeeeebe8911abcefb0f646a @@ -9462,8 +9570,8 @@ trackedFiles: pristine_git_object: ba08e943e4a74ac111304125d6085f642a522085 tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go: id: 48f115d1756f - last_write_checksum: sha1:1a05a8e9c2ce9f6db1c96831eb05f6dd2cc0abc8 - pristine_git_object: 58281ae6e982ccb6e585a3299a3893a5850cfb3d + last_write_checksum: sha1:6d1eae6baac1ea0a8d42a87a076548005e48e016 + pristine_git_object: 30dae6db4e416edd64d86dc6f4579b0f4bb388b4 tests/mockserver/internal/sdk/models/components/platformchatcitationannotation.go: id: f4acfb6b571a last_write_checksum: sha1:9c897630b1c2064f01239d038de95ad8131779fa @@ -9632,14 +9740,18 @@ trackedFiles: id: ebc5c183c98b last_write_checksum: sha1:91afcf6171cafdd18d638818711fe0f3a0ba1021 pristine_git_object: dca6a6f855816c3598a9a1fa69c72f131eefa1c6 + tests/mockserver/internal/sdk/models/components/platformproblemdetail.go: + id: adae7c75e138 + last_write_checksum: sha1:6f8702f1324b66ab2c612fe3dd02faafff2578d1 + pristine_git_object: f4cb5aa31bd82d3c0efbf7a32e98d757bfd4956c tests/mockserver/internal/sdk/models/components/platformproblemdetailcode.go: id: bc7ce56d1a6c last_write_checksum: sha1:3ddc9b692878c2d8af88aedbcf4c03174f91daad pristine_git_object: f7a60ae68c37856df51bb53227d89c870f9c9c27 tests/mockserver/internal/sdk/models/components/platformproblemdetailerror.go: id: 045ae4dc7a98 - last_write_checksum: sha1:4d135d9e4dc5967a64bab866df79f2fd689caae5 - pristine_git_object: 058f5e62bda5173fed3b24fff078d7540a1378f7 + last_write_checksum: sha1:f405e92536a5c01c0bb302e106a2a6001005cbf7 + pristine_git_object: e013d6443bb4ba66882b22a5d9086f7d698fbed2 tests/mockserver/internal/sdk/models/components/platformresult.go: id: dd777258615b last_write_checksum: sha1:4343640607d8d0421164c0dc16daf5718d65e848 @@ -9658,8 +9770,8 @@ trackedFiles: pristine_git_object: 3eed4668d26f9212f864b7e486d75dbbf920b68d tests/mockserver/internal/sdk/models/components/platformskill.go: id: a97a51039ff5 - last_write_checksum: sha1:8871b58924c180a5565b43c91b58ed79212739bb - pristine_git_object: 8397a89921fdbadf8ff5733049b9faabf554e21a + last_write_checksum: sha1:a28db79567d75b08a04c51f7110db7af1686aeb2 + pristine_git_object: a507f97f20bda5e95431dd0f0d7df2d004cc9102 tests/mockserver/internal/sdk/models/components/platformskillcreaterequest.go: id: 05411c97e4b1 last_write_checksum: sha1:8d732893340e35116cb9768a65fd07dd6e77c6c6 @@ -9678,72 +9790,108 @@ trackedFiles: pristine_git_object: f038a7deff637e79bde341c3b7b30da64979a8c3 tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go: id: 440a9e446bd2 - last_write_checksum: sha1:450ab4711bb5995f21f486cc05fae94264ee840a - pristine_git_object: 262df2a7dfed6e67a02d34a227ba545cbc521e18 + last_write_checksum: sha1:1fc9aaacdbebc73d421d004bd209ce8816213bab + pristine_git_object: 796e0f2e0c70e0ea0b7316b81fb8bc8b9ffc97be tests/mockserver/internal/sdk/models/components/platformskillorigin.go: id: b3f692d12f20 - last_write_checksum: sha1:4bbd57b85b9318d5fa9ea3ca97e26cab34e689fd - pristine_git_object: e0a004498154f0b4285d2d29dde3d0e27b163bb6 + last_write_checksum: sha1:924c28e24a95d203cc3f1be9f067ca1b72ca5fc2 + pristine_git_object: 1afff27476707400c1697c3f22533d9d44e92e3b tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go: id: 61695a856d41 - last_write_checksum: sha1:718c3f3013007de52b02444e4a12d43a10fce37d - pristine_git_object: 566d53518ac6a45dc5ae0ec8e5e55df0433f8ae1 + last_write_checksum: sha1:1727a6f00ad993550964a828e798c5c75a52de84 + pristine_git_object: 55a8d69a0bb440a43cbade924357f664462c137a tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go: id: "760613548093" - last_write_checksum: sha1:3deb2829d40e4656a75ad550dc52dd3a97a3d8e6 - pristine_git_object: f7a467f1f1802a1a56314879c7666620ca9d714e + last_write_checksum: sha1:04e3eb17f6942925a17829e77f26ab20dde2b4df + pristine_git_object: 85b419fd0742494c027fafacef2ea295bab8f437 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go: id: e2897ced2da1 - last_write_checksum: sha1:6255f8ffe6c9d895d71f4eac788dc31a131b6038 - pristine_git_object: 5a6c6fe802defd21d7d69908b67a24d9b75c50ce + last_write_checksum: sha1:316b2fbb6836b7d12d7deac8313b3aa8c7e273ab + pristine_git_object: 92ed2f8b31775e22c78cc691fe4a616ec69ed2e0 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailurecode.go: id: c9d600e5e25f last_write_checksum: sha1:7cd531f5e341ae1078991bf91345f4a6e32f35c8 pristine_git_object: 0096a29687b3f1e393cb76f6a8f794a20e860eb2 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfile.go: id: 7b0601c7fda7 - last_write_checksum: sha1:290db2107fb5e9f550e18a4f13542f391ad04cbd - pristine_git_object: 43503cfb38dcef06b555785d2edce1fe6ec3357e - tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewrequest.go: - id: 292b42c0c32f - last_write_checksum: sha1:f03a4a7dcadb91d7b31ba3a1ddd24bc5b612a7a6 - pristine_git_object: 506e0c0928373629b10db3240532b678e8fe6c42 + last_write_checksum: sha1:9aa7df164105692a1c8c94c58bdc905b0292f2d2 + pristine_git_object: 7622555e6e310e61fe97c2018874a2617652b8e0 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewresponse.go: id: d14b15a2dcc9 - last_write_checksum: sha1:3fb833b7b4a3bb0b15ca4bba00a74a2de33dcad3 - pristine_git_object: 0607598d7d2a3539a2b4ad5ca38b9baba4402f32 + last_write_checksum: sha1:d441199f3e22acac926b5a9efe954bc9a6ccaf59 + pristine_git_object: 597fec463e80e259d214bab9f9558d7753e9f85d + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerror.go: + id: 6c1052e60686 + last_write_checksum: sha1:987b6979fc2edc28720b16d0f3dc46c30aa01260 + pristine_git_object: e1b0e86ee20a08703457d28c27c777b4654e4f7d + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerrorserversentevent.go: + id: 2cd2ecb73df6 + last_write_checksum: sha1:e939df04fe9b21db43b972eea9e4317c8e23a8e3 + pristine_git_object: 548ebf7aac1f449aeded1a7c43082ef08666d270 + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreameventserversentevent.go: + id: 0be12109a543 + last_write_checksum: sha1:419185038a6d4a4e2d4b55e2ee34cb477877d7b4 + pristine_git_object: 3451e40995f399d256e6a2a2c377c53560e10044 + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogress.go: + id: 4d68a2c79d1c + last_write_checksum: sha1:06ce3265abfe814ed64a121287011ab7833cdcde + pristine_git_object: 20885b778b3863d930303a423a6588cdb484da6e + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogressserversentevent.go: + id: 08bebbbd3da8 + last_write_checksum: sha1:a02f1221cf4ed23cbaad7b2e92b6300cb5f370db + pristine_git_object: 76ee67dd91eca6dbe90fc58aaebd1f17470c138c + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresult.go: + id: caa717d6ce3b + last_write_checksum: sha1:358ccda38ea775047843b2f750fce1df522a9401 + pristine_git_object: b3070c6757f4e5566f37700dae82b4c73e545fd7 + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresultserversentevent.go: + id: adb39b845754 + last_write_checksum: sha1:ce3666888f02122539c2ce18e04c8f3904346432 + pristine_git_object: 9320bc5f1e3af5cb7b470c48afc672af6c74b89a + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscan.go: + id: c3b9aa22bb03 + last_write_checksum: sha1:d4e1ef41d9f8dab52da2f074249c72b459629bd1 + pristine_git_object: 118e12737ab1cce6c83e60a57b99e5f48e94fe0f + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscanserversentevent.go: + id: ce542da3ad10 + last_write_checksum: sha1:c978a4152705403426e4c70e421afc991715659e + pristine_git_object: f1b6205495b5d248c4a22df9277c9cc1a19e4d8f + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskill.go: + id: c94f07da7814 + last_write_checksum: sha1:cd297fc0aa70d3d22d31e2d13fab9f27b4ffb7a9 + pristine_git_object: 2be741fc4cf01ad11b6db6dabd51f2d37066b490 + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskillserversentevent.go: + id: f9205770e640 + last_write_checksum: sha1:9478a51994487670379db2b1ac9310b3d542aa1a + pristine_git_object: 7b53e037415d941d93027a0ed2751c51a4768408 tests/mockserver/internal/sdk/models/components/platformskillsourceprovenance.go: id: 3a0b70781266 last_write_checksum: sha1:f64c669b34f9bc8e21d5620001620e8c8a66756f pristine_git_object: 65ed2aacddbc7cb4f5ac6084a8eb21e236b3b377 tests/mockserver/internal/sdk/models/components/platformskillstatus.go: id: d6163aa830e8 - last_write_checksum: sha1:641cb578909b86e1c1166a75e309e5bcf52ecf29 - pristine_git_object: a218b7608eead950ddb62301af0326adc4f091f5 + last_write_checksum: sha1:ef51c4f47afcb3b1776ac211dafb2ca2051a6c6d + pristine_git_object: d47da9c07bd620bc344c9e32a203ed3ecb57c120 tests/mockserver/internal/sdk/models/components/platformskillsyncresponse.go: id: 267c56967302 - last_write_checksum: sha1:b9faeea2e746ab841ea853e4dbdd790b3108117f - pristine_git_object: 773dec5b3554705b262899c6d3bc0c88b1a971c8 - tests/mockserver/internal/sdk/models/components/platformskillsyncresultstatus.go: - id: 3d2ff828aede - last_write_checksum: sha1:eacc4c992746eb655ba515541ad13e83fd6bfeb5 - pristine_git_object: 93f6e9eda63a8156c768b4f69c52638311bcb103 + last_write_checksum: sha1:4a018e2a251697e01ea7b3234a834b16bff8e98e + pristine_git_object: cd8c8278ff2e72e9a3901d4ffef77ec986fd946a tests/mockserver/internal/sdk/models/components/platformskillsyncstatus.go: id: a172da0d9d4d last_write_checksum: sha1:66e29681184c77fbbff593cc30e33023a3b39c81 pristine_git_object: 0582664c1c7451d505bc18ea138e299db160c5a6 tests/mockserver/internal/sdk/models/components/platformskillupdaterequest.go: id: 77853bf3d285 - last_write_checksum: sha1:b327107396570bb07844005756dcbcc502c99030 - pristine_git_object: 16b5b62569411c6e73675a6e4322a5ad993994d6 + last_write_checksum: sha1:f3f5733d0e4b4fe9bfe5e84fb0c2e8d74994c97d + pristine_git_object: 1b12048233685c4f71d09237a656b60c798537b8 tests/mockserver/internal/sdk/models/components/platformskillupdateresponse.go: id: 505fbacea4bd last_write_checksum: sha1:2ef06dfd496e4209ccbdcf6bf246a31b97c23e46 pristine_git_object: 99256154b7dc79f111888a4dff8e90127090bd1f tests/mockserver/internal/sdk/models/components/platformskillupdatestatus.go: id: "511258017192" - last_write_checksum: sha1:b430910b34dda5f1fa8b12d36ad9d40681664464 - pristine_git_object: d40a5b9ff289b22e47722564782e863c1ad983db + last_write_checksum: sha1:c2f69717c45cc61406a2fdf501b9d26319d0e9b7 + pristine_git_object: 46eaa67fe4be82e0ff7ea6b1cf67d3483ec5ec62 tests/mockserver/internal/sdk/models/components/platformskillvalidationfile.go: id: 4c3718b26406 last_write_checksum: sha1:fda63f0276f5a36dca1e5b81fdc3e7b1e7766034 @@ -9778,8 +9926,8 @@ trackedFiles: pristine_git_object: d86476b946a8dd85853c233b93a123eb81b0cfb7 tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go: id: 35adfb5fbba2 - last_write_checksum: sha1:19ba3b0df3949f3771d8026290caeb44a9350e42 - pristine_git_object: e6eac47b00f8ce90e72c78ef293dea6e1f933782 + last_write_checksum: sha1:42f6693dcea22369b550da6b9c2a6fc9a950e389 + pristine_git_object: cc6af7a34c50da96df3629b65aa69dc50a8452de tests/mockserver/internal/sdk/models/components/platformtimerange.go: id: cf2540151ce1 last_write_checksum: sha1:3a0ec2ca473681b89ff97606f648fc15fcdae38e @@ -10790,12 +10938,12 @@ trackedFiles: pristine_git_object: 8e578bcdd052389777bf51d0140176d523d4a976 tests/mockserver/internal/sdk/models/operations/platformskillscreate.go: id: cd743025fd37 - last_write_checksum: sha1:af1e6384914f9cd0cc653f0492e99ec648168391 - pristine_git_object: 7018793fb9ea00645c22183c434e464e8b1a9b15 + last_write_checksum: sha1:5b08770af61d546cfbeb95768a3f9a874fff1e15 + pristine_git_object: f5a358516f1061ddf869cf52c4f66c6e5381da38 tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go: id: e864f7a1e300 - last_write_checksum: sha1:71b26146e856969fad0ec9664b6ded57bcbf41cc - pristine_git_object: 554b04385e45319a18190bbce6e683be221cd3d2 + last_write_checksum: sha1:8a603a5c82d8531b6445a806c67dac05cca1ae47 + pristine_git_object: 6a55d73da4ad16aa98b7a027c5c4887d459b4a27 tests/mockserver/internal/sdk/models/operations/platformskillsdelete.go: id: b882924d7f05 last_write_checksum: sha1:e48b3d6e818895e65535b0d98bc69234920a8c8e @@ -10822,16 +10970,20 @@ trackedFiles: pristine_git_object: 05953c0918c11c9a3ee57114361e27026ee81e82 tests/mockserver/internal/sdk/models/operations/platformskillslist.go: id: daa657929c98 - last_write_checksum: sha1:fb44d154d8dcca86575b76dd6fdef213e2a568a5 - pristine_git_object: 40f74199560f03309466234c52f5d5dfaed2f563 + last_write_checksum: sha1:370b051d430a210d9d3a905fe325aae50a1a532a + pristine_git_object: 2286c481cbe0c103dc14c83580a86241be91d2e4 tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go: id: ef57d1f31c39 - last_write_checksum: sha1:60e17abc357b220cb752d85a411402a118b6fde7 - pristine_git_object: 3853971fc3d394241809e862a204df0821c4e368 + last_write_checksum: sha1:2b2d45ef20b064c3904f9f5490c1cb585faf6001 + pristine_git_object: dcea3d13ed01063a2cd11bcefe52e4cd5393e2b9 tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go: id: 9228f6ef6a79 - last_write_checksum: sha1:7f93cbe4b5fa4ddafbe7b3e5d7782d48c4290ce7 - pristine_git_object: a32c6102b4d886eb573006e516e5f1047cd5ac2c + last_write_checksum: sha1:57cc85028d47624c7697f5f3668f90b368152623 + pristine_git_object: a189b4a36f3e9b82467eee47d39965f5b51ce436 + tests/mockserver/internal/sdk/models/operations/platformskillspreviewsourcestream.go: + id: d16e8ef0b238 + last_write_checksum: sha1:01f9d7e96b48079c543d765273ef9954ff410c0f + pristine_git_object: f89eab8b3bee36773af12f03ba11a89de9b846e9 tests/mockserver/internal/sdk/models/operations/platformskillssync.go: id: 16804fdbcba4 last_write_checksum: sha1:7525ca186303c98bc1d8104c6aeb506dc64149ce @@ -11138,12 +11290,12 @@ trackedFiles: pristine_git_object: 0f579e13784795d08fe8f2562fc5007cd43babd6 tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go: id: 49a8c2638f49 - last_write_checksum: sha1:aa5ff815f31a3657487ad5e0c3f023f573b1fcab - pristine_git_object: bdf1155c8c11ce1a1266e0e2e0fe24a1cefff196 + last_write_checksum: sha1:58d775c91b1a5ef5149b625286e4f35b96bb6f7f + pristine_git_object: 6d3eff536c547737cc702e0d385dc38924e93b34 tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go: id: 67aafc07794f - last_write_checksum: sha1:c0ca755fb35acd8f838567e22c2b5722592fe1c3 - pristine_git_object: 52fb11f9ecfbf5e83c2a2d406d39e9a58923ef27 + last_write_checksum: sha1:bc65a2684a85ad0d79c7643836c17a222adf1082 + pristine_git_object: cfddc167f5105e174c6ad5917a6ae9a7defa8245 tests/mockserver/internal/sdk/types/bigint.go: id: 87f867cb8679 last_write_checksum: sha1:49b004005d0461fb04b846eca062b070b0360b31 @@ -11174,8 +11326,8 @@ trackedFiles: pristine_git_object: 365d8cff3c2d90c64859e66f9f0b788f0271b2d7 tests/mockserver/internal/sdk/utils/json.go: id: b1ed67b63d16 - last_write_checksum: sha1:2c860aa8b53b7d38c20290854c880368ce4fe0ec - pristine_git_object: e5aafa7be41a6c5a754c4c500c13a1aabcc654d4 + last_write_checksum: sha1:5e20daa1ddf6ebe49c4c0f34fd0051c43e6b7ff9 + pristine_git_object: 6ec0f8449efe84dafbc7b5cc438f9a54ebe1fc52 tests/mockserver/internal/sdk/utils/reflect.go: id: b024be29d61f last_write_checksum: sha1:1e3a0ca0387685b6b21c0a6a75650b8611c76ee3 @@ -11306,8 +11458,8 @@ trackedFiles: pristine_git_object: acec822d761f40906a287eee92200d1223caec4d tests/test_entities.py: id: 9bdc6c717c71 - last_write_checksum: sha1:883ddda9c056ac71fb37d07777e21e97b3d6a345 - pristine_git_object: b6c97f067a81983cd9055ea636273276c569d6dc + last_write_checksum: sha1:80ecdab911ec70bb80ecbf213772280444c8224d + pristine_git_object: 1dac6d8fd15046b62633704e46ef1637efef0687 tests/test_findings.py: id: f4c91dfb4975 last_write_checksum: sha1:8c377b73f379ee056474bdc6a19e3d7d5d323ef4 @@ -11358,12 +11510,12 @@ trackedFiles: pristine_git_object: d0a8bd281e331739b23473d92b80408666d63066 tests/test_skills.py: id: ac5db26bd6b1 - last_write_checksum: sha1:51a01a7104693f6ddde3496296f520a0f1c6243d - pristine_git_object: 63587d5a9e7b7e506ce9daf00d51ce92afb56035 + last_write_checksum: sha1:c01d9e86a9686459777a922246762675ffd9a41a + pristine_git_object: 1c854370da050c261cb2cbcf9cc16829f5d8e78c tests/test_summarize.py: id: a255d8a6f627 - last_write_checksum: sha1:6383d6969c6f1bf1832e5ace511e5c2ffaa6d86f - pristine_git_object: cac8e9788f25fda1ff78bd2e3e36917319145e82 + last_write_checksum: sha1:369fb3252ac83f31462013f3777f0ce32d7ea6b9 + pristine_git_object: 73486833f8fa3285f5f14f0ac2b303632276b727 tests/test_tools.py: id: 70889bdf7321 last_write_checksum: sha1:e9e37efd6a65d805c02d70d548df9c87dd062b0e @@ -11780,7 +11932,7 @@ examples: people: speakeasy-default-people: requestBody: - application/json: {"obfuscatedIds": ["abc123", "abc456"]} + application/json: {"fallbackToAuthenticatedIdentity": false, "obfuscatedIds": ["abc123", "abc456"]} responses: "200": application/json: {"results": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "relatedDocuments": [{"querySuggestion": {"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}, "results": [{"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"suggestions": [{"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}], "person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}]}]} @@ -12406,11 +12558,16 @@ examples: application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + "201": + application/json: {"skill": {"skill_id": "", "display_name": "Merl18", "description": "rural ugh unexpectedly excepting livid", "latest_version": 504149, "latest_minor_version": 106110, "status": "DISABLED", "origin": "CUSTOM", "owner": {"name": ""}, "created_at": "2025-09-10T16:05:46.046Z", "updated_at": "2025-08-13T23:05:45.737Z"}, "request_id": ""} platform-skills-list: speakeasy-default-platform-skills-list: + parameters: + query: + page_size: 20 responses: "200": - application/json: {"skills": [], "has_more": true, "next_cursor": "", "request_id": ""} + application/json: {"results": [], "has_more": true, "next_cursor": "", "request_id": ""} "400": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": @@ -12433,7 +12590,7 @@ examples: skill_id: "" responses: "200": - application/json: {"skill": {"id": "", "display_name": "Chad_Herzog", "description": "whenever up aha controvert", "latest_version": 151495, "latest_minor_version": 170771, "status": "DISABLED", "origin": "CUSTOM", "owner": {"name": ""}, "created_at": "2024-12-25T16:41:00.099Z", "updated_at": "2026-12-07T21:59:59.375Z"}, "request_id": ""} + application/json: {"skill": {"skill_id": "", "display_name": "Chad_Herzog", "description": "whenever up aha controvert", "latest_version": 151495, "latest_minor_version": 170771, "status": "DISABLED", "origin": "CUSTOM", "owner": {"name": ""}, "created_at": "2024-12-25T16:41:00.099Z", "updated_at": "2026-12-07T21:59:59.375Z"}, "request_id": ""} "400": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": @@ -12464,14 +12621,18 @@ examples: application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + "201": + application/json: {"version": {"skill_id": "", "version": 375506, "minor_version": 600322, "is_latest": false, "created_by": {"name": ""}, "created_at": "2026-09-27T14:37:09.109Z", "updated_at": "2024-05-30T08:59:58.715Z"}, "request_id": ""} platform-skills-list-versions: speakeasy-default-platform-skills-list-versions: parameters: path: skill_id: "" + query: + page_size: 20 responses: "200": - application/json: {"versions": [], "has_more": false, "next_cursor": "", "request_id": ""} + application/json: {"results": [], "has_more": false, "next_cursor": "", "request_id": ""} "400": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": @@ -12540,6 +12701,10 @@ examples: application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + "201": + application/json: {"skills": [], "request_id": ""} + "422": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}], "authentication_suggestions": []} platform-skills-preview-source: speakeasy-default-platform-skills-preview-source: requestBody: @@ -12552,6 +12717,8 @@ examples: application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + "422": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}], "authentication_suggestions": []} platform-skills-update: speakeasy-default-platform-skills-update: parameters: @@ -12561,7 +12728,7 @@ examples: application/json: {"status": "ENABLED"} responses: "200": - application/json: {"skill": {"id": "", "display_name": "Afton14", "description": "taut netsuke duh sonata boastfully elegantly management come", "latest_version": 425795, "latest_minor_version": 741364, "status": "DISABLED", "origin": "CUSTOM", "owner": {"name": ""}, "created_at": "2024-12-20T01:31:39.364Z", "updated_at": "2025-12-04T02:59:37.124Z"}, "request_id": ""} + application/json: {"skill": {"skill_id": "", "display_name": "Afton14", "description": "taut netsuke duh sonata boastfully elegantly management come", "latest_version": 425795, "latest_minor_version": 741364, "status": "DISABLED", "origin": "CUSTOM", "owner": {"name": ""}, "created_at": "2024-12-20T01:31:39.364Z", "updated_at": "2025-12-04T02:59:37.124Z"}, "request_id": ""} "400": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": @@ -12583,11 +12750,13 @@ examples: skill_id: "" responses: "200": - application/json: {"sync_status": "UP_TO_DATE", "commit_sha": "", "updated": false, "request_id": ""} + application/json: {"commit_sha": "", "is_updated": false, "request_id": ""} "400": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + "422": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}], "authentication_suggestions": [{"server_id": ""}]} platform-search-filters: speakeasy-default-platform-search-filters: responses: @@ -12794,6 +12963,17 @@ examples: application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + platform-skills-preview-source-stream: + speakeasy-default-platform-skills-preview-source-stream: + requestBody: + application/json: {"source_url": "https://github.com/anthropics/skills", "stream": true} + responses: + "422": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}], "authentication_suggestions": [{"server_id": ""}]} + "400": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + "500": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} examplesVersion: 1.0.2 generatedTests: activity: "2025-04-28T22:05:12+01:00" @@ -12997,7 +13177,7 @@ generatedTests: platform-agents-get-run: "2026-09-23T18:29:44Z" platform-agents-cancel-run: "2026-09-23T18:29:44Z" platform-agents-create-run-responses: "2026-09-23T18:29:44Z" -releaseNotes: "## Python SDK Changes:\n* `glean.agents.create_run()`: \n * `request.execution_mode` **Added**\n * `response.status[201]` **Added** (Breaking ⚠️)\n* `glean.agents.get_run()`: **Added**\n* `glean.agents.cancel_run()`: **Added**\n* `glean.agents.respond_to_run()`: **Added**\n* `glean.chat.create()`: \n * `request.text` **Added**\n * `response.output[].content[].structured_output` **Added**\n* `glean.client.search.retrieve_feed()`: \n * `request.categories[]` **Changed**\n * `response.results[]` **Changed**\n" +releaseNotes: "## Python SDK Changes:\n* `glean.skills.create()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error.status[409]` **Added**\n* `glean.skills.list()`: \n * `request.page_size` **Changed**\n * `response` **Changed** (Breaking ⚠️)\n* `glean.skills.import()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error.status[422]` **Added**\n* `glean.skills.preview_source()`: \n * `request.stream` **Removed** (Breaking ⚠️)\n * `response.status[200].content[text/event-stream` **Removed** (Breaking ⚠️)\n * `error.status[422]` **Added**\n* `glean.skills.update()`: `response.skill` **Changed** (Breaking ⚠️)\n* `glean.skills.retrieve()`: `response.skill` **Changed** (Breaking ⚠️)\n* `glean.skills.sync()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `glean.skills.create_version()`: `response` **Changed** (Breaking ⚠️)\n* `glean.skills.list_versions()`: \n * `request.page_size` **Changed**\n * `response` **Changed** (Breaking ⚠️)\n* `glean.client.announcements.create()`: \n * `request.body.structured_list[].document.metadata.author.identity_only` **Added**\n * `response.body.structured_list[].document.metadata.author.identity_only` **Added**\n* `glean.client.announcements.update()`: \n * `request.body.structured_list[].document.metadata.author.identity_only` **Added**\n * `response.body.structured_list[].document.metadata.author.identity_only` **Added**\n* `glean.client.answers.create()`: \n * `request.data.added_roles[].person.identity_only` **Added**\n * `response.added_roles[].person.identity_only` **Added**\n* `glean.client.answers.update()`: \n * `request.added_roles[].person.identity_only` **Added**\n * `response.added_roles[].person.identity_only` **Added**\n* `glean.client.answers.retrieve()`: `response.answer_result.answer.added_roles[].person.identity_only` **Added**\n* `glean.client.answers.list()`: `response.answer_results[].answer.added_roles[].person.identity_only` **Added**\n* `glean.client.chat.create()`: \n * `request.messages[].citations[].source_document.metadata.author.identity_only` **Added**\n * `response.messages[].citations[].source_document.metadata.author.identity_only` **Added**\n* `glean.client.chat.retrieve()`: \n * `response.chat_result.chat.created_by.identity_only` **Added**\n * `error.created_by.identity_only` **Added**\n* `glean.client.chat.list()`: `response.chat_results[].chat.created_by.identity_only` **Added**\n* `glean.client.chat.create_stream()`: \n * `request.messages[].citations[].source_document.metadata.author.identity_only` **Added**\n* `glean.client.agents.create()`: `response.workflow.author.identity_only` **Added**\n* `glean.client.agents.import()`: `response.workflow_result.workflow.author.identity_only` **Added**\n* `glean.client.collections.add_items()`: `response.collection.added_roles[].person.identity_only` **Added**\n* `glean.client.collections.create()`: \n * `request.added_roles[].person.identity_only` **Added**\n * `response.union(class (0)).collection.added_roles[].person.identity_only` **Added**\n* `glean.client.collections.delete_item()`: `response.collection.added_roles[].person.identity_only` **Added**\n* `glean.client.collections.update()`: \n * `request.added_roles[].person.identity_only` **Added**\n * `response.added_roles[].person.identity_only` **Added**\n* `glean.client.collections.update_item()`: `response.collection.added_roles[].person.identity_only` **Added**\n* `glean.client.collections.retrieve()`: `response.collection.added_roles[].person.identity_only` **Added**\n* `glean.client.collections.list()`: `response.collections[].added_roles[].person.identity_only` **Added**\n* `glean.client.documents.retrieve()`: `response.documents.Map.union(Document).metadata.author.identity_only` **Added**\n* `glean.client.documents.retrieve_by_facets()`: `response.documents[].metadata.author.identity_only` **Added**\n* `glean.client.insights.retrieve()`: `response.glean_assist.activity_insights[].user.identity_only` **Added**\n* `glean.client.messages.retrieve()`: `response.search_response.results[].structured_results[].document.metadata.author.identity_only` **Added**\n* `glean.client.pins.update()`: `response.attribution.identity_only` **Added**\n* `glean.client.pins.retrieve()`: `response.pin.attribution.identity_only` **Added**\n* `glean.client.pins.list()`: `response.pins[].attribution.identity_only` **Added**\n* `glean.client.pins.create()`: `response.attribution.identity_only` **Added**\n* `glean.client.search.query_as_admin()`: \n * `request.source_document.metadata.author.identity_only` **Added**\n * `response.results[].structured_results[].document.metadata.author.identity_only` **Added**\n* `glean.client.search.autocomplete()`: `response.results[].document.metadata.author.identity_only` **Added**\n* `glean.client.search.retrieve_feed()`: \n * `request.categories[].enum(onboarding_authorization)` **Added**\n * `response.results[]` **Changed**\n* `glean.client.search.recommendations()`: \n * `request.source_document.metadata.author.identity_only` **Added**\n * `response.results[].structured_results[].document.metadata.author.identity_only` **Added**\n* `glean.client.search.query()`: \n * `request.source_document.metadata.author.identity_only` **Added**\n * `response.results[].structured_results[].document.metadata.author.identity_only` **Added**\n* `glean.client.entities.list()`: `response.results[].identity_only` **Added**\n* `glean.client.entities.read_people()`: \n * `request.fallback_to_authenticated_identity` **Added**\n * `response.results[].identity_only` **Added**\n* `glean.client.shortcuts.create()`: \n * `request.data.added_roles[].person.identity_only` **Added**\n * `response.shortcut.added_roles[].person.identity_only` **Added**\n* `glean.client.shortcuts.retrieve()`: `response.shortcut.added_roles[].person.identity_only` **Added**\n* `glean.client.shortcuts.list()`: `response.shortcuts[].added_roles[].person.identity_only` **Added**\n* `glean.client.shortcuts.update()`: \n * `request.added_roles[].person.identity_only` **Added**\n * `response.shortcut.added_roles[].person.identity_only` **Added**\n* `glean.client.verification.add_reminder()`: `response.metadata.last_verifier.identity_only` **Added**\n* `glean.client.verification.list()`: `response.documents[].metadata.last_verifier.identity_only` **Added**\n* `glean.client.verification.verify()`: `response.metadata.last_verifier.identity_only` **Added**\n" generatedFiles: - .devcontainer/README.md - .devcontainer/devcontainer.json diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 7b5f20a3..6b7d70e5 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -34,7 +34,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: true python: - version: 0.17.15 + version: 0.17.16 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/glean-merged-spec.yaml b/.speakeasy/glean-merged-spec.yaml index 8ba3d65e..ff243a54 100644 --- a/.speakeasy/glean-merged-spec.yaml +++ b/.speakeasy/glean-merged-spec.yaml @@ -2,8 +2,8 @@ openapi: 3.1.0 info: version: "0.9.0" title: Glean API - x-source-commit-sha: 600aa35531e44582cf056cb0531c04e7ec04d472 - x-open-api-commit-sha: c9917479fd934576f376c1f21d0bb426ee4fd46e + x-source-commit-sha: d40f72ff63b3ae54f2797b01ab0f4173c8d6fa38 + x-open-api-commit-sha: 5d2379ce2c66bca0f04996f602c87f4923c0c296 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. @@ -488,7 +488,7 @@ paths: - Skills summary: Create skill description: | - Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version. + Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version, unless it is source-managed: a same-name create over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. Two concurrent same-name creates can still produce two skills. operationId: platform-skills-create x-visibility: Public x-glean-experimental: @@ -502,8 +502,8 @@ paths: $ref: "#/components/schemas/PlatformSkillCreateRequest" x-codegen-request-body-name: request responses: - "200": - description: Successful response. + "201": + description: Skill created. content: application/json: schema: @@ -518,6 +518,8 @@ paths: $ref: "#/components/responses/PlatformNotFound" "408": $ref: "#/components/responses/PlatformRequestTimeout" + "409": + $ref: "#/components/responses/PlatformConflict" "413": $ref: "#/components/responses/PlatformRequestTooLarge" "429": @@ -535,7 +537,7 @@ paths: - Skills summary: List skills description: | - List skills available to the authenticated user. + List every custom skill the authenticated caller can access. Built-in skills are excluded: they have no versions, content download, update, or delete, so their identifiers would fail most skill operations. Chat-authored skills shared with the caller without a listed grant are omitted: they stay retrievable by identifier when it is known, but this list does not discover them. operationId: platform-skills-list x-visibility: Public x-glean-experimental: @@ -544,12 +546,13 @@ paths: parameters: - in: query name: page_size - description: Maximum number of skills to return. + description: Maximum number of skills to return. Defaults to 20. Maximum is 100. required: false schema: type: integer minimum: 1 maximum: 100 + default: 20 - in: query name: cursor description: Opaque pagination cursor from a previous response. @@ -604,7 +607,7 @@ paths: schema: $ref: "#/components/schemas/PlatformSkillImportRequest" responses: - "200": + "201": description: Skills imported successfully. content: application/json: @@ -622,6 +625,12 @@ paths: $ref: "#/components/responses/PlatformConflict" "413": $ref: "#/components/responses/PlatformRequestTooLarge" + "422": + description: Returned when GitHub authorization is missing for a source URL. `authentication_suggestions` names the GitHub action pack to authorize; POST its `server_id` to the Client API's `/tool-servers/{serverId}/auth` with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to, then retry the import once OAuth completes. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformUnauthorizedAgentToolsProblem" "429": $ref: "#/components/responses/PlatformTooManyRequests" "500": @@ -698,7 +707,16 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/PlatformSkillSourcePreviewRequest" + allOf: + - $ref: "#/components/schemas/PlatformSkillSourcePreviewRequest" + - type: object + required: + - stream + properties: + stream: + type: boolean + const: false + default: false responses: "200": description: Successful response. @@ -706,23 +724,6 @@ paths: application/json: schema: $ref: "#/components/schemas/PlatformSkillSourcePreviewResponse" - text/event-stream: - schema: - type: string - description: | - Server-sent scan, progress, skill, and result events. A failed stream - emits `data: {"type":"error","code":"service_unavailable","message":"GitHub is temporarily unavailable."}` - followed by `data: [DONE]` instead of a result event. - example: | - data: {"type":"scan","total":1,"skill_paths":["https://github.com/acme/skills/tree/main/skills/example"]} - - data: {"type":"progress","completed":1,"total":1,"current_skill":"skills/example/SKILL.md"} - - data: {"type":"skill","skill":{"display_name":"Example","description":"Example skill","source_url":"https://github.com/acme/skills/tree/main/skills/example","commit_sha":"abc123","main_content":"---\nname: Example\n---","files":[],"file_tree":["SKILL.md"]}} - - data: {"type":"result","response":{"skills":[{"display_name":"Example","description":"Example skill","source_url":"https://github.com/acme/skills/tree/main/skills/example","commit_sha":"abc123","main_content":"---\nname: Example\n---","files":[],"file_tree":["SKILL.md"]}],"failures":[],"request_id":"req-123"}} - - data: [DONE] "400": $ref: "#/components/responses/PlatformBadRequest" "401": @@ -733,6 +734,12 @@ paths: $ref: "#/components/responses/PlatformRequestTimeout" "413": $ref: "#/components/responses/PlatformRequestTooLarge" + "422": + description: Returned when GitHub authorization is missing for the source URL. `authentication_suggestions` names the GitHub action pack to authorize; POST its `server_id` to the Client API's `/tool-servers/{serverId}/auth` with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to, then retry the preview once OAuth completes. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformUnauthorizedAgentToolsProblem" "429": $ref: "#/components/responses/PlatformTooManyRequests" "500": @@ -749,7 +756,7 @@ paths: - Skills summary: Update skill description: | - Update mutable metadata for a skill. V1 supports enabling or disabling a skill without changing its content. + Enable or disable the skill for the authenticated caller without changing its content. The owner's update sets the skill's stored status. Any other caller's update applies only to that caller. operationId: platform-skills-update x-visibility: Public x-glean-experimental: @@ -986,8 +993,12 @@ paths: $ref: "#/components/responses/PlatformRequestTimeout" "409": $ref: "#/components/responses/PlatformConflict" - "413": - $ref: "#/components/responses/PlatformRequestTooLarge" + "422": + description: Returned when GitHub authorization is missing for the stored source URL. `authentication_suggestions` names the GitHub action pack to authorize; POST its `server_id` to the Client API's `/tool-servers/{serverId}/auth` with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to, then retry the sync once OAuth completes. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformUnauthorizedAgentToolsProblem" "429": $ref: "#/components/responses/PlatformTooManyRequests" "500": @@ -1004,7 +1015,7 @@ paths: - Skills summary: Create skill version description: | - Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. + Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. A create-version over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. operationId: platform-skills-create-version x-visibility: Public x-glean-experimental: @@ -1027,8 +1038,8 @@ paths: $ref: "#/components/schemas/PlatformSkillVersionCreateRequest" x-codegen-request-body-name: request responses: - "200": - description: Successful response. + "201": + description: Skill version created. content: application/json: schema: @@ -1079,12 +1090,13 @@ paths: minLength: 1 - in: query name: page_size - description: Maximum number of versions to return. + description: Maximum number of versions to return. Defaults to 20. Maximum is 100. required: false schema: type: integer minimum: 1 maximum: 100 + default: 20 - in: query name: cursor description: Opaque pagination cursor from a previous response. @@ -1349,6 +1361,288 @@ paths: x-speakeasy-name-override: listFilters security: - APIToken: [] + /api/admin/usage/limits: + get: + tags: + - Usage + summary: List usage limits + description: | + List configured limits across Glean and external spend clients, plus aggregate agent limits. Organization and user limits identify their spend client; aggregate agent limits omit client_id. Requires admin.usage.limits:read and permission to read workspace billing. + operationId: platform-usage-limits-list + x-visibility: Public + x-glean-experimental: + id: ca19b3e8-9a6d-4a31-8f2f-6c7d8e9f0011 + introduced: "2026-09-16" + parameters: + - name: page_size + in: query + description: Maximum number of limits to return. Defaults to 20; the maximum allowed is 100. + example: 20 + schema: + type: integer + minimum: 1 + maximum: 100 + default: 20 + - name: cursor + in: query + description: Opaque cursor from a previous list response. + example: "{cursor}" + schema: + type: string + responses: + "200": + description: List of usage limits. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformListUsageLimitsResponse" + "400": + $ref: "#/components/responses/PlatformBadRequest" + "401": + $ref: "#/components/responses/PlatformUnauthorized" + "403": + $ref: "#/components/responses/PlatformForbidden" + "404": + $ref: "#/components/responses/PlatformNotFound" + "408": + $ref: "#/components/responses/PlatformRequestTimeout" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: admin.usage + x-speakeasy-name-override: listLimits + security: + - APIToken: [] + /api/admin/usage/limits/reset: + post: + tags: + - Usage + summary: Reset a usage limit + description: | + Remove a configured usage limit matching the selector without clearing measured usage. Requires admin.usage.limits:write and permission to edit workspace billing. + operationId: platform-usage-limits-reset + x-visibility: Public + x-glean-experimental: + id: ca19b3e8-9a6d-4a31-8f2f-6c7d8e9f0013 + introduced: "2026-09-16" + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformUsageLimitKey" + example: + target: + type: USER + user_id: user_123 + usage_selector: + client_id: glean + period: + type: RECURRING_CALENDAR_MONTH + responses: + "200": + description: Reset result. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformResetUsageLimitsResponse" + "400": + $ref: "#/components/responses/PlatformBadRequest" + "401": + $ref: "#/components/responses/PlatformUnauthorized" + "403": + $ref: "#/components/responses/PlatformForbidden" + "404": + $ref: "#/components/responses/PlatformNotFound" + "408": + $ref: "#/components/responses/PlatformRequestTimeout" + "413": + $ref: "#/components/responses/PlatformRequestTooLarge" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: admin.usage + x-speakeasy-name-override: resetLimit + security: + - APIToken: [] + /api/admin/usage/limits/batch: + post: + tags: + - Usage + summary: Apply usage limit policies + description: | + Apply one or more usage limit policy changes atomically. This action sets policy by natural key; it does not create addressable resources or return resource locations. Every change succeeds or none are applied. Requires admin.usage.limits:write and permission to edit workspace billing. + operationId: platform-usage-limits-batch + x-visibility: Public + x-glean-experimental: + id: ca19b3e8-9a6d-4a31-8f2f-6c7d8e9f0014 + introduced: "2026-09-16" + requestBody: + required: true + content: + application/json: + schema: + type: array + description: Usage limit policies to apply atomically. + minItems: 1 + maxItems: 100 + items: + $ref: "#/components/schemas/PlatformUsageLimit" + example: + - target: + type: ORGANIZATION + usage_selector: + client_id: glean + period: + type: RECURRING_CALENDAR_MONTH + allocation_mode: SHARED_POOL + value: + mode: FINITE + amount: "1000.00" + unit: USD + enforcement: HARD + responses: + "200": + description: The applied usage limit policies. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformBatchUsageLimitsResponse" + "400": + $ref: "#/components/responses/PlatformBadRequest" + "401": + $ref: "#/components/responses/PlatformUnauthorized" + "403": + $ref: "#/components/responses/PlatformForbidden" + "404": + $ref: "#/components/responses/PlatformNotFound" + "408": + $ref: "#/components/responses/PlatformRequestTimeout" + "413": + $ref: "#/components/responses/PlatformRequestTooLarge" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: admin.usage + x-speakeasy-name-override: applyLimits + security: + - APIToken: [] + /api/admin/usage/limits/evaluate: + post: + tags: + - Usage + summary: Evaluate administrative usage limit headroom + description: | + Evaluate the effective usage limits for a selector and return the current decision (AVAILABLE, WARNING, or BLOCKED) based on accrued usage. Requires admin.usage:evaluate and permission to read workspace billing, not a global administrator role. An explicit usage_selector.client_id selects the Glean or external spend client; it is never inferred from the caller. Returns all applicable limit values and counters, with effective headroom separated by unit. Agent counters retain aggregate scope. Billing readers receive exact IdP-group source identities. Evaluation reports configured-budget status even when runtime enforcement switches are off; it does not perform request admission, model eligibility, or agent-run preflight checks. + operationId: platform-admin-usage-limits-evaluate + x-visibility: Public + x-glean-experimental: + id: 70bc17be-ccdb-4e9e-b1e7-1a75256c6ee1 + introduced: "2026-09-18" + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformEvaluateUsageLimitRequest" + example: + target: + type: USER + user_id: user_123 + usage_selector: + client_id: glean + period: + type: RECURRING_CALENDAR_MONTH + responses: + "200": + description: Evaluation result. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformEvaluateUsageLimitResponse" + "400": + $ref: "#/components/responses/PlatformBadRequest" + "401": + $ref: "#/components/responses/PlatformUnauthorized" + "403": + $ref: "#/components/responses/PlatformForbidden" + "404": + $ref: "#/components/responses/PlatformNotFound" + "408": + $ref: "#/components/responses/PlatformRequestTimeout" + "413": + $ref: "#/components/responses/PlatformRequestTooLarge" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: admin.usage + x-speakeasy-name-override: evaluateUsage + security: + - APIToken: [] + /api/usage/limits/evaluate: + post: + tags: + - Usage + summary: Evaluate usage limit headroom + description: | + Evaluate the effective usage limits for a selector and return the current decision (AVAILABLE, WARNING, or BLOCKED) based on accrued usage. Requires usage:evaluate, without workspace billing permission. Omit target to evaluate the authenticated canonical user. An explicit USER must identify that user or a known alias. An explicit AGENT requires current owner/editor or applicable global agent-edit permission; disabled agents remain eligible. Subagents, other users, ORGANIZATION, and default targets are forbidden on this route, even for billing administrators. Missing, inaccessible, and subagent targets return the same 403 insufficient_permissions. An explicit usage_selector.client_id selects the Glean or external spend client; it is never inferred from the caller. Agent evaluation reports aggregate agent usage and the selected client's organization limit, not the caller's personal slice or a complete run preflight. All applicable limit values, used counters, decisions, and headroom are returned; USD and credits have separate effective_limits. IdP-group source identities require billing-read permission. Other callers receive an IDP_GROUP source with is_identity_restricted true and no group_id, without suppressing the policy's value, counter, or decision. Evaluation reports configured-budget status even when runtime enforcement switches are off; it does not perform request admission, model eligibility, or agent-run preflight checks. + operationId: platform-usage-limits-evaluate + x-visibility: Public + x-glean-experimental: + id: ca19b3e8-9a6d-4a31-8f2f-6c7d8e9f0015 + introduced: "2026-09-16" + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformEvaluateCallerUsageLimitRequest" + example: + usage_selector: + client_id: glean + period: + type: RECURRING_CALENDAR_MONTH + responses: + "200": + description: Evaluation result. + content: + application/json: + schema: + $ref: "#/components/schemas/PlatformEvaluateUsageLimitResponse" + "400": + $ref: "#/components/responses/PlatformBadRequest" + "401": + $ref: "#/components/responses/PlatformUnauthorized" + "403": + $ref: "#/components/responses/PlatformForbidden" + "404": + $ref: "#/components/responses/PlatformNotFound" + "408": + $ref: "#/components/responses/PlatformRequestTimeout" + "413": + $ref: "#/components/responses/PlatformRequestTooLarge" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: usage + x-speakeasy-name-override: evaluateUsage + security: + - APIToken: [] /api/triggers: post: tags: @@ -1956,22 +2250,83 @@ paths: $ref: "#/components/responses/PlatformUnauthorized" "403": $ref: "#/components/responses/PlatformForbidden" - "404": - $ref: "#/components/responses/PlatformNotFound" + "404": + $ref: "#/components/responses/PlatformNotFound" + "408": + $ref: "#/components/responses/PlatformRequestTimeout" + "413": + $ref: "#/components/responses/PlatformRequestTooLarge" + "422": + $ref: "#/components/responses/PlatformUnprocessableEntity" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: chat + x-speakeasy-name-override: createStream + security: + - APIToken: [] + /api/skills/sources/preview#stream: + post: + tags: + - Skills + summary: Preview a GitHub skill source as events + description: | + SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Inspect a GitHub URL as server-sent events. HTTP clients request this mode by setting `stream` to true in the JSON body. + operationId: platform-skills-preview-source-stream + x-visibility: Public + x-glean-experimental: + id: 1629009b-244a-400a-bf55-c441dfbc586c + introduced: "2026-07-23" + x-codegen-request-body-name: request + requestBody: + required: true + content: + application/json: + schema: + allOf: + - $ref: "#/components/schemas/PlatformSkillSourcePreviewRequest" + - type: object + required: + - stream + properties: + stream: + type: boolean + const: true + default: true + responses: + "200": + description: Successful response. + content: + text/event-stream: + schema: + $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamEventServerSentEvent" + "400": + $ref: "#/components/responses/PlatformBadRequest" + "401": + $ref: "#/components/responses/PlatformUnauthorized" + "403": + $ref: "#/components/responses/PlatformForbidden" "408": $ref: "#/components/responses/PlatformRequestTimeout" "413": $ref: "#/components/responses/PlatformRequestTooLarge" "422": - $ref: "#/components/responses/PlatformUnprocessableEntity" + description: Returned when GitHub authorization is missing for the source URL. `authentication_suggestions` names the GitHub action pack to authorize; POST its `server_id` to the Client API's `/tool-servers/{serverId}/auth` with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to, then retry the preview once OAuth completes. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformUnauthorizedAgentToolsProblem" "429": $ref: "#/components/responses/PlatformTooManyRequests" "500": $ref: "#/components/responses/PlatformInternalServerError" "503": $ref: "#/components/responses/PlatformServiceUnavailable" - x-speakeasy-group: chat - x-speakeasy-name-override: createStream + x-speakeasy-group: skills + x-speakeasy-name-override: previewSourceStream security: - APIToken: [] /rest/api/v1/activity: @@ -8189,11 +8544,13 @@ components: - DRAFT - ENABLED - DISABLED - description: Current skill status. + description: | + The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy. PlatformSkillOrigin: type: string enum: - CUSTOM + - GITHUB description: Source category for the skill. PlatformSkillSyncStatus: type: string @@ -8239,7 +8596,7 @@ components: PlatformSkill: type: object required: - - id + - skill_id - display_name - description - latest_version @@ -8250,7 +8607,7 @@ components: - created_at - updated_at properties: - id: + skill_id: type: string description: Glean skill ID. display_name: @@ -8284,12 +8641,12 @@ components: PlatformSkillsListResponse: type: object required: - - skills + - results - has_more - next_cursor - request_id properties: - skills: + results: type: array description: Skills available to the user. items: @@ -8354,7 +8711,8 @@ components: skills: type: array minItems: 1 - description: Independently persisted skills in request order. + description: | + Imported skills in request order. The import is atomic: either every source persists or none does. items: $ref: "#/components/schemas/PlatformSkill" request_id: @@ -8528,6 +8886,134 @@ components: request_id: type: string description: Platform-generated request ID for support correlation. + PlatformSkillSourcePreviewStreamScan: + type: object + additionalProperties: false + description: Repository scan started; names every skill path found. + required: + - type + - total + - skill_paths + properties: + type: + type: string + enum: + - SCAN + description: Event type, also sent as the SSE `event` name. + total: + type: integer + minimum: 0 + description: Number of skill paths found in the scan. + skill_paths: + type: array + description: Skill paths found in the scan. + items: + type: string + description: One skill path found in the scan. + PlatformSkillSourcePreviewStreamProgress: + type: object + additionalProperties: false + description: One skill finished inspecting; names the skill in progress. + required: + - type + - completed + - total + - current_skill + properties: + type: + type: string + enum: + - PROGRESS + description: Event type, also sent as the SSE `event` name. + completed: + type: integer + minimum: 0 + description: Number of skills inspected so far. + total: + type: integer + minimum: 0 + description: Number of skills to inspect. + current_skill: + type: string + description: Path of the skill being inspected. + PlatformSkillSourcePreviewStreamSkill: + type: object + additionalProperties: false + description: One skill previewed; carries the previewed skill. + required: + - type + - skill + properties: + type: + type: string + enum: + - SKILL + description: Event type, also sent as the SSE `event` name. + skill: + $ref: "#/components/schemas/PlatformSkillSourcePreview" + description: The previewed skill. + PlatformSkillSourcePreviewStreamResult: + type: object + additionalProperties: false + description: Terminal success event carrying the fully assembled preview. + required: + - type + - response + properties: + type: + type: string + enum: + - RESULT + description: Event type, also sent as the SSE `event` name. + response: + $ref: "#/components/schemas/PlatformSkillSourcePreviewResponse" + description: The fully assembled preview response. + PlatformSkillSourcePreviewStreamError: + type: object + additionalProperties: false + description: Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present. + required: + - type + - error + properties: + type: + type: string + enum: + - ERROR + description: Event type, also sent as the SSE `event` name. + error: + $ref: "#/components/schemas/PlatformProblemDetail" + description: The failure as a problem detail. + authentication_suggestions: + type: array + minItems: 1 + description: Present only when `error.code` is `tools_unauthorized`. Names the GitHub action pack to authorize, with the same retry flow as the 422 response. + items: + $ref: "#/components/schemas/PlatformAuthenticationSuggestion" + PlatformSkillSourcePreviewStreamEvent: + description: | + JSON object written to the SSE `data` field of a streaming source preview. This schema is the payload for SDK transform, not the raw HTTP body. Do not run JSON response conformance on stream bodies. Each frame also carries an `event` name matching the payload `type`. The stream ends with the RESULT event on success or the ERROR event on failure. A typical wire frame is: + event: SCAN + data: {"type":"SCAN","total":1,"skill_paths":["https://github.com/acme/skills/tree/main/skills/example"]} + example: + type: SCAN + total: 1 + skill_paths: + - https://github.com/acme/skills/tree/main/skills/example + oneOf: + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamScan" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamProgress" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamSkill" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamResult" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamError" + discriminator: + propertyName: type + mapping: + SCAN: "#/components/schemas/PlatformSkillSourcePreviewStreamScan" + PROGRESS: "#/components/schemas/PlatformSkillSourcePreviewStreamProgress" + SKILL: "#/components/schemas/PlatformSkillSourcePreviewStreamSkill" + RESULT: "#/components/schemas/PlatformSkillSourcePreviewStreamResult" + ERROR: "#/components/schemas/PlatformSkillSourcePreviewStreamError" PlatformSkillGetResponse: type: object required: @@ -8544,7 +9030,8 @@ components: enum: - ENABLED - DISABLED - description: New status for the skill. + description: | + Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. PlatformSkillUpdateRequest: type: object additionalProperties: false @@ -8566,26 +9053,18 @@ components: request_id: type: string description: Platform-generated request ID for support correlation. - PlatformSkillSyncResultStatus: - type: string - enum: - - UP_TO_DATE - description: Synchronization status after a successful refresh. PlatformSkillSyncResponse: type: object required: - - sync_status - commit_sha - - updated + - is_updated - request_id properties: - sync_status: - $ref: "#/components/schemas/PlatformSkillSyncResultStatus" commit_sha: type: string minLength: 1 description: Git commit SHA now associated with the skill. - updated: + is_updated: type: boolean description: Whether this request created a new skill version. request_id: @@ -8629,12 +9108,12 @@ components: PlatformSkillVersionsListResponse: type: object required: - - versions + - results - has_more - next_cursor - request_id properties: - versions: + results: type: array description: Versions available for the skill. items: @@ -8839,103 +9318,777 @@ components: required: - results - has_more - - next_cursor + - next_cursor + - request_id + - warnings + properties: + results: + type: array + items: + $ref: "#/components/schemas/PlatformResult" + description: | + Ordered list of ranked document results. People cards, Q&A blocks, and other UI-only result types are not included. + has_more: + type: boolean + description: Indicates whether additional pages of results are available. + next_cursor: + type: + - string + - "null" + description: Opaque token to pass as `cursor` in the next request. + request_id: + type: string + minLength: 1 + description: Platform-generated request ID for support correlation. + warnings: + type: array + description: | + Non-blocking warnings for this response. Required; use `[]` when there are none. Clients must tolerate unknown warning codes. `results_incomplete` means some results may be unavailable for the requested datasource scope while `results`, `has_more`, and `next_cursor` remain present. Warning messages are generic and do not include query text or internal identifiers. + items: + $ref: "#/components/schemas/PlatformWarning" + PlatformFilterFieldInfo: + type: object + additionalProperties: false + required: + - field + - type + - operators + properties: + field: + type: string + minLength: 1 + description: Field name usable in the `filters` array for `POST /api/search`. + example: status + type: + type: string + minLength: 1 + description: | + Open field-type string. Current values are `STRING` for text and keyword fields and `USER` for people fields (`owner`, `from`, `author`, `assignee`, `reporter`, `mentions`). Clients must tolerate unknown values. + example: STRING + operators: + type: array + minItems: 1 + description: | + Comparison operators supported for this field. Built-in fields expose `EQUALS` and `NOT_EQUALS`. + items: + $ref: "#/components/schemas/PlatformFilterOperator" + values: + type: array + description: | + Suggested filter values observed for the supplied `query`. Omitted in catalog-only responses. Present as an array, including `[]`, when `query` is provided. Values are a bounded, non-exhaustive sample in search-provider order and may include duplicates; blank values are omitted. No additional endpoint-specific truncation is applied. Grouping in the search UI is not preserved; each value applies to the field broadly. An empty array does not mean no valid value exists. Availability varies by data source; federated and MCP integrations may return page-derived values or none at all. Reusing a suggested value in `POST /api/search` does not guarantee matching results or identical filter behavior. For `USER` fields, values may be email addresses or display names. + items: + type: string + minLength: 1 + PlatformDatasourceFilterInfo: + type: object + additionalProperties: false + required: + - datasource + - filters + properties: + datasource: + type: string + minLength: 1 + description: | + Datasource identifier usable in `POST /api/search` `datasources`. + example: jira + filters: + type: array + description: | + Common built-in filter fields for this datasource. May be empty. A built-in omitted here can still be valid in `POST /api/search`; see `Filter.field` for the full built-in name list. + items: + $ref: "#/components/schemas/PlatformFilterFieldInfo" + PlatformSearchFiltersResponse: + type: object + additionalProperties: false + required: + - datasources + - request_id + properties: + datasources: + type: array + description: | + Datasources visible to the authenticated user. Each `datasource` is an identifier you can pass to `POST /api/search` `datasources`. An empty array means no visible datasources. + items: + $ref: "#/components/schemas/PlatformDatasourceFilterInfo" + request_id: + type: string + minLength: 1 + description: Platform-generated request ID for support correlation. + PlatformUsageTargetType: + type: string + description: Kind of governed population or inherited policy source. + enum: + - ORGANIZATION + - DEFAULT_USER + - DEFAULT_AGENT + - USER + - AGENT + - IDP_GROUP + - DEPARTMENT + x-enumDescriptions: + ORGANIZATION: Shared limit across the organization for the selected spend client. + DEFAULT_USER: Default per-user limit for the selected spend client. + DEFAULT_AGENT: Default aggregate limit applied to agents without an agent-specific limit. + USER: Limit for one canonical user ID and the selected spend client. + AGENT: Aggregate limit for one canonical agent ID, independent of spend client. + IDP_GROUP: Response-only source of an inherited per-user IdP-group limit. + DEPARTMENT: Response-only source of an inherited per-user department limit. + x-speakeasy-enum-descriptions: + ORGANIZATION: Shared limit across the organization for the selected spend client. + DEFAULT_USER: Default per-user limit for the selected spend client. + DEFAULT_AGENT: Default aggregate limit applied to agents without an agent-specific limit. + USER: Limit for one canonical user ID and the selected spend client. + AGENT: Aggregate limit for one canonical agent ID, independent of spend client. + IDP_GROUP: Response-only source of an inherited per-user IdP-group limit. + DEPARTMENT: Response-only source of an inherited per-user department limit. + PlatformUsageTarget: + type: object + description: | + Population governed by a usage limit. A target identifies policy, not access. Administrative operations require their dedicated scope and billing permissions. Non-admin evaluation accepts the authenticated USER or an AGENT the caller currently has permission to edit. Billing permission does not widen this route. Organization and user limits are scoped to a spend client; agent limits remain aggregate. Subagents cannot be configured or evaluated independently because nested spend can be attributed to the top-level agent. Reset can still remove existing subagent rules. + additionalProperties: false + required: + - type + properties: + type: + $ref: "#/components/schemas/PlatformUsageTargetType" + description: Kind of governed population. + user_id: + type: string + minLength: 1 + maxLength: 512 + description: Canonical user ID; required only when type is USER. + agent_id: + type: string + minLength: 1 + maxLength: 512 + description: Canonical agent ID; required only when type is AGENT. + allOf: + - oneOf: + - required: + - user_id + properties: + type: + description: Kind of governed population. + enum: + - USER + not: + required: + - agent_id + - required: + - agent_id + properties: + type: + description: Kind of governed population. + enum: + - AGENT + not: + required: + - user_id + - properties: + type: + description: Kind of governed population. + enum: + - ORGANIZATION + - DEFAULT_USER + - DEFAULT_AGENT + not: + anyOf: + - required: + - user_id + - required: + - agent_id + PlatformPeriodType: + type: string + description: Kind of period over which usage is counted. + enum: + - RECURRING_CALENDAR_MONTH + x-enumDescriptions: + RECURRING_CALENDAR_MONTH: Resets at the start of each calendar month. + x-speakeasy-enum-descriptions: + RECURRING_CALENDAR_MONTH: Resets at the start of each calendar month. + PlatformPeriod: + type: object + description: Period over which usage is counted for a limit. + additionalProperties: false + required: + - type + properties: + type: + $ref: "#/components/schemas/PlatformPeriodType" + description: Kind of usage period. + PlatformUsageSelector: + type: object + description: | + Usage counted against a configured limit, or the spend context for evaluation. Configured organization and user limits require a client; aggregate agent limits omit it. Omission never selects Glean or acts as a client wildcard. + additionalProperties: false + required: + - period + properties: + client_id: + type: string + x-glean-experimental: + id: 3a8dfb97-fbe9-4173-ac61-4fd6e6faa847 + introduced: "2026-09-23" + minLength: 1 + maxLength: 256 + pattern: ^[^\x00-\x1f\x7f]+$ + not: + enum: + - __deleted_clients__ + description: | + Opaque spend-client ID, such as glean or an external gateway spend-client ID. This is not inferred from the authenticating OAuth application and is not automatically prefixed or normalized. Synthetic UI aggregation IDs and control characters are not valid spend-client IDs. + period: + $ref: "#/components/schemas/PlatformPeriod" + description: Reset cadence for counted usage. + PlatformAllocationMode: + type: string + description: How a usage limit budget is shared across the target population. + enum: + - SHARED_POOL + - PER_MEMBER + x-enumDescriptions: + SHARED_POOL: A single shared budget for the target population. + PER_MEMBER: A separate budget for each member of the target population. + x-speakeasy-enum-descriptions: + SHARED_POOL: A single shared budget for the target population. + PER_MEMBER: A separate budget for each member of the target population. + PlatformAmountMode: + type: string + description: Kind of value a usage limit carries. + enum: + - FINITE + - UNLIMITED + x-enumDescriptions: + FINITE: A finite cap; amount is required. + UNLIMITED: No cap. + x-speakeasy-enum-descriptions: + FINITE: A finite cap; amount is required. + UNLIMITED: No cap. + PlatformUsageUnit: + type: string + description: Unit used by a usage limit and its counters. + enum: + - USD + - CREDITS + x-enumDescriptions: + USD: United States dollars. + CREDITS: Glean usage credits. + x-speakeasy-enum-descriptions: + USD: United States dollars. + CREDITS: Glean usage credits. + PlatformEnforcement: + type: string + description: Enforcement behavior when a usage limit is reached. + enum: + - HARD + - SOFT + x-enumDescriptions: + HARD: Configured hard cap; when enforced, requests are blocked at the limit. + SOFT: Configured soft cap; when enforced, requests are allowed but flagged at the limit. + x-speakeasy-enum-descriptions: + HARD: Configured hard cap; when enforced, requests are blocked at the limit. + SOFT: Configured soft cap; when enforced, requests are allowed but flagged at the limit. + PlatformUsageLimitValue: + type: object + description: Value and enforcement configuration for a usage limit. + additionalProperties: false + required: + - mode + properties: + mode: + $ref: "#/components/schemas/PlatformAmountMode" + description: Whether the limit has a finite cap or is unlimited. + amount: + type: string + minLength: 1 + maxLength: 24 + pattern: ^(0|[1-9][0-9]*)(\.[0-9]{1,6})?$ + description: | + Plain non-negative decimal amount with at most six fractional digits; required when mode is FINITE and forbidden when mode is UNLIMITED. Limits use single-precision (float32) storage: inputs are rounded to that precision, and responses report the stored value rounded to six fractional digits. For example, 100.10 can be returned as 100.099998. This storage limitation does not reduce the precision of measured usage counters. + unit: + $ref: "#/components/schemas/PlatformUsageUnit" + description: | + Unit for the selected spend domain; must match its billing denomination. Aggregate agent limits use the workspace plan denomination. + enforcement: + $ref: "#/components/schemas/PlatformEnforcement" + description: How the limit is enforced when reached. + allOf: + - oneOf: + - required: + - amount + - unit + - enforcement + properties: + mode: + description: Whether the limit has a finite cap or is unlimited. + enum: + - FINITE + - properties: + mode: + description: Whether the limit has a finite cap or is unlimited. + enum: + - UNLIMITED + not: + anyOf: + - required: + - amount + - required: + - unit + - required: + - enforcement + PlatformUsageLimit: + type: object + description: A configured usage limit and its value. + additionalProperties: false + required: + - target + - usage_selector + - value + properties: + target: + $ref: "#/components/schemas/PlatformUsageTarget" + description: Population governed by this limit. + usage_selector: + $ref: "#/components/schemas/PlatformUsageSelector" + description: Usage counted against this limit. + allocation_mode: + $ref: "#/components/schemas/PlatformAllocationMode" + description: | + Required for ORGANIZATION, DEFAULT_USER, and DEFAULT_AGENT. Must not be provided for USER or AGENT targets. + value: + $ref: "#/components/schemas/PlatformUsageLimitValue" + description: Value, unit, and enforcement mode for the limit. + allOf: + - oneOf: + - required: + - allocation_mode + properties: + target: + description: Population governed by this limit. + properties: + type: + description: Kind of governed population. + enum: + - ORGANIZATION + allocation_mode: + description: How this limit budget is allocated. + enum: + - SHARED_POOL + - required: + - allocation_mode + properties: + target: + description: Population governed by this limit. + properties: + type: + description: Kind of governed population. + enum: + - DEFAULT_USER + - DEFAULT_AGENT + allocation_mode: + description: How this limit budget is allocated. + enum: + - PER_MEMBER + - properties: + target: + description: Population governed by this limit. + properties: + type: + description: Kind of governed population. + enum: + - USER + - AGENT + not: + required: + - allocation_mode + - oneOf: + - properties: + target: + description: Population governed by this client-scoped limit. + properties: + type: + description: Kind of client-scoped population. + enum: + - ORGANIZATION + - DEFAULT_USER + - USER + usage_selector: + description: Spend client and period for this limit. + required: + - client_id + - properties: + target: + description: Population governed by this aggregate agent limit. + properties: + type: + description: Kind of aggregate agent population. + enum: + - DEFAULT_AGENT + - AGENT + usage_selector: + description: Aggregate period without a client partition. + not: + required: + - client_id + PlatformListUsageLimitsResponse: + type: object + description: Response body for listing configured usage limits. + additionalProperties: false + required: + - results + - has_more - request_id - - warnings properties: results: type: array - items: - $ref: "#/components/schemas/PlatformResult" description: | - Ordered list of ranked document results. People cards, Q&A blocks, and other UI-only result types are not included. + Bounded page of configured limits. Denomination and legacy-fallback filtering can produce a short or empty page; continue with next_cursor while has_more is true. + items: + $ref: "#/components/schemas/PlatformUsageLimit" has_more: type: boolean - description: Indicates whether additional pages of results are available. + description: Whether additional results are available after this page. next_cursor: type: - string - "null" - description: Opaque token to pass as `cursor` in the next request. + description: Opaque cursor; null or absent when has_more is false. request_id: type: string - minLength: 1 - description: Platform-generated request ID for support correlation. - warnings: + description: Request identifier for correlating this response. + PlatformUsageLimitKey: + type: object + description: Natural key for one configured usage limit. + additionalProperties: false + required: + - target + - usage_selector + properties: + target: + $ref: "#/components/schemas/PlatformUsageTarget" + description: Population governed by the limit. + usage_selector: + $ref: "#/components/schemas/PlatformUsageSelector" + description: Usage counted against the limit. + allOf: + - oneOf: + - properties: + target: + description: Population governed by this client-scoped limit. + properties: + type: + description: Kind of client-scoped population. + enum: + - ORGANIZATION + - DEFAULT_USER + - USER + usage_selector: + description: Spend client and period for this limit. + required: + - client_id + - properties: + target: + description: Population governed by this aggregate agent limit. + properties: + type: + description: Kind of aggregate agent population. + enum: + - DEFAULT_AGENT + - AGENT + usage_selector: + description: Aggregate period without a client partition. + not: + required: + - client_id + PlatformResetUsageLimitsResponse: + type: object + description: Response body for resetting a usage limit. + additionalProperties: false + required: + - is_configuration_removed + - request_id + properties: + is_configuration_removed: + type: boolean + description: Whether the matching usage limit configuration was removed. + request_id: + type: string + description: Request identifier for correlating this response. + PlatformBatchUsageLimitsResponse: + type: object + additionalProperties: false + description: Response body for successfully applied usage limit policies. + required: + - results + - request_id + properties: + results: type: array - description: | - Non-blocking warnings for this response. Required; use `[]` when there are none. Clients must tolerate unknown warning codes. `results_incomplete` means some results may be unavailable for the requested datasource scope while `results`, `has_more`, and `next_cursor` remain present. Warning messages are generic and do not include query text or internal identifiers. items: - $ref: "#/components/schemas/PlatformWarning" - PlatformFilterFieldInfo: + $ref: "#/components/schemas/PlatformUsageLimit" + description: Applied usage limit policies, in the same order as the request. + request_id: + type: string + description: Request identifier for correlating this response. + PlatformEvaluateUsageLimitRequest: type: object additionalProperties: false + description: | + Administrative evaluation request. The target is always explicit; usage_selector and the evaluation response are shared with non-admin evaluation. + required: + - target + - usage_selector + properties: + target: + $ref: "#/components/schemas/PlatformUsageTarget" + description: Concrete organization, user, or agent to evaluate. + usage_selector: + $ref: "#/components/schemas/PlatformUsageSelector" + description: Usage to evaluate for the target. + allOf: + - properties: + usage_selector: + description: Explicit spend-client context for evaluation. + required: + - client_id + target: + description: Concrete target being evaluated. + properties: + type: + description: Kind of target being evaluated. + enum: + - ORGANIZATION + - USER + - AGENT + PlatformUsageLimitDecision: + type: string + description: Configured-budget status for the target, independent of runtime admission switches. + enum: + - AVAILABLE + - WARNING + - BLOCKED + x-enumDescriptions: + AVAILABLE: Usage is within all applicable configured limits. + WARNING: Usage reached or exceeded a configured soft limit. + BLOCKED: Usage reached or exceeded a configured hard limit; this is not a runtime admission decision. + x-speakeasy-enum-descriptions: + AVAILABLE: Usage is within all applicable configured limits. + WARNING: Usage reached or exceeded a configured soft limit. + BLOCKED: Usage reached or exceeded a configured hard limit; this is not a runtime admission decision. + PlatformUsagePolicySourceTarget: + type: object + description: | + Population that supplied an evaluated policy. IdP groups and departments are response-only sources, not limit-management or direct evaluation targets. + additionalProperties: false required: - - field - type - - operators properties: - field: + type: + $ref: "#/components/schemas/PlatformUsageTargetType" + description: Kind of configured policy source. + user_id: type: string minLength: 1 - description: Field name usable in the `filters` array for `POST /api/search`. - example: status - type: + description: Canonical user ID for a user-specific policy. + agent_id: type: string minLength: 1 - description: | - Open field-type string. Current values are `STRING` for text and keyword fields and `USER` for people fields (`owner`, `from`, `author`, `assignee`, `reporter`, `mentions`). Clients must tolerate unknown values. - example: STRING - operators: - type: array - minItems: 1 - description: | - Comparison operators supported for this field. Built-in fields expose `EQUALS` and `NOT_EQUALS`. - items: - $ref: "#/components/schemas/PlatformFilterOperator" - values: - type: array - description: | - Suggested filter values observed for the supplied `query`. Omitted in catalog-only responses. Present as an array, including `[]`, when `query` is provided. Values are a bounded, non-exhaustive sample in search-provider order and may include duplicates; blank values are omitted. No additional endpoint-specific truncation is applied. Grouping in the search UI is not preserved; each value applies to the field broadly. An empty array does not mean no valid value exists. Availability varies by data source; federated and MCP integrations may return page-derived values or none at all. Reusing a suggested value in `POST /api/search` does not guarantee matching results or identical filter behavior. For `USER` fields, values may be email addresses or display names. - items: - type: string - minLength: 1 - PlatformDatasourceFilterInfo: + description: Canonical agent ID for an agent-specific policy. + group_id: + type: string + minLength: 1 + description: Canonical IdP group ID; returned only to billing readers. + department_name: + type: string + minLength: 1 + description: Department whose per-user policy supplied the limit. + is_identity_restricted: + type: boolean + description: True when an IdP-group source identity is withheld from a non-billing reader. + allOf: + - oneOf: + - properties: + type: + description: Organization or inherited default policy. + enum: + - ORGANIZATION + - DEFAULT_USER + - DEFAULT_AGENT + not: + anyOf: + - required: + - user_id + - required: + - agent_id + - required: + - group_id + - required: + - department_name + - required: + - is_identity_restricted + - required: + - user_id + properties: + type: + description: User-specific policy. + enum: + - USER + not: + anyOf: + - required: + - agent_id + - required: + - group_id + - required: + - department_name + - required: + - is_identity_restricted + - required: + - agent_id + properties: + type: + description: Agent-specific policy. + enum: + - AGENT + not: + anyOf: + - required: + - user_id + - required: + - group_id + - required: + - department_name + - required: + - is_identity_restricted + - required: + - department_name + properties: + type: + description: Inherited department policy. + enum: + - DEPARTMENT + not: + anyOf: + - required: + - user_id + - required: + - agent_id + - required: + - group_id + - required: + - is_identity_restricted + - properties: + type: + description: Inherited IdP-group policy. + enum: + - IDP_GROUP + not: + anyOf: + - required: + - user_id + - required: + - agent_id + - required: + - department_name + oneOf: + - required: + - group_id + properties: + is_identity_restricted: + description: An identified group is not restricted. + const: false + - required: + - is_identity_restricted + properties: + is_identity_restricted: + description: An unidentified group has a restricted identity. + const: true + not: + required: + - group_id + PlatformEvaluatedLimit: type: object additionalProperties: false + description: Evaluation details for one independently applicable usage limit. required: - - datasource - - filters + - target + - usage_selector + - value + - used + - decision properties: - datasource: - type: string - minLength: 1 + target: + $ref: "#/components/schemas/PlatformUsagePolicySourceTarget" description: | - Datasource identifier usable in `POST /api/search` `datasources`. - example: jira - filters: - type: array + Configured source of this limit. Default and group policies retain their source population; used is the concrete evaluated user's or agent's counter. IdP-group identities require billing-read permission, but all callers receive the complete limit value, counter, decision, and headroom. + usage_selector: + $ref: "#/components/schemas/PlatformUsageSelector" description: | - Common built-in filter fields for this datasource. May be empty. A built-in omitted here can still be valid in `POST /api/search`; see `Filter.field` for the full built-in name list. - items: - $ref: "#/components/schemas/PlatformFilterFieldInfo" - PlatformSearchFiltersResponse: + Actual scope of this rule's counter. Client rules identify their client; aggregate agent rules omit client_id even when evaluation selects a client. + value: + $ref: "#/components/schemas/PlatformUsageLimitValue" + description: The configured limit value. + used: + type: string + description: Decimal amount of accrued usage for this limit. + decision: + $ref: "#/components/schemas/PlatformUsageLimitDecision" + description: Decision for this limit. + PlatformEvaluateUsageLimitResponse: type: object additionalProperties: false + description: Result of evaluating usage limits for a selector. required: - - datasources + - decision + - effective_limits + - evaluated_limits + - evaluated_at - request_id properties: - datasources: + decision: + $ref: "#/components/schemas/PlatformUsageLimitDecision" + description: Overall decision across all evaluated limits. + effective_limits: type: array + minItems: 1 + maxItems: 2 + items: + $ref: "#/components/schemas/PlatformUsageLimitValue" description: | - Datasources visible to the authenticated user. Each `datasource` is an identifier you can pass to `POST /api/search` `datasources`. An empty array means no visible datasources. + One finite headroom per applicable unit, ordered USD then CREDITS. Headroom is the tightest remaining amount within that unit; different units are never combined or converted. When no finite limit applies, contains a single UNLIMITED value without amount, unit, or enforcement. + evaluated_limits: + type: array items: - $ref: "#/components/schemas/PlatformDatasourceFilterInfo" + $ref: "#/components/schemas/PlatformEvaluatedLimit" + description: Per-rule evaluation details. + evaluated_at: + type: string + format: date-time + description: ISO 8601 timestamp of when usage counters were read. request_id: type: string - minLength: 1 - description: Platform-generated request ID for support correlation. + description: Request identifier for correlating this response. + PlatformEvaluateCallerUsageLimitRequest: + type: object + additionalProperties: false + description: | + Non-admin evaluation request. Only omission of target selects the authenticated canonical user; null, empty, and incomplete targets are invalid. Explicit USER targets accept the caller's canonical ID or known aliases. AGENT targets require current edit permission and evaluate aggregate agent usage, including organization limits. The authenticated identity is never replaced by the selected target. + required: + - usage_selector + properties: + target: + $ref: "#/components/schemas/PlatformUsageTarget" + description: Optional self or editable agent target. Omit to evaluate self. + usage_selector: + $ref: "#/components/schemas/PlatformUsageSelector" + description: Usage to evaluate for the target; always required. + allOf: + - properties: + usage_selector: + description: Explicit spend-client context; never inferred from the caller. + required: + - client_id PlatformTriggerStatus: type: string description: Current trigger lifecycle state. @@ -9628,6 +10781,87 @@ components: RESPONSE_OUTPUT_TEXT_DONE: "#/components/schemas/PlatformChatStreamOutputTextDoneServerSentEvent" RESPONSE_COMPLETED: "#/components/schemas/PlatformChatStreamResponseCompletedServerSentEvent" RESPONSE_FAILED: "#/components/schemas/PlatformChatStreamResponseFailedServerSentEvent" + PlatformSkillSourcePreviewStreamScanServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: SCAN + data: + $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamScan" + PlatformSkillSourcePreviewStreamProgressServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: PROGRESS + data: + $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamProgress" + PlatformSkillSourcePreviewStreamSkillServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: SKILL + data: + $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamSkill" + PlatformSkillSourcePreviewStreamResultServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: RESULT + data: + $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamResult" + PlatformSkillSourcePreviewStreamErrorServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: ERROR + data: + $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamError" + PlatformSkillSourcePreviewStreamEventServerSentEvent: + description: A typed server-sent event. + oneOf: + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamScanServerSentEvent" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamProgressServerSentEvent" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamSkillServerSentEvent" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamResultServerSentEvent" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamErrorServerSentEvent" + discriminator: + propertyName: event + mapping: + SCAN: "#/components/schemas/PlatformSkillSourcePreviewStreamScanServerSentEvent" + PROGRESS: "#/components/schemas/PlatformSkillSourcePreviewStreamProgressServerSentEvent" + SKILL: "#/components/schemas/PlatformSkillSourcePreviewStreamSkillServerSentEvent" + RESULT: "#/components/schemas/PlatformSkillSourcePreviewStreamResultServerSentEvent" + ERROR: "#/components/schemas/PlatformSkillSourcePreviewStreamErrorServerSentEvent" ActivityEventParams: properties: bodyContent: @@ -10593,6 +11827,9 @@ components: obfuscatedId: type: string description: An opaque identifier that can be used to request metadata for a Person. + identityOnly: + type: boolean + description: True when this is an authenticated identity fallback rather than a people profile. Directory metadata is unavailable. relatedDocuments: type: array items: @@ -14628,9 +15865,8 @@ components: type: string minLength: 1 page_number: - type: - - integer - - "null" + type: integer + nullable: true required: - text additionalProperties: false @@ -14647,21 +15883,18 @@ components: $ref: '#/components/schemas/ChatCitationSource' minItems: 1 start_index: - type: - - integer - - "null" + type: integer minimum: 0 + nullable: true end_index: - type: - - integer - - "null" + type: integer minimum: 0 + nullable: true snippets: - type: - - array - - "null" + type: array items: $ref: '#/components/schemas/ChatCitationSnippet' + nullable: true required: - type - sources @@ -16280,12 +17513,12 @@ components: - ADDITIONAL_DOCUMENT - APP - BROWSER_HISTORY + - CHAT_HISTORY - DATASOURCE - DOCUMENT - ENTITY - GOLINK - HISTORY - - CHAT_HISTORY - NEW_CHAT - OPERATOR - OPERATOR_VALUE @@ -16566,6 +17799,7 @@ components: - SHARE_ARTIFACT - CREATE_AGENT - MANAGER_INVITE + - ONBOARDING_AUTHORIZATION description: Categories of content requested. An allowlist gives flexibility to request content separately or together. requestOptions: $ref: '#/components/schemas/FeedRequestOptions' @@ -17043,6 +18277,7 @@ components: - SHARE_ARTIFACT - CREATE_AGENT - MANAGER_INVITE + - ONBOARDING_AUTHORIZATION description: Type of the justification. justification: type: string @@ -17143,6 +18378,7 @@ components: - SHARE_ARTIFACT - CREATE_AGENT - MANAGER_INVITE + - ONBOARDING_AUTHORIZATION description: Category of the result, one of the requested categories in incoming request. primaryEntry: $ref: '#/components/schemas/FeedEntry' @@ -17355,6 +18591,10 @@ components: PeopleRequest: type: object properties: + fallbackToAuthenticatedIdentity: + type: boolean + description: If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup. + default: false timezoneOffset: type: integer description: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. diff --git a/.speakeasy/tests.arazzo.yaml b/.speakeasy/tests.arazzo.yaml index f8400bc6..095b25e7 100644 --- a/.speakeasy/tests.arazzo.yaml +++ b/.speakeasy/tests.arazzo.yaml @@ -158867,11 +158867,11 @@ workflows: payload: file: 'x-file: example.file' successCriteria: - - condition: $statusCode == 200 + - condition: $statusCode == 201 - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"skill":{"id":"","display_name":"Merl18","description":"rural ugh unexpectedly excepting livid","latest_version":504149,"latest_minor_version":106110,"status":"DISABLED","origin":"CUSTOM","owner":{"name":""},"created_at":"2025-01-04T03:16:16.951Z","updated_at":"2025-09-10T16:05:46.046Z"},"request_id":""} + {"skill":{"skill_id":"","display_name":"Merl18","description":"rural ugh unexpectedly excepting livid","latest_version":504149,"latest_minor_version":106110,"status":"DISABLED","origin":"CUSTOM","owner":{"name":""},"created_at":"2025-09-10T16:05:46.046Z","updated_at":"2025-08-13T23:05:45.737Z"},"request_id":""} type: simple x-speakeasy-test-group: skills x-speakeasy-test-rebuild: true @@ -158884,8 +158884,12 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"skills":[],"has_more":true,"next_cursor":"","request_id":""} + {"results":[],"has_more":true,"next_cursor":"","request_id":""} type: simple + parameters: + - name: page_size + in: query + value: 20 x-speakeasy-test-group: skills x-speakeasy-test-rebuild: true - workflowId: platform-skills-validate @@ -158918,7 +158922,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"skill":{"id":"","display_name":"Chad_Herzog","description":"whenever up aha controvert","latest_version":151495,"latest_minor_version":170771,"status":"DISABLED","origin":"CUSTOM","owner":{"name":""},"created_at":"2024-12-25T16:41:00.099Z","updated_at":"2026-12-07T21:59:59.375Z"},"request_id":""} + {"skill":{"skill_id":"","display_name":"Chad_Herzog","description":"whenever up aha controvert","latest_version":151495,"latest_minor_version":170771,"status":"DISABLED","origin":"CUSTOM","owner":{"name":""},"created_at":"2024-12-25T16:41:00.099Z","updated_at":"2026-12-07T21:59:59.375Z"},"request_id":""} type: simple x-speakeasy-test-group: skills x-speakeasy-test-rebuild: true @@ -158952,7 +158956,7 @@ workflows: payload: file: 'x-file: example.file' successCriteria: - - condition: $statusCode == 200 + - condition: $statusCode == 201 - condition: $response.header.Content-Type == application/json - context: $response.body condition: | @@ -158968,12 +158972,15 @@ workflows: - name: skill_id in: path value: + - name: page_size + in: query + value: 20 successCriteria: - condition: $statusCode == 200 - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"versions":[],"has_more":false,"next_cursor":"","request_id":""} + {"results":[],"has_more":false,"next_cursor":"","request_id":""} type: simple x-speakeasy-test-group: skills x-speakeasy-test-rebuild: true @@ -159087,7 +159094,7 @@ workflows: source_urls: - https://github.com/anthropics/skills/tree/main/skills/skill-creator successCriteria: - - condition: $statusCode == 200 + - condition: $statusCode == 201 - condition: $response.header.Content-Type == application/json - context: $response.body condition: | @@ -159130,7 +159137,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"skill":{"id":"","display_name":"Afton14","description":"taut netsuke duh sonata boastfully elegantly management come","latest_version":425795,"latest_minor_version":741364,"status":"DISABLED","origin":"CUSTOM","owner":{"name":""},"created_at":"2024-12-20T01:31:39.364Z","updated_at":"2025-12-04T02:59:37.124Z"},"request_id":""} + {"skill":{"skill_id":"","display_name":"Afton14","description":"taut netsuke duh sonata boastfully elegantly management come","latest_version":425795,"latest_minor_version":741364,"status":"DISABLED","origin":"CUSTOM","owner":{"name":""},"created_at":"2024-12-20T01:31:39.364Z","updated_at":"2025-12-04T02:59:37.124Z"},"request_id":""} type: simple x-speakeasy-test-group: skills x-speakeasy-test-rebuild: true @@ -159147,7 +159154,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"sync_status":"UP_TO_DATE","commit_sha":"","updated":false,"request_id":""} + {"commit_sha":"","is_updated":false,"request_id":""} type: simple x-speakeasy-test-group: skills x-speakeasy-test-rebuild: true diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 3bd9a676..6a6db413 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,9 +1,9 @@ -speakeasyVersion: 1.798.0 +speakeasyVersion: 1.799.0 sources: Glean API: sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:09823f8003cfb3ebf08b6adfa434cefda4c97f7ee64ae18dc0066fe392647c97 - sourceBlobDigest: sha256:fc4fcf9c37dfd0e8387153211f760a21a602ede64951d4e4c824e8e1b168b7b8 + sourceRevisionDigest: sha256:a0b4188d227679ac78672daabda9fba51749033a00da9d9fca792a55ea6da83f + sourceBlobDigest: sha256:7abdc6386dbb194b035c370c0dc0c94031bdf3cf6004db51e88de522f1e0633c tags: - latest Glean Client API: @@ -16,10 +16,10 @@ targets: glean: source: Glean API sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:09823f8003cfb3ebf08b6adfa434cefda4c97f7ee64ae18dc0066fe392647c97 - sourceBlobDigest: sha256:fc4fcf9c37dfd0e8387153211f760a21a602ede64951d4e4c824e8e1b168b7b8 + sourceRevisionDigest: sha256:a0b4188d227679ac78672daabda9fba51749033a00da9d9fca792a55ea6da83f + sourceBlobDigest: sha256:7abdc6386dbb194b035c370c0dc0c94031bdf3cf6004db51e88de522f1e0633c codeSamplesNamespace: glean-api-specs-python-code-samples - codeSamplesRevisionDigest: sha256:5da391e8e0a7821657f62afcee0636ca4423213b036163bea43637e45c1f3c7c + codeSamplesRevisionDigest: sha256:cdce7efd2330ac7fdb670c272d8c770046ec3450cc0de514c044fe4cac218906 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index b2d1dc57..b016100a 100644 --- a/README.md +++ b/README.md @@ -578,6 +578,7 @@ For more information on obtaining the appropriate token type, please contact you * [list_versions](docs/sdks/skills/README.md#list_versions) - List skill versions * [retrieve_version](docs/sdks/skills/README.md#retrieve_version) - Retrieve skill version * [retrieve_version_content](docs/sdks/skills/README.md#retrieve_version_content) - Download skill version content +* [preview_source_stream](docs/sdks/skills/README.md#preview_source_stream) - Preview a GitHub skill source as events ### [Triggers](docs/sdks/triggers/README.md) diff --git a/RELEASES.md b/RELEASES.md index b416354a..b566874a 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1008,4 +1008,14 @@ Based on: ### Generated - [python v0.17.15] . ### Releases -- [PyPI v0.17.15] https://pypi.org/project/glean-api-client/0.17.15 - . \ No newline at end of file +- [PyPI v0.17.15] https://pypi.org/project/glean-api-client/0.17.15 - . + +## 2026-09-26 03:54:43 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.799.0 (2.941.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.17.16] . +### Releases +- [PyPI v0.17.16] https://pypi.org/project/glean-api-client/0.17.16 - . \ No newline at end of file diff --git a/docs/models/autocompleterequestresulttype.md b/docs/models/autocompleterequestresulttype.md index 1133a59c..d5efb95f 100644 --- a/docs/models/autocompleterequestresulttype.md +++ b/docs/models/autocompleterequestresulttype.md @@ -16,12 +16,12 @@ value = AutocompleteRequestResultType.ADDITIONAL_DOCUMENT | `ADDITIONAL_DOCUMENT` | ADDITIONAL_DOCUMENT | | `APP` | APP | | `BROWSER_HISTORY` | BROWSER_HISTORY | +| `CHAT_HISTORY` | CHAT_HISTORY | | `DATASOURCE` | DATASOURCE | | `DOCUMENT` | DOCUMENT | | `ENTITY` | ENTITY | | `GOLINK` | GOLINK | | `HISTORY` | HISTORY | -| `CHAT_HISTORY` | CHAT_HISTORY | | `NEW_CHAT` | NEW_CHAT | | `OPERATOR` | OPERATOR | | `OPERATOR_VALUE` | OPERATOR_VALUE | diff --git a/docs/models/feedrequestcategory.md b/docs/models/feedrequestcategory.md index 662a836b..51d47d0b 100644 --- a/docs/models/feedrequestcategory.md +++ b/docs/models/feedrequestcategory.md @@ -66,4 +66,5 @@ value = FeedRequestCategory.DOCUMENT_SUGGESTION | `CHAT_TO_ARTIFACT` | CHAT_TO_ARTIFACT | | `SHARE_ARTIFACT` | SHARE_ARTIFACT | | `CREATE_AGENT` | CREATE_AGENT | -| `MANAGER_INVITE` | MANAGER_INVITE | \ No newline at end of file +| `MANAGER_INVITE` | MANAGER_INVITE | +| `ONBOARDING_AUTHORIZATION` | ONBOARDING_AUTHORIZATION | \ No newline at end of file diff --git a/docs/models/feedresultcategory.md b/docs/models/feedresultcategory.md index b1ed34c8..2542d5ef 100644 --- a/docs/models/feedresultcategory.md +++ b/docs/models/feedresultcategory.md @@ -70,4 +70,5 @@ value = FeedResultCategory.DOCUMENT_SUGGESTION | `CHAT_TO_ARTIFACT` | CHAT_TO_ARTIFACT | | `SHARE_ARTIFACT` | SHARE_ARTIFACT | | `CREATE_AGENT` | CREATE_AGENT | -| `MANAGER_INVITE` | MANAGER_INVITE | \ No newline at end of file +| `MANAGER_INVITE` | MANAGER_INVITE | +| `ONBOARDING_AUTHORIZATION` | ONBOARDING_AUTHORIZATION | \ No newline at end of file diff --git a/docs/models/justificationtype.md b/docs/models/justificationtype.md index 7764769f..61b62c73 100644 --- a/docs/models/justificationtype.md +++ b/docs/models/justificationtype.md @@ -84,4 +84,5 @@ value = JustificationType.FREQUENTLY_ACCESSED | `CHAT_TO_ARTIFACT` | CHAT_TO_ARTIFACT | | `SHARE_ARTIFACT` | SHARE_ARTIFACT | | `CREATE_AGENT` | CREATE_AGENT | -| `MANAGER_INVITE` | MANAGER_INVITE | \ No newline at end of file +| `MANAGER_INVITE` | MANAGER_INVITE | +| `ONBOARDING_AUTHORIZATION` | ONBOARDING_AUTHORIZATION | \ No newline at end of file diff --git a/docs/models/peoplerequest.md b/docs/models/peoplerequest.md index cabbe6e5..66af83b5 100644 --- a/docs/models/peoplerequest.md +++ b/docs/models/peoplerequest.md @@ -3,11 +3,12 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `obfuscated_ids` | List[*str*] | :heavy_minus_sign: | The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. | -| `email_ids` | List[*str*] | :heavy_minus_sign: | The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. | -| `include_fields` | List[[models.PeopleRequestIncludeField](../models/peoplerequestincludefield.md)] | :heavy_minus_sign: | List of PersonMetadata fields to return (that aren't returned by default) | -| `include_types` | List[[models.IncludeType](../models/includetype.md)] | :heavy_minus_sign: | The types of people entities to include in the response in addition to those returned by default. | -| `source` | *Optional[str]* | :heavy_minus_sign: | A string denoting the search surface from which the endpoint is called. | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `fallback_to_authenticated_identity` | *Optional[bool]* | :heavy_minus_sign: | If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `obfuscated_ids` | List[*str*] | :heavy_minus_sign: | The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. | +| `email_ids` | List[*str*] | :heavy_minus_sign: | The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. | +| `include_fields` | List[[models.PeopleRequestIncludeField](../models/peoplerequestincludefield.md)] | :heavy_minus_sign: | List of PersonMetadata fields to return (that aren't returned by default) | +| `include_types` | List[[models.IncludeType](../models/includetype.md)] | :heavy_minus_sign: | The types of people entities to include in the response in addition to those returned by default. | +| `source` | *Optional[str]* | :heavy_minus_sign: | A string denoting the search surface from which the endpoint is called. | \ No newline at end of file diff --git a/docs/models/person.md b/docs/models/person.md index 233784bc..e9846658 100644 --- a/docs/models/person.md +++ b/docs/models/person.md @@ -7,5 +7,6 @@ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | *str* | :heavy_check_mark: | The display name. | | | `obfuscated_id` | *str* | :heavy_check_mark: | An opaque identifier that can be used to request metadata for a Person. | | +| `identity_only` | *Optional[bool]* | :heavy_minus_sign: | True when this is an authenticated identity fallback rather than a people profile. Directory metadata is unavailable. | | | `related_documents` | List[[models.RelatedDocuments](../models/relateddocuments.md)] | :heavy_minus_sign: | A list of documents related to this person. | | | `metadata` | [Optional[models.PersonMetadata]](../models/personmetadata.md) | :heavy_minus_sign: | N/A | {
"department": "Movies",
"email": "george@example.com",
"location": "Hollywood, CA",
"phone": "6505551234",
"photoUrl": "https://example.com/george.jpg",
"startDate": "2000-01-23",
"title": "Actor"
} | \ No newline at end of file diff --git a/docs/models/platformproblemdetail.md b/docs/models/platformproblemdetail.md new file mode 100644 index 00000000..95a5121d --- /dev/null +++ b/docs/models/platformproblemdetail.md @@ -0,0 +1,18 @@ +# PlatformProblemDetail + +Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `type` | *str* | :heavy_check_mark: | URI identifying the error type. | https://developers.glean.com/errors/invalid-cursor | +| `title` | *str* | :heavy_check_mark: | Short, human-readable summary of the error. | Invalid Pagination Cursor | +| `status` | *int* | :heavy_check_mark: | HTTP status code mirrored from the response. | 400 | +| `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.
| +| `code` | [models.PlatformProblemDetailCode](../models/platformproblemdetailcode.md) | :heavy_check_mark: | Stable machine-readable error code. | invalid_cursor | +| `documentation_url` | *Optional[str]* | :heavy_minus_sign: | Direct URL to documentation for this error code. | https://developers.glean.com/errors/invalid-cursor | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | req_7f8a9b0c1d2e | +| `errors` | List[[models.PlatformProblemDetailError](../models/platformproblemdetailerror.md)] | :heavy_minus_sign: | Field-level validation problems, one entry per offending field. | | \ No newline at end of file diff --git a/docs/models/platformskill.md b/docs/models/platformskill.md index f803434a..3a68c65b 100644 --- a/docs/models/platformskill.md +++ b/docs/models/platformskill.md @@ -3,16 +3,16 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | Glean skill ID. | -| `display_name` | *str* | :heavy_check_mark: | Human-readable skill name. | -| `description` | *str* | :heavy_check_mark: | Human-readable skill description. | -| `latest_version` | *int* | :heavy_check_mark: | Latest major version number for the skill. | -| `latest_minor_version` | *int* | :heavy_check_mark: | Latest minor version number for the skill. | -| `status` | [models.PlatformSkillStatus](../models/platformskillstatus.md) | :heavy_check_mark: | Current skill status. | -| `origin` | [models.PlatformSkillOrigin](../models/platformskillorigin.md) | :heavy_check_mark: | Source category for the skill. | -| `source_provenance` | [Optional[models.PlatformSkillSourceProvenance]](../models/platformskillsourceprovenance.md) | :heavy_minus_sign: | N/A | -| `owner` | [models.PlatformPersonReference](../models/platformpersonreference.md) | :heavy_check_mark: | A lightweight reference to a person, used where a payload merely points at someone. | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Time the skill was created. | -| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Time the skill was last updated. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | +| `display_name` | *str* | :heavy_check_mark: | Human-readable skill name. | +| `description` | *str* | :heavy_check_mark: | Human-readable skill description. | +| `latest_version` | *int* | :heavy_check_mark: | Latest major version number for the skill. | +| `latest_minor_version` | *int* | :heavy_check_mark: | Latest minor version number for the skill. | +| `status` | [models.PlatformSkillStatus](../models/platformskillstatus.md) | :heavy_check_mark: | The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy.
| +| `origin` | [models.PlatformSkillOrigin](../models/platformskillorigin.md) | :heavy_check_mark: | Source category for the skill. | +| `source_provenance` | [Optional[models.PlatformSkillSourceProvenance]](../models/platformskillsourceprovenance.md) | :heavy_minus_sign: | N/A | +| `owner` | [models.PlatformPersonReference](../models/platformpersonreference.md) | :heavy_check_mark: | A lightweight reference to a person, used where a payload merely points at someone. | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Time the skill was created. | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Time the skill was last updated. | \ No newline at end of file diff --git a/docs/models/platformskillimportresponse.md b/docs/models/platformskillimportresponse.md index 9a383f20..079c091e 100644 --- a/docs/models/platformskillimportresponse.md +++ b/docs/models/platformskillimportresponse.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -| `skills` | List[[models.PlatformSkill](../models/platformskill.md)] | :heavy_check_mark: | Independently persisted skills in request order. | -| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| `skills` | List[[models.PlatformSkill](../models/platformskill.md)] | :heavy_check_mark: | Imported skills in request order. The import is atomic: either every source persists or none does.
| +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformskillorigin.md b/docs/models/platformskillorigin.md index ca7bf36f..c43dbe56 100644 --- a/docs/models/platformskillorigin.md +++ b/docs/models/platformskillorigin.md @@ -8,6 +8,8 @@ Source category for the skill. from glean.api_client.models import PlatformSkillOrigin value = PlatformSkillOrigin.CUSTOM + +# Open enum: unrecognized values are captured as UnrecognizedStr ``` @@ -15,4 +17,5 @@ value = PlatformSkillOrigin.CUSTOM | Name | Value | | -------- | -------- | -| `CUSTOM` | CUSTOM | \ No newline at end of file +| `CUSTOM` | CUSTOM | +| `GITHUB` | GITHUB | \ No newline at end of file diff --git a/docs/models/platformskillslistrequest.md b/docs/models/platformskillslistrequest.md index ebf0ada9..321617bd 100644 --- a/docs/models/platformskillslistrequest.md +++ b/docs/models/platformskillslistrequest.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of skills to return. | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of skills to return. Defaults to 20. Maximum is 100. | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | \ No newline at end of file diff --git a/docs/models/platformskillslistresponse.md b/docs/models/platformskillslistresponse.md index 1adcf3fe..c880bd46 100644 --- a/docs/models/platformskillslistresponse.md +++ b/docs/models/platformskillslistresponse.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `skills` | List[[models.PlatformSkill](../models/platformskill.md)] | :heavy_check_mark: | Skills available to the user. | +| `results` | List[[models.PlatformSkill](../models/platformskill.md)] | :heavy_check_mark: | Skills available to the user. | | `has_more` | *bool* | :heavy_check_mark: | Whether additional results are available. | | `next_cursor` | *Nullable[str]* | :heavy_check_mark: | Cursor for the next page, or null when no more results are available. | | `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformskillslistversionsrequest.md b/docs/models/platformskillslistversionsrequest.md index a3fa36c9..75cd1177 100644 --- a/docs/models/platformskillslistversionsrequest.md +++ b/docs/models/platformskillslistversionsrequest.md @@ -3,8 +3,8 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | {skill_id} | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of versions to return. | | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | {skill_id} | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of versions to return. Defaults to 20. Maximum is 100. | | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamerror.md b/docs/models/platformskillsourcepreviewstreamerror.md new file mode 100644 index 00000000..0de09b26 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamerror.md @@ -0,0 +1,12 @@ +# PlatformSkillSourcePreviewStreamError + +Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformSkillSourcePreviewStreamErrorType](../models/platformskillsourcepreviewstreamerrortype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `error` | [models.PlatformProblemDetail](../models/platformproblemdetail.md) | :heavy_check_mark: | Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation.
| +| `authentication_suggestions` | List[[models.PlatformAuthenticationSuggestion](../models/platformauthenticationsuggestion.md)] | :heavy_minus_sign: | Present only when `error.code` is `tools_unauthorized`. Names the GitHub action pack to authorize, with the same retry flow as the 422 response. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamerrorserversentevent.md b/docs/models/platformskillsourcepreviewstreamerrorserversentevent.md new file mode 100644 index 00000000..0f2bab47 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamerrorserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamErrorServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["ERROR"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformSkillSourcePreviewStreamError](../models/platformskillsourcepreviewstreamerror.md) | :heavy_check_mark: | Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamerrortype.md b/docs/models/platformskillsourcepreviewstreamerrortype.md new file mode 100644 index 00000000..eaea8d89 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamerrortype.md @@ -0,0 +1,18 @@ +# PlatformSkillSourcePreviewStreamErrorType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillSourcePreviewStreamErrorType + +value = PlatformSkillSourcePreviewStreamErrorType.ERROR +``` + + +## Values + +| Name | Value | +| ------- | ------- | +| `ERROR` | ERROR | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreameventserversentevent.md b/docs/models/platformskillsourcepreviewstreameventserversentevent.md new file mode 100644 index 00000000..1a3ff6a8 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreameventserversentevent.md @@ -0,0 +1,37 @@ +# PlatformSkillSourcePreviewStreamEventServerSentEvent + +A typed server-sent event. + + +## Supported Types + +### `models.PlatformSkillSourcePreviewStreamScanServerSentEvent` + +```python +value: models.PlatformSkillSourcePreviewStreamScanServerSentEvent = /* values here */ +``` + +### `models.PlatformSkillSourcePreviewStreamProgressServerSentEvent` + +```python +value: models.PlatformSkillSourcePreviewStreamProgressServerSentEvent = /* values here */ +``` + +### `models.PlatformSkillSourcePreviewStreamSkillServerSentEvent` + +```python +value: models.PlatformSkillSourcePreviewStreamSkillServerSentEvent = /* values here */ +``` + +### `models.PlatformSkillSourcePreviewStreamResultServerSentEvent` + +```python +value: models.PlatformSkillSourcePreviewStreamResultServerSentEvent = /* values here */ +``` + +### `models.PlatformSkillSourcePreviewStreamErrorServerSentEvent` + +```python +value: models.PlatformSkillSourcePreviewStreamErrorServerSentEvent = /* values here */ +``` + diff --git a/docs/models/platformskillsourcepreviewstreamprogress.md b/docs/models/platformskillsourcepreviewstreamprogress.md new file mode 100644 index 00000000..320e3d52 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamprogress.md @@ -0,0 +1,13 @@ +# PlatformSkillSourcePreviewStreamProgress + +One skill finished inspecting; names the skill in progress. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformSkillSourcePreviewStreamProgressType](../models/platformskillsourcepreviewstreamprogresstype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `completed` | *int* | :heavy_check_mark: | Number of skills inspected so far. | +| `total` | *int* | :heavy_check_mark: | Number of skills to inspect. | +| `current_skill` | *str* | :heavy_check_mark: | Path of the skill being inspected. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamprogressserversentevent.md b/docs/models/platformskillsourcepreviewstreamprogressserversentevent.md new file mode 100644 index 00000000..7f606311 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamprogressserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamProgressServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["PROGRESS"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformSkillSourcePreviewStreamProgress](../models/platformskillsourcepreviewstreamprogress.md) | :heavy_check_mark: | One skill finished inspecting; names the skill in progress. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamprogresstype.md b/docs/models/platformskillsourcepreviewstreamprogresstype.md new file mode 100644 index 00000000..7a25cd48 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamprogresstype.md @@ -0,0 +1,18 @@ +# PlatformSkillSourcePreviewStreamProgressType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillSourcePreviewStreamProgressType + +value = PlatformSkillSourcePreviewStreamProgressType.PROGRESS +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `PROGRESS` | PROGRESS | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamresult.md b/docs/models/platformskillsourcepreviewstreamresult.md new file mode 100644 index 00000000..c778b257 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamresult.md @@ -0,0 +1,11 @@ +# PlatformSkillSourcePreviewStreamResult + +Terminal success event carrying the fully assembled preview. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `type` | [models.PlatformSkillSourcePreviewStreamResultType](../models/platformskillsourcepreviewstreamresulttype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `response` | [models.PlatformSkillSourcePreviewResponse](../models/platformskillsourcepreviewresponse.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamresultserversentevent.md b/docs/models/platformskillsourcepreviewstreamresultserversentevent.md new file mode 100644 index 00000000..fae2c0e8 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamresultserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamResultServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["RESULT"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformSkillSourcePreviewStreamResult](../models/platformskillsourcepreviewstreamresult.md) | :heavy_check_mark: | Terminal success event carrying the fully assembled preview. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamresulttype.md b/docs/models/platformskillsourcepreviewstreamresulttype.md new file mode 100644 index 00000000..aae68d66 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamresulttype.md @@ -0,0 +1,18 @@ +# PlatformSkillSourcePreviewStreamResultType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillSourcePreviewStreamResultType + +value = PlatformSkillSourcePreviewStreamResultType.RESULT +``` + + +## Values + +| Name | Value | +| -------- | -------- | +| `RESULT` | RESULT | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamscan.md b/docs/models/platformskillsourcepreviewstreamscan.md new file mode 100644 index 00000000..c9705a55 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamscan.md @@ -0,0 +1,12 @@ +# PlatformSkillSourcePreviewStreamScan + +Repository scan started; names every skill path found. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformSkillSourcePreviewStreamScanType](../models/platformskillsourcepreviewstreamscantype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `total` | *int* | :heavy_check_mark: | Number of skill paths found in the scan. | +| `skill_paths` | List[*str*] | :heavy_check_mark: | Skill paths found in the scan. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamscanserversentevent.md b/docs/models/platformskillsourcepreviewstreamscanserversentevent.md new file mode 100644 index 00000000..6b69806d --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamscanserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamScanServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["SCAN"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformSkillSourcePreviewStreamScan](../models/platformskillsourcepreviewstreamscan.md) | :heavy_check_mark: | Repository scan started; names every skill path found. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamscantype.md b/docs/models/platformskillsourcepreviewstreamscantype.md new file mode 100644 index 00000000..ba71c62a --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamscantype.md @@ -0,0 +1,18 @@ +# PlatformSkillSourcePreviewStreamScanType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillSourcePreviewStreamScanType + +value = PlatformSkillSourcePreviewStreamScanType.SCAN +``` + + +## Values + +| Name | Value | +| ------ | ------ | +| `SCAN` | SCAN | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamskill.md b/docs/models/platformskillsourcepreviewstreamskill.md new file mode 100644 index 00000000..30f6225d --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamskill.md @@ -0,0 +1,11 @@ +# PlatformSkillSourcePreviewStreamSkill + +One skill previewed; carries the previewed skill. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformSkillSourcePreviewStreamSkillType](../models/platformskillsourcepreviewstreamskilltype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `skill` | [models.PlatformSkillSourcePreview](../models/platformskillsourcepreview.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamskillserversentevent.md b/docs/models/platformskillsourcepreviewstreamskillserversentevent.md new file mode 100644 index 00000000..740b8380 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamskillserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamSkillServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["SKILL"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformSkillSourcePreviewStreamSkill](../models/platformskillsourcepreviewstreamskill.md) | :heavy_check_mark: | One skill previewed; carries the previewed skill. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamskilltype.md b/docs/models/platformskillsourcepreviewstreamskilltype.md new file mode 100644 index 00000000..512ad4ad --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamskilltype.md @@ -0,0 +1,18 @@ +# PlatformSkillSourcePreviewStreamSkillType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillSourcePreviewStreamSkillType + +value = PlatformSkillSourcePreviewStreamSkillType.SKILL +``` + + +## Values + +| Name | Value | +| ------- | ------- | +| `SKILL` | SKILL | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewrequest.md b/docs/models/platformskillspreviewsourcerequest.md similarity index 83% rename from docs/models/platformskillsourcepreviewrequest.md rename to docs/models/platformskillspreviewsourcerequest.md index 8d0b03a4..cabcbff8 100644 --- a/docs/models/platformskillsourcepreviewrequest.md +++ b/docs/models/platformskillspreviewsourcerequest.md @@ -1,4 +1,4 @@ -# PlatformSkillSourcePreviewRequest +# PlatformSkillsPreviewSourceRequest ## Fields @@ -6,4 +6,4 @@ | Field | Type | Required | Description | | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | `source_url` | *str* | :heavy_check_mark: | GitHub URL for a skill directory, SKILL.md file, or repository to inspect. | -| `stream` | *Optional[bool]* | :heavy_minus_sign: | Whether to stream repository scan progress using server-sent events. | \ No newline at end of file +| `stream` | *Optional[Literal[False]]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillspreviewsourceresponse.md b/docs/models/platformskillspreviewsourceresponse.md deleted file mode 100644 index 2eabd1c4..00000000 --- a/docs/models/platformskillspreviewsourceresponse.md +++ /dev/null @@ -1,17 +0,0 @@ -# PlatformSkillsPreviewSourceResponse - - -## Supported Types - -### `models.PlatformSkillSourcePreviewResponse` - -```python -value: models.PlatformSkillSourcePreviewResponse = /* values here */ -``` - -### `str` - -```python -value: str = /* values here */ -``` - diff --git a/docs/models/platformskillspreviewsourcestreamrequest.md b/docs/models/platformskillspreviewsourcestreamrequest.md new file mode 100644 index 00000000..6d30247d --- /dev/null +++ b/docs/models/platformskillspreviewsourcestreamrequest.md @@ -0,0 +1,9 @@ +# PlatformSkillsPreviewSourceStreamRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `source_url` | *str* | :heavy_check_mark: | GitHub URL for a skill directory, SKILL.md file, or repository to inspect. | +| `stream` | *Optional[Literal[True]]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillstatus.md b/docs/models/platformskillstatus.md index 566f1092..b863a5eb 100644 --- a/docs/models/platformskillstatus.md +++ b/docs/models/platformskillstatus.md @@ -1,6 +1,7 @@ # PlatformSkillStatus -Current skill status. +The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy. + ## Example Usage diff --git a/docs/models/platformskillsyncresponse.md b/docs/models/platformskillsyncresponse.md index 03dbf807..a3e14115 100644 --- a/docs/models/platformskillsyncresponse.md +++ b/docs/models/platformskillsyncresponse.md @@ -3,9 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `sync_status` | [models.PlatformSkillSyncResultStatus](../models/platformskillsyncresultstatus.md) | :heavy_check_mark: | Synchronization status after a successful refresh. | -| `commit_sha` | *str* | :heavy_check_mark: | Git commit SHA now associated with the skill. | -| `updated` | *bool* | :heavy_check_mark: | Whether this request created a new skill version. | -| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `commit_sha` | *str* | :heavy_check_mark: | Git commit SHA now associated with the skill. | +| `is_updated` | *bool* | :heavy_check_mark: | Whether this request created a new skill version. | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformskillsyncresultstatus.md b/docs/models/platformskillsyncresultstatus.md deleted file mode 100644 index 764a5847..00000000 --- a/docs/models/platformskillsyncresultstatus.md +++ /dev/null @@ -1,18 +0,0 @@ -# PlatformSkillSyncResultStatus - -Synchronization status after a successful refresh. - -## Example Usage - -```python -from glean.api_client.models import PlatformSkillSyncResultStatus - -value = PlatformSkillSyncResultStatus.UP_TO_DATE -``` - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `UP_TO_DATE` | UP_TO_DATE | \ No newline at end of file diff --git a/docs/models/platformskillupdaterequest.md b/docs/models/platformskillupdaterequest.md index 1d94bb0a..3f454aaa 100644 --- a/docs/models/platformskillupdaterequest.md +++ b/docs/models/platformskillupdaterequest.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `status` | [models.PlatformSkillUpdateStatus](../models/platformskillupdatestatus.md) | :heavy_check_mark: | New status for the skill. | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `status` | [models.PlatformSkillUpdateStatus](../models/platformskillupdatestatus.md) | :heavy_check_mark: | Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting.
| \ No newline at end of file diff --git a/docs/models/platformskillupdatestatus.md b/docs/models/platformskillupdatestatus.md index 898c434f..87187173 100644 --- a/docs/models/platformskillupdatestatus.md +++ b/docs/models/platformskillupdatestatus.md @@ -1,6 +1,7 @@ # PlatformSkillUpdateStatus -New status for the skill. +Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. + ## Example Usage diff --git a/docs/models/platformskillversionslistresponse.md b/docs/models/platformskillversionslistresponse.md index edd94537..082388b1 100644 --- a/docs/models/platformskillversionslistresponse.md +++ b/docs/models/platformskillversionslistresponse.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | -| `versions` | List[[models.PlatformSkillVersion](../models/platformskillversion.md)] | :heavy_check_mark: | Versions available for the skill. | +| `results` | List[[models.PlatformSkillVersion](../models/platformskillversion.md)] | :heavy_check_mark: | Versions available for the skill. | | `has_more` | *bool* | :heavy_check_mark: | Whether additional results are available. | | `next_cursor` | *Nullable[str]* | :heavy_check_mark: | Cursor for the next page, or null when no more results are available. | | `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/sdks/entities/README.md b/docs/sdks/entities/README.md index 55516c7d..a5c95e0e 100644 --- a/docs/sdks/entities/README.md +++ b/docs/sdks/entities/README.md @@ -88,7 +88,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.entities.read_people(obfuscated_ids=[ + res = glean.client.entities.read_people(fallback_to_authenticated_identity=False, obfuscated_ids=[ "abc123", "abc456", ]) @@ -100,16 +100,17 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `obfuscated_ids` | List[*str*] | :heavy_minus_sign: | The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. | -| `email_ids` | List[*str*] | :heavy_minus_sign: | The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. | -| `include_fields` | List[[models.PeopleRequestIncludeField](../../models/peoplerequestincludefield.md)] | :heavy_minus_sign: | List of PersonMetadata fields to return (that aren't returned by default) | -| `include_types` | List[[models.IncludeType](../../models/includetype.md)] | :heavy_minus_sign: | The types of people entities to include in the response in addition to those returned by default. | -| `source` | *Optional[str]* | :heavy_minus_sign: | A string denoting the search surface from which the endpoint is called. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `fallback_to_authenticated_identity` | *Optional[bool]* | :heavy_minus_sign: | If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `obfuscated_ids` | List[*str*] | :heavy_minus_sign: | The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. | +| `email_ids` | List[*str*] | :heavy_minus_sign: | The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. | +| `include_fields` | List[[models.PeopleRequestIncludeField](../../models/peoplerequestincludefield.md)] | :heavy_minus_sign: | List of PersonMetadata fields to return (that aren't returned by default) | +| `include_types` | List[[models.IncludeType](../../models/includetype.md)] | :heavy_minus_sign: | The types of people entities to include in the response in addition to those returned by default. | +| `source` | *Optional[str]* | :heavy_minus_sign: | A string denoting the search surface from which the endpoint is called. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response diff --git a/docs/sdks/skills/README.md b/docs/sdks/skills/README.md index 7a11b9bc..6c9d5b42 100644 --- a/docs/sdks/skills/README.md +++ b/docs/sdks/skills/README.md @@ -18,10 +18,11 @@ * [list_versions](#list_versions) - List skill versions * [retrieve_version](#retrieve_version) - Retrieve skill version * [retrieve_version_content](#retrieve_version_content) - Download skill version content +* [preview_source_stream](#preview_source_stream) - Preview a GitHub skill source as events ## create -Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version. +Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version, unless it is source-managed: a same-name create over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. Two concurrent same-name creates can still produce two skills. ### Example Usage @@ -59,15 +60,15 @@ with Glean( ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 413, 429 | application/problem+json | -| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 409, 413, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | ## list -List skills available to the authenticated user. +List every custom skill the authenticated caller can access. Built-in skills are excluded: they have no versions, content download, update, or delete, so their identifiers would fail most skill operations. Chat-authored skills shared with the caller without a listed grant are omitted: they stay retrievable by identifier when it is known, but this list does not discover them. ### Example Usage @@ -82,7 +83,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.skills.list() + res = glean.skills.list(page_size=20) # Handle response print(res) @@ -93,7 +94,7 @@ with Glean( | Parameter | Type | Required | Description | | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of skills to return. | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of skills to return. Defaults to 20. Maximum is 100. | | `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | @@ -148,11 +149,12 @@ with Glean( ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.PlatformProblemDetailError | 400, 401, 403, 408, 409, 413, 429 | application/problem+json | -| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| errors.PlatformUnauthorizedAgentToolsProblemError | 422 | application/problem+json | +| errors.PlatformProblemDetailError | 400, 401, 403, 408, 409, 413, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | ## validate @@ -217,7 +219,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.skills.preview_source(source_url="https://github.com/anthropics/skills", stream=False) + res = glean.skills.preview_source(source_url="https://github.com/anthropics/skills") # Handle response print(res) @@ -229,24 +231,24 @@ with Glean( | Parameter | Type | Required | Description | | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | `source_url` | *str* | :heavy_check_mark: | GitHub URL for a skill directory, SKILL.md file, or repository to inspect. | -| `stream` | *Optional[bool]* | :heavy_minus_sign: | Whether to stream repository scan progress using server-sent events. | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[models.PlatformSkillsPreviewSourceResponse](../../models/platformskillspreviewsourceresponse.md)** +**[models.PlatformSkillSourcePreviewResponse](../../models/platformskillsourcepreviewresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.PlatformProblemDetailError | 400, 401, 403, 408, 413, 429 | application/problem+json | -| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| errors.PlatformUnauthorizedAgentToolsProblemError | 422 | application/problem+json | +| errors.PlatformProblemDetailError | 400, 401, 403, 408, 413, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | ## update -Update mutable metadata for a skill. V1 supports enabling or disabling a skill without changing its content. +Enable or disable the skill for the authenticated caller without changing its content. The owner's update sets the skill's stored status. Any other caller's update applies only to that caller. ### Example Usage @@ -270,11 +272,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | {skill_id} | -| `status` | [models.PlatformSkillUpdateStatus](../../models/platformskillupdatestatus.md) | :heavy_check_mark: | New status for the skill. | | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | {skill_id} | +| `status` | [models.PlatformSkillUpdateStatus](../../models/platformskillupdatestatus.md) | :heavy_check_mark: | Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -449,15 +451,16 @@ with Glean( ### Errors -| Error Type | Status Code | Content Type | -| -------------------------------------- | -------------------------------------- | -------------------------------------- | -| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 409, 413, 429 | application/problem+json | -| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| errors.PlatformUnauthorizedAgentToolsProblemError | 422 | application/problem+json | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 409, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | ## create_version -Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. +Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. A create-version over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. ### Example Usage @@ -519,7 +522,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.skills.list_versions(skill_id="{skill_id}") + res = glean.skills.list_versions(skill_id="{skill_id}", page_size=20) # Handle response print(res) @@ -528,12 +531,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | {skill_id} | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of versions to return. | | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | {skill_id} | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of versions to return. Defaults to 20. Maximum is 100. | | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -633,4 +636,50 @@ with Glean( | --------------------------------- | --------------------------------- | --------------------------------- | | errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | | errors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file +| errors.GleanError | 4XX, 5XX | \*/\* | + +## preview_source_stream + +SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Inspect a GitHub URL as server-sent events. HTTP clients request this mode by setting `stream` to true in the JSON body. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.skills.preview_source_stream(source_url="https://github.com/anthropics/skills") + + with res as event_stream: + for event in event_stream: + # handle event + print(event, flush=True) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `source_url` | *str* | :heavy_check_mark: | GitHub URL for a skill directory, SKILL.md file, or repository to inspect. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[Union[eventstreaming.EventStream[models.PlatformSkillSourcePreviewStreamEventServerSentEvent], eventstreaming.EventStreamAsync[models.PlatformSkillSourcePreviewStreamEventServerSentEvent]]](../../models/.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| errors.PlatformUnauthorizedAgentToolsProblemError | 422 | application/problem+json | +| errors.PlatformProblemDetailError | 400, 401, 403, 408, 413, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index b7cb0276..c6ffa3b5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "glean-api-client" -version = "0.17.15" +version = "0.17.16" 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 4af11e8e..d4400eaa 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.17.15" +__version__: str = "0.17.16" __openapi_doc_version__: str = "0.9.0" -__gen_version__: str = "2.938.0" -__user_agent__: str = "speakeasy-sdk/python 0.17.15 2.938.0 0.9.0 glean-api-client" +__gen_version__: str = "2.941.0" +__user_agent__: str = "speakeasy-sdk/python 0.17.16 2.941.0 0.9.0 glean-api-client" try: if __package__ is not None: diff --git a/src/glean/api_client/entities.py b/src/glean/api_client/entities.py index adc08d27..44a41c98 100644 --- a/src/glean/api_client/entities.py +++ b/src/glean/api_client/entities.py @@ -306,6 +306,7 @@ def read_people( self, *, locale: Optional[str] = None, + fallback_to_authenticated_identity: Optional[bool] = False, timezone_offset: Optional[int] = None, obfuscated_ids: Optional[Iterable[str]] = None, email_ids: Optional[Iterable[str]] = None, @@ -322,6 +323,7 @@ def read_people( Read people details for the given IDs. :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param fallback_to_authenticated_identity: If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param obfuscated_ids: The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. :param email_ids: The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. @@ -346,6 +348,7 @@ def read_people( request = models.PeopleRequestRequest( locale=locale, people_request=models.PeopleRequest( + fallback_to_authenticated_identity=fallback_to_authenticated_identity, timezone_offset=timezone_offset, obfuscated_ids=utils.unmarshal(obfuscated_ids, Optional[List[str]]), email_ids=utils.unmarshal(email_ids, Optional[List[str]]), @@ -422,6 +425,7 @@ async def read_people_async( self, *, locale: Optional[str] = None, + fallback_to_authenticated_identity: Optional[bool] = False, timezone_offset: Optional[int] = None, obfuscated_ids: Optional[Iterable[str]] = None, email_ids: Optional[Iterable[str]] = None, @@ -438,6 +442,7 @@ async def read_people_async( Read people details for the given IDs. :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param fallback_to_authenticated_identity: If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param obfuscated_ids: The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. :param email_ids: The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. @@ -462,6 +467,7 @@ async def read_people_async( request = models.PeopleRequestRequest( locale=locale, people_request=models.PeopleRequest( + fallback_to_authenticated_identity=fallback_to_authenticated_identity, timezone_offset=timezone_offset, obfuscated_ids=utils.unmarshal(obfuscated_ids, Optional[List[str]]), email_ids=utils.unmarshal(email_ids, Optional[List[str]]), diff --git a/src/glean/api_client/models/__init__.py b/src/glean/api_client/models/__init__.py index 6eac20c2..82e4421a 100644 --- a/src/glean/api_client/models/__init__.py +++ b/src/glean/api_client/models/__init__.py @@ -1367,9 +1367,13 @@ PlatformSkillsListRequest, PlatformSkillsListRequestTypedDict, ) + from .platform_skills_preview_source_streamop import ( + PlatformSkillsPreviewSourceStreamRequest, + PlatformSkillsPreviewSourceStreamRequestTypedDict, + ) from .platform_skills_preview_sourceop import ( - PlatformSkillsPreviewSourceResponse, - PlatformSkillsPreviewSourceResponseTypedDict, + PlatformSkillsPreviewSourceRequest, + PlatformSkillsPreviewSourceRequestTypedDict, ) from .platform_skills_syncop import ( PlatformSkillsSyncRequest, @@ -1667,6 +1671,10 @@ PlatformPersonReference, PlatformPersonReferenceTypedDict, ) + from .platformproblemdetail import ( + PlatformProblemDetail, + PlatformProblemDetailTypedDict, + ) from .platformproblemdetailcode import PlatformProblemDetailCode from .platformproblemdetailerror import ( PlatformProblemDetailError, @@ -1728,14 +1736,59 @@ PlatformSkillSourcePreviewFile, PlatformSkillSourcePreviewFileTypedDict, ) - from .platformskillsourcepreviewrequest import ( - PlatformSkillSourcePreviewRequest, - PlatformSkillSourcePreviewRequestTypedDict, - ) from .platformskillsourcepreviewresponse import ( PlatformSkillSourcePreviewResponse, PlatformSkillSourcePreviewResponseTypedDict, ) + from .platformskillsourcepreviewstreamerror import ( + PlatformSkillSourcePreviewStreamError, + PlatformSkillSourcePreviewStreamErrorType, + PlatformSkillSourcePreviewStreamErrorTypedDict, + ) + from .platformskillsourcepreviewstreamerrorserversentevent import ( + PlatformSkillSourcePreviewStreamErrorServerSentEvent, + PlatformSkillSourcePreviewStreamErrorServerSentEventTypedDict, + ) + from .platformskillsourcepreviewstreameventserversentevent import ( + PlatformSkillSourcePreviewStreamEventServerSentEvent, + PlatformSkillSourcePreviewStreamEventServerSentEventTypedDict, + ) + from .platformskillsourcepreviewstreamprogress import ( + PlatformSkillSourcePreviewStreamProgress, + PlatformSkillSourcePreviewStreamProgressType, + PlatformSkillSourcePreviewStreamProgressTypedDict, + ) + from .platformskillsourcepreviewstreamprogressserversentevent import ( + PlatformSkillSourcePreviewStreamProgressServerSentEvent, + PlatformSkillSourcePreviewStreamProgressServerSentEventTypedDict, + ) + from .platformskillsourcepreviewstreamresult import ( + PlatformSkillSourcePreviewStreamResult, + PlatformSkillSourcePreviewStreamResultType, + PlatformSkillSourcePreviewStreamResultTypedDict, + ) + from .platformskillsourcepreviewstreamresultserversentevent import ( + PlatformSkillSourcePreviewStreamResultServerSentEvent, + PlatformSkillSourcePreviewStreamResultServerSentEventTypedDict, + ) + from .platformskillsourcepreviewstreamscan import ( + PlatformSkillSourcePreviewStreamScan, + PlatformSkillSourcePreviewStreamScanType, + PlatformSkillSourcePreviewStreamScanTypedDict, + ) + from .platformskillsourcepreviewstreamscanserversentevent import ( + PlatformSkillSourcePreviewStreamScanServerSentEvent, + PlatformSkillSourcePreviewStreamScanServerSentEventTypedDict, + ) + from .platformskillsourcepreviewstreamskill import ( + PlatformSkillSourcePreviewStreamSkill, + PlatformSkillSourcePreviewStreamSkillType, + PlatformSkillSourcePreviewStreamSkillTypedDict, + ) + from .platformskillsourcepreviewstreamskillserversentevent import ( + PlatformSkillSourcePreviewStreamSkillServerSentEvent, + PlatformSkillSourcePreviewStreamSkillServerSentEventTypedDict, + ) from .platformskillsourceprovenance import ( PlatformSkillSourceProvenance, PlatformSkillSourceProvenanceTypedDict, @@ -1745,7 +1798,6 @@ PlatformSkillSyncResponse, PlatformSkillSyncResponseTypedDict, ) - from .platformskillsyncresultstatus import PlatformSkillSyncResultStatus from .platformskillsyncstatus import PlatformSkillSyncStatus from .platformskillupdaterequest import ( PlatformSkillUpdateRequest, @@ -3450,9 +3502,11 @@ "PlatformMessageTypedDict", "PlatformPersonReference", "PlatformPersonReferenceTypedDict", + "PlatformProblemDetail", "PlatformProblemDetailCode", "PlatformProblemDetailError", "PlatformProblemDetailErrorTypedDict", + "PlatformProblemDetailTypedDict", "PlatformResult", "PlatformResultTypedDict", "PlatformSearchFiltersRequest", @@ -3485,17 +3539,41 @@ "PlatformSkillSourcePreviewFailureTypedDict", "PlatformSkillSourcePreviewFile", "PlatformSkillSourcePreviewFileTypedDict", - "PlatformSkillSourcePreviewRequest", - "PlatformSkillSourcePreviewRequestTypedDict", "PlatformSkillSourcePreviewResponse", "PlatformSkillSourcePreviewResponseTypedDict", + "PlatformSkillSourcePreviewStreamError", + "PlatformSkillSourcePreviewStreamErrorServerSentEvent", + "PlatformSkillSourcePreviewStreamErrorServerSentEventTypedDict", + "PlatformSkillSourcePreviewStreamErrorType", + "PlatformSkillSourcePreviewStreamErrorTypedDict", + "PlatformSkillSourcePreviewStreamEventServerSentEvent", + "PlatformSkillSourcePreviewStreamEventServerSentEventTypedDict", + "PlatformSkillSourcePreviewStreamProgress", + "PlatformSkillSourcePreviewStreamProgressServerSentEvent", + "PlatformSkillSourcePreviewStreamProgressServerSentEventTypedDict", + "PlatformSkillSourcePreviewStreamProgressType", + "PlatformSkillSourcePreviewStreamProgressTypedDict", + "PlatformSkillSourcePreviewStreamResult", + "PlatformSkillSourcePreviewStreamResultServerSentEvent", + "PlatformSkillSourcePreviewStreamResultServerSentEventTypedDict", + "PlatformSkillSourcePreviewStreamResultType", + "PlatformSkillSourcePreviewStreamResultTypedDict", + "PlatformSkillSourcePreviewStreamScan", + "PlatformSkillSourcePreviewStreamScanServerSentEvent", + "PlatformSkillSourcePreviewStreamScanServerSentEventTypedDict", + "PlatformSkillSourcePreviewStreamScanType", + "PlatformSkillSourcePreviewStreamScanTypedDict", + "PlatformSkillSourcePreviewStreamSkill", + "PlatformSkillSourcePreviewStreamSkillServerSentEvent", + "PlatformSkillSourcePreviewStreamSkillServerSentEventTypedDict", + "PlatformSkillSourcePreviewStreamSkillType", + "PlatformSkillSourcePreviewStreamSkillTypedDict", "PlatformSkillSourcePreviewTypedDict", "PlatformSkillSourceProvenance", "PlatformSkillSourceProvenanceTypedDict", "PlatformSkillStatus", "PlatformSkillSyncResponse", "PlatformSkillSyncResponseTypedDict", - "PlatformSkillSyncResultStatus", "PlatformSkillSyncStatus", "PlatformSkillTypedDict", "PlatformSkillUpdateRequest", @@ -3547,8 +3625,10 @@ "PlatformSkillsListResponseTypedDict", "PlatformSkillsListVersionsRequest", "PlatformSkillsListVersionsRequestTypedDict", - "PlatformSkillsPreviewSourceResponse", - "PlatformSkillsPreviewSourceResponseTypedDict", + "PlatformSkillsPreviewSourceRequest", + "PlatformSkillsPreviewSourceRequestTypedDict", + "PlatformSkillsPreviewSourceStreamRequest", + "PlatformSkillsPreviewSourceStreamRequestTypedDict", "PlatformSkillsSyncRequest", "PlatformSkillsSyncRequestTypedDict", "PlatformSkillsUpdateRequest", @@ -4951,8 +5031,10 @@ "PlatformSkillsListVersionsRequestTypedDict": ".platform_skills_list_versionsop", "PlatformSkillsListRequest": ".platform_skills_listop", "PlatformSkillsListRequestTypedDict": ".platform_skills_listop", - "PlatformSkillsPreviewSourceResponse": ".platform_skills_preview_sourceop", - "PlatformSkillsPreviewSourceResponseTypedDict": ".platform_skills_preview_sourceop", + "PlatformSkillsPreviewSourceStreamRequest": ".platform_skills_preview_source_streamop", + "PlatformSkillsPreviewSourceStreamRequestTypedDict": ".platform_skills_preview_source_streamop", + "PlatformSkillsPreviewSourceRequest": ".platform_skills_preview_sourceop", + "PlatformSkillsPreviewSourceRequestTypedDict": ".platform_skills_preview_sourceop", "PlatformSkillsSyncRequest": ".platform_skills_syncop", "PlatformSkillsSyncRequestTypedDict": ".platform_skills_syncop", "PlatformSkillsUpdateRequest": ".platform_skills_updateop", @@ -5125,6 +5207,8 @@ "PlatformMessageTextBlockInputTypedDict": ".platformmessagetextblock_input", "PlatformPersonReference": ".platformpersonreference", "PlatformPersonReferenceTypedDict": ".platformpersonreference", + "PlatformProblemDetail": ".platformproblemdetail", + "PlatformProblemDetailTypedDict": ".platformproblemdetail", "PlatformProblemDetailCode": ".platformproblemdetailcode", "PlatformProblemDetailError": ".platformproblemdetailerror", "PlatformProblemDetailErrorTypedDict": ".platformproblemdetailerror", @@ -5160,16 +5244,40 @@ "PlatformSkillSourcePreviewFailureCode": ".platformskillsourcepreviewfailurecode", "PlatformSkillSourcePreviewFile": ".platformskillsourcepreviewfile", "PlatformSkillSourcePreviewFileTypedDict": ".platformskillsourcepreviewfile", - "PlatformSkillSourcePreviewRequest": ".platformskillsourcepreviewrequest", - "PlatformSkillSourcePreviewRequestTypedDict": ".platformskillsourcepreviewrequest", "PlatformSkillSourcePreviewResponse": ".platformskillsourcepreviewresponse", "PlatformSkillSourcePreviewResponseTypedDict": ".platformskillsourcepreviewresponse", + "PlatformSkillSourcePreviewStreamError": ".platformskillsourcepreviewstreamerror", + "PlatformSkillSourcePreviewStreamErrorType": ".platformskillsourcepreviewstreamerror", + "PlatformSkillSourcePreviewStreamErrorTypedDict": ".platformskillsourcepreviewstreamerror", + "PlatformSkillSourcePreviewStreamErrorServerSentEvent": ".platformskillsourcepreviewstreamerrorserversentevent", + "PlatformSkillSourcePreviewStreamErrorServerSentEventTypedDict": ".platformskillsourcepreviewstreamerrorserversentevent", + "PlatformSkillSourcePreviewStreamEventServerSentEvent": ".platformskillsourcepreviewstreameventserversentevent", + "PlatformSkillSourcePreviewStreamEventServerSentEventTypedDict": ".platformskillsourcepreviewstreameventserversentevent", + "PlatformSkillSourcePreviewStreamProgress": ".platformskillsourcepreviewstreamprogress", + "PlatformSkillSourcePreviewStreamProgressType": ".platformskillsourcepreviewstreamprogress", + "PlatformSkillSourcePreviewStreamProgressTypedDict": ".platformskillsourcepreviewstreamprogress", + "PlatformSkillSourcePreviewStreamProgressServerSentEvent": ".platformskillsourcepreviewstreamprogressserversentevent", + "PlatformSkillSourcePreviewStreamProgressServerSentEventTypedDict": ".platformskillsourcepreviewstreamprogressserversentevent", + "PlatformSkillSourcePreviewStreamResult": ".platformskillsourcepreviewstreamresult", + "PlatformSkillSourcePreviewStreamResultType": ".platformskillsourcepreviewstreamresult", + "PlatformSkillSourcePreviewStreamResultTypedDict": ".platformskillsourcepreviewstreamresult", + "PlatformSkillSourcePreviewStreamResultServerSentEvent": ".platformskillsourcepreviewstreamresultserversentevent", + "PlatformSkillSourcePreviewStreamResultServerSentEventTypedDict": ".platformskillsourcepreviewstreamresultserversentevent", + "PlatformSkillSourcePreviewStreamScan": ".platformskillsourcepreviewstreamscan", + "PlatformSkillSourcePreviewStreamScanType": ".platformskillsourcepreviewstreamscan", + "PlatformSkillSourcePreviewStreamScanTypedDict": ".platformskillsourcepreviewstreamscan", + "PlatformSkillSourcePreviewStreamScanServerSentEvent": ".platformskillsourcepreviewstreamscanserversentevent", + "PlatformSkillSourcePreviewStreamScanServerSentEventTypedDict": ".platformskillsourcepreviewstreamscanserversentevent", + "PlatformSkillSourcePreviewStreamSkill": ".platformskillsourcepreviewstreamskill", + "PlatformSkillSourcePreviewStreamSkillType": ".platformskillsourcepreviewstreamskill", + "PlatformSkillSourcePreviewStreamSkillTypedDict": ".platformskillsourcepreviewstreamskill", + "PlatformSkillSourcePreviewStreamSkillServerSentEvent": ".platformskillsourcepreviewstreamskillserversentevent", + "PlatformSkillSourcePreviewStreamSkillServerSentEventTypedDict": ".platformskillsourcepreviewstreamskillserversentevent", "PlatformSkillSourceProvenance": ".platformskillsourceprovenance", "PlatformSkillSourceProvenanceTypedDict": ".platformskillsourceprovenance", "PlatformSkillStatus": ".platformskillstatus", "PlatformSkillSyncResponse": ".platformskillsyncresponse", "PlatformSkillSyncResponseTypedDict": ".platformskillsyncresponse", - "PlatformSkillSyncResultStatus": ".platformskillsyncresultstatus", "PlatformSkillSyncStatus": ".platformskillsyncstatus", "PlatformSkillUpdateRequest": ".platformskillupdaterequest", "PlatformSkillUpdateRequestTypedDict": ".platformskillupdaterequest", diff --git a/src/glean/api_client/models/autocompleterequest.py b/src/glean/api_client/models/autocompleterequest.py index 77f48a08..adfebaa0 100644 --- a/src/glean/api_client/models/autocompleterequest.py +++ b/src/glean/api_client/models/autocompleterequest.py @@ -15,12 +15,12 @@ class AutocompleteRequestResultType(str, Enum): ADDITIONAL_DOCUMENT = "ADDITIONAL_DOCUMENT" APP = "APP" BROWSER_HISTORY = "BROWSER_HISTORY" + CHAT_HISTORY = "CHAT_HISTORY" DATASOURCE = "DATASOURCE" DOCUMENT = "DOCUMENT" ENTITY = "ENTITY" GOLINK = "GOLINK" HISTORY = "HISTORY" - CHAT_HISTORY = "CHAT_HISTORY" NEW_CHAT = "NEW_CHAT" OPERATOR = "OPERATOR" OPERATOR_VALUE = "OPERATOR_VALUE" diff --git a/src/glean/api_client/models/feedentry.py b/src/glean/api_client/models/feedentry.py index 83e2c6f0..93c02b1f 100644 --- a/src/glean/api_client/models/feedentry.py +++ b/src/glean/api_client/models/feedentry.py @@ -138,6 +138,7 @@ class JustificationType(str, Enum, metaclass=utils.OpenEnumMeta): SHARE_ARTIFACT = "SHARE_ARTIFACT" CREATE_AGENT = "CREATE_AGENT" MANAGER_INVITE = "MANAGER_INVITE" + ONBOARDING_AUTHORIZATION = "ONBOARDING_AUTHORIZATION" class FeedEntryTypedDict(TypedDict): diff --git a/src/glean/api_client/models/feedrequest.py b/src/glean/api_client/models/feedrequest.py index 75cd4b1b..fd1876c6 100644 --- a/src/glean/api_client/models/feedrequest.py +++ b/src/glean/api_client/models/feedrequest.py @@ -66,6 +66,7 @@ class FeedRequestCategory(str, Enum): SHARE_ARTIFACT = "SHARE_ARTIFACT" CREATE_AGENT = "CREATE_AGENT" MANAGER_INVITE = "MANAGER_INVITE" + ONBOARDING_AUTHORIZATION = "ONBOARDING_AUTHORIZATION" class FeedRequestTypedDict(TypedDict): diff --git a/src/glean/api_client/models/feedresult.py b/src/glean/api_client/models/feedresult.py index f450760d..17d45294 100644 --- a/src/glean/api_client/models/feedresult.py +++ b/src/glean/api_client/models/feedresult.py @@ -68,6 +68,7 @@ class FeedResultCategory(str, Enum, metaclass=utils.OpenEnumMeta): SHARE_ARTIFACT = "SHARE_ARTIFACT" CREATE_AGENT = "CREATE_AGENT" MANAGER_INVITE = "MANAGER_INVITE" + ONBOARDING_AUTHORIZATION = "ONBOARDING_AUTHORIZATION" class PlacementReason(str, Enum, metaclass=utils.OpenEnumMeta): diff --git a/src/glean/api_client/models/peoplerequest.py b/src/glean/api_client/models/peoplerequest.py index 520c04d8..1ecee9b1 100644 --- a/src/glean/api_client/models/peoplerequest.py +++ b/src/glean/api_client/models/peoplerequest.py @@ -28,6 +28,8 @@ class IncludeType(str, Enum): class PeopleRequestTypedDict(TypedDict): + fallback_to_authenticated_identity: NotRequired[bool] + r"""If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup.""" timezone_offset: NotRequired[int] r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" obfuscated_ids: NotRequired[List[str]] @@ -43,6 +45,11 @@ class PeopleRequestTypedDict(TypedDict): class PeopleRequest(BaseModel): + fallback_to_authenticated_identity: Annotated[ + Optional[bool], pydantic.Field(alias="fallbackToAuthenticatedIdentity") + ] = False + r"""If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup.""" + timezone_offset: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset") ] = None @@ -73,6 +80,7 @@ class PeopleRequest(BaseModel): def serialize_model(self, handler): optional_fields = set( [ + "fallbackToAuthenticatedIdentity", "timezoneOffset", "obfuscatedIds", "emailIds", diff --git a/src/glean/api_client/models/person.py b/src/glean/api_client/models/person.py index 24355a99..be88dd7e 100644 --- a/src/glean/api_client/models/person.py +++ b/src/glean/api_client/models/person.py @@ -17,6 +17,8 @@ class PersonTypedDict(TypedDict): r"""The display name.""" obfuscated_id: str r"""An opaque identifier that can be used to request metadata for a Person.""" + identity_only: NotRequired[bool] + r"""True when this is an authenticated identity fallback rather than a people profile. Directory metadata is unavailable.""" related_documents: NotRequired[List["RelatedDocumentsTypedDict"]] r"""A list of documents related to this person.""" metadata: NotRequired["PersonMetadataTypedDict"] @@ -29,6 +31,11 @@ class Person(BaseModel): obfuscated_id: Annotated[str, pydantic.Field(alias="obfuscatedId")] r"""An opaque identifier that can be used to request metadata for a Person.""" + identity_only: Annotated[Optional[bool], pydantic.Field(alias="identityOnly")] = ( + None + ) + r"""True when this is an authenticated identity fallback rather than a people profile. Directory metadata is unavailable.""" + related_documents: Annotated[ Optional[List["RelatedDocuments"]], pydantic.Field(alias="relatedDocuments") ] = None @@ -38,7 +45,7 @@ class Person(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["relatedDocuments", "metadata"]) + optional_fields = set(["identityOnly", "relatedDocuments", "metadata"]) serialized = handler(self) m = {} diff --git a/src/glean/api_client/models/platform_skills_list_versionsop.py b/src/glean/api_client/models/platform_skills_list_versionsop.py index 145d396d..b34fd73f 100644 --- a/src/glean/api_client/models/platform_skills_list_versionsop.py +++ b/src/glean/api_client/models/platform_skills_list_versionsop.py @@ -12,7 +12,7 @@ class PlatformSkillsListVersionsRequestTypedDict(TypedDict): skill_id: str r"""Glean skill ID.""" page_size: NotRequired[int] - r"""Maximum number of versions to return.""" + r"""Maximum number of versions to return. Defaults to 20. Maximum is 100.""" cursor: NotRequired[str] r"""Opaque pagination cursor from a previous response.""" @@ -26,8 +26,8 @@ class PlatformSkillsListVersionsRequest(BaseModel): page_size: Annotated[ Optional[int], FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Maximum number of versions to return.""" + ] = 20 + r"""Maximum number of versions to return. Defaults to 20. Maximum is 100.""" cursor: Annotated[ Optional[str], diff --git a/src/glean/api_client/models/platform_skills_listop.py b/src/glean/api_client/models/platform_skills_listop.py index 3f774193..5c21fa77 100644 --- a/src/glean/api_client/models/platform_skills_listop.py +++ b/src/glean/api_client/models/platform_skills_listop.py @@ -10,7 +10,7 @@ class PlatformSkillsListRequestTypedDict(TypedDict): page_size: NotRequired[int] - r"""Maximum number of skills to return.""" + r"""Maximum number of skills to return. Defaults to 20. Maximum is 100.""" cursor: NotRequired[str] r"""Opaque pagination cursor from a previous response.""" @@ -19,8 +19,8 @@ class PlatformSkillsListRequest(BaseModel): page_size: Annotated[ Optional[int], FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Maximum number of skills to return.""" + ] = 20 + r"""Maximum number of skills to return. Defaults to 20. Maximum is 100.""" cursor: Annotated[ Optional[str], diff --git a/src/glean/api_client/models/platformskillsourcepreviewrequest.py b/src/glean/api_client/models/platform_skills_preview_source_streamop.py similarity index 58% rename from src/glean/api_client/models/platformskillsourcepreviewrequest.py rename to src/glean/api_client/models/platform_skills_preview_source_streamop.py index 92057490..2ce11df6 100644 --- a/src/glean/api_client/models/platformskillsourcepreviewrequest.py +++ b/src/glean/api_client/models/platform_skills_preview_source_streamop.py @@ -2,24 +2,28 @@ from __future__ import annotations from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic from pydantic import model_serializer -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, TypedDict -class PlatformSkillSourcePreviewRequestTypedDict(TypedDict): +class PlatformSkillsPreviewSourceStreamRequestTypedDict(TypedDict): source_url: str r"""GitHub URL for a skill directory, SKILL.md file, or repository to inspect.""" - stream: NotRequired[bool] - r"""Whether to stream repository scan progress using server-sent events.""" + stream: Literal[True] -class PlatformSkillSourcePreviewRequest(BaseModel): +class PlatformSkillsPreviewSourceStreamRequest(BaseModel): source_url: str r"""GitHub URL for a skill directory, SKILL.md file, or repository to inspect.""" - stream: Optional[bool] = False - r"""Whether to stream repository scan progress using server-sent events.""" + STREAM: Annotated[ + Annotated[Optional[Literal[True]], AfterValidator(validate_const(True))], + pydantic.Field(alias="stream"), + ] = True @model_serializer(mode="wrap") def serialize_model(self, handler): @@ -36,3 +40,9 @@ def serialize_model(self, handler): m[k] = val return m + + +try: + PlatformSkillsPreviewSourceStreamRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platform_skills_preview_sourceop.py b/src/glean/api_client/models/platform_skills_preview_sourceop.py index 30dcdd72..f5667276 100644 --- a/src/glean/api_client/models/platform_skills_preview_sourceop.py +++ b/src/glean/api_client/models/platform_skills_preview_sourceop.py @@ -1,21 +1,48 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from .platformskillsourcepreviewresponse import ( - PlatformSkillSourcePreviewResponse, - PlatformSkillSourcePreviewResponseTypedDict, -) -from typing import Union -from typing_extensions import TypeAliasType +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, TypedDict -PlatformSkillsPreviewSourceResponseTypedDict = TypeAliasType( - "PlatformSkillsPreviewSourceResponseTypedDict", - Union[PlatformSkillSourcePreviewResponseTypedDict, str], -) +class PlatformSkillsPreviewSourceRequestTypedDict(TypedDict): + source_url: str + r"""GitHub URL for a skill directory, SKILL.md file, or repository to inspect.""" + stream: Literal[False] -PlatformSkillsPreviewSourceResponse = TypeAliasType( - "PlatformSkillsPreviewSourceResponse", - Union[PlatformSkillSourcePreviewResponse, str], -) +class PlatformSkillsPreviewSourceRequest(BaseModel): + source_url: str + r"""GitHub URL for a skill directory, SKILL.md file, or repository to inspect.""" + + STREAM: Annotated[ + Annotated[Optional[Literal[False]], AfterValidator(validate_const(False))], + pydantic.Field(alias="stream"), + ] = False + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["stream"]) + 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: + PlatformSkillsPreviewSourceRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformproblemdetail.py b/src/glean/api_client/models/platformproblemdetail.py new file mode 100644 index 00000000..05d4d46e --- /dev/null +++ b/src/glean/api_client/models/platformproblemdetail.py @@ -0,0 +1,87 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformproblemdetailcode import PlatformProblemDetailCode +from .platformproblemdetailerror import ( + PlatformProblemDetailError, + PlatformProblemDetailErrorTypedDict, +) +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import field_serializer, model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformProblemDetailTypedDict(TypedDict): + r"""Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation.""" + + type: str + r"""URI identifying the error type.""" + title: str + r"""Short, human-readable summary of the error.""" + status: int + r"""HTTP status code mirrored from the response.""" + detail: str + r"""Human-readable explanation specific to this occurrence.""" + code: PlatformProblemDetailCode + r"""Stable machine-readable error code.""" + request_id: str + r"""Platform-generated request ID for support correlation.""" + documentation_url: NotRequired[str] + r"""Direct URL to documentation for this error code.""" + errors: NotRequired[List[PlatformProblemDetailErrorTypedDict]] + r"""Field-level validation problems, one entry per offending field.""" + + +class PlatformProblemDetail(BaseModel): + r"""Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation.""" + + type: str + r"""URI identifying the error type.""" + + title: str + r"""Short, human-readable summary of the error.""" + + status: int + r"""HTTP status code mirrored from the response.""" + + detail: str + r"""Human-readable explanation specific to this occurrence.""" + + code: PlatformProblemDetailCode + r"""Stable machine-readable error code.""" + + request_id: str + r"""Platform-generated request ID for support correlation.""" + + documentation_url: Optional[str] = None + r"""Direct URL to documentation for this error code.""" + + errors: Optional[List[PlatformProblemDetailError]] = None + r"""Field-level validation problems, one entry per offending field.""" + + @field_serializer("code") + def serialize_code(self, value): + if isinstance(value, str): + try: + return models.PlatformProblemDetailCode(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["documentation_url", "errors"]) + 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 diff --git a/src/glean/api_client/models/platformskill.py b/src/glean/api_client/models/platformskill.py index 4b7e21a7..d77b1fa2 100644 --- a/src/glean/api_client/models/platformskill.py +++ b/src/glean/api_client/models/platformskill.py @@ -20,7 +20,7 @@ class PlatformSkillTypedDict(TypedDict): - id: str + skill_id: str r"""Glean skill ID.""" display_name: str r"""Human-readable skill name.""" @@ -31,7 +31,9 @@ class PlatformSkillTypedDict(TypedDict): latest_minor_version: int r"""Latest minor version number for the skill.""" status: PlatformSkillStatus - r"""Current skill status.""" + r"""The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy. + + """ origin: PlatformSkillOrigin r"""Source category for the skill.""" owner: PlatformPersonReferenceTypedDict @@ -44,7 +46,7 @@ class PlatformSkillTypedDict(TypedDict): class PlatformSkill(BaseModel): - id: str + skill_id: str r"""Glean skill ID.""" display_name: str @@ -60,7 +62,9 @@ class PlatformSkill(BaseModel): r"""Latest minor version number for the skill.""" status: PlatformSkillStatus - r"""Current skill status.""" + r"""The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy. + + """ origin: PlatformSkillOrigin r"""Source category for the skill.""" @@ -85,6 +89,15 @@ def serialize_status(self, value): return value return value + @field_serializer("origin") + def serialize_origin(self, value): + if isinstance(value, str): + try: + return models.PlatformSkillOrigin(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["source_provenance"]) diff --git a/src/glean/api_client/models/platformskillimportresponse.py b/src/glean/api_client/models/platformskillimportresponse.py index 4e8827e5..f0789925 100644 --- a/src/glean/api_client/models/platformskillimportresponse.py +++ b/src/glean/api_client/models/platformskillimportresponse.py @@ -9,14 +9,18 @@ class PlatformSkillImportResponseTypedDict(TypedDict): skills: List[PlatformSkillTypedDict] - r"""Independently persisted skills in request order.""" + r"""Imported skills in request order. The import is atomic: either every source persists or none does. + + """ request_id: str r"""Platform-generated request ID for support correlation.""" class PlatformSkillImportResponse(BaseModel): skills: List[PlatformSkill] - r"""Independently persisted skills in request order.""" + r"""Imported skills in request order. The import is atomic: either every source persists or none does. + + """ request_id: str r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformskillorigin.py b/src/glean/api_client/models/platformskillorigin.py index 320c60ec..f05da6ac 100644 --- a/src/glean/api_client/models/platformskillorigin.py +++ b/src/glean/api_client/models/platformskillorigin.py @@ -2,9 +2,11 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class PlatformSkillOrigin(str, Enum): +class PlatformSkillOrigin(str, Enum, metaclass=utils.OpenEnumMeta): r"""Source category for the skill.""" CUSTOM = "CUSTOM" + GITHUB = "GITHUB" diff --git a/src/glean/api_client/models/platformskillslistresponse.py b/src/glean/api_client/models/platformskillslistresponse.py index 7303b051..8d37912a 100644 --- a/src/glean/api_client/models/platformskillslistresponse.py +++ b/src/glean/api_client/models/platformskillslistresponse.py @@ -9,7 +9,7 @@ class PlatformSkillsListResponseTypedDict(TypedDict): - skills: List[PlatformSkillTypedDict] + results: List[PlatformSkillTypedDict] r"""Skills available to the user.""" has_more: bool r"""Whether additional results are available.""" @@ -20,7 +20,7 @@ class PlatformSkillsListResponseTypedDict(TypedDict): class PlatformSkillsListResponse(BaseModel): - skills: List[PlatformSkill] + results: List[PlatformSkill] r"""Skills available to the user.""" has_more: bool diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamerror.py b/src/glean/api_client/models/platformskillsourcepreviewstreamerror.py new file mode 100644 index 00000000..68f225d3 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamerror.py @@ -0,0 +1,65 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformauthenticationsuggestion import ( + PlatformAuthenticationSuggestion, + PlatformAuthenticationSuggestionTypedDict, +) +from .platformproblemdetail import PlatformProblemDetail, PlatformProblemDetailTypedDict +from enum import Enum +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class PlatformSkillSourcePreviewStreamErrorType(str, Enum): + r"""Event type, also sent as the SSE `event` name.""" + + ERROR = "ERROR" + + +class PlatformSkillSourcePreviewStreamErrorTypedDict(TypedDict): + r"""Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present.""" + + type: PlatformSkillSourcePreviewStreamErrorType + r"""Event type, also sent as the SSE `event` name.""" + error: PlatformProblemDetailTypedDict + r"""Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation. + + """ + authentication_suggestions: NotRequired[ + List[PlatformAuthenticationSuggestionTypedDict] + ] + r"""Present only when `error.code` is `tools_unauthorized`. Names the GitHub action pack to authorize, with the same retry flow as the 422 response.""" + + +class PlatformSkillSourcePreviewStreamError(BaseModel): + r"""Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present.""" + + type: PlatformSkillSourcePreviewStreamErrorType + r"""Event type, also sent as the SSE `event` name.""" + + error: PlatformProblemDetail + r"""Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation. + + """ + + authentication_suggestions: Optional[List[PlatformAuthenticationSuggestion]] = None + r"""Present only when `error.code` is `tools_unauthorized`. Names the GitHub action pack to authorize, with the same retry flow as the 422 response.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["authentication_suggestions"]) + 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 diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamerrorserversentevent.py b/src/glean/api_client/models/platformskillsourcepreviewstreamerrorserversentevent.py new file mode 100644 index 00000000..cd9a68bd --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamerrorserversentevent.py @@ -0,0 +1,55 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewstreamerror import ( + PlatformSkillSourcePreviewStreamError, + PlatformSkillSourcePreviewStreamErrorTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillSourcePreviewStreamErrorServerSentEventTypedDict(TypedDict): + data: PlatformSkillSourcePreviewStreamErrorTypedDict + r"""Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present.""" + id: NotRequired[str] + event: Literal["ERROR"] + + +class PlatformSkillSourcePreviewStreamErrorServerSentEvent(BaseModel): + data: PlatformSkillSourcePreviewStreamError + r"""Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present.""" + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[Literal["ERROR"], AfterValidator(validate_const("ERROR"))], + pydantic.Field(alias="event"), + ] = "ERROR" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + 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: + PlatformSkillSourcePreviewStreamErrorServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreameventserversentevent.py b/src/glean/api_client/models/platformskillsourcepreviewstreameventserversentevent.py new file mode 100644 index 00000000..a4974c16 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreameventserversentevent.py @@ -0,0 +1,52 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewstreamerrorserversentevent import ( + PlatformSkillSourcePreviewStreamErrorServerSentEvent, + PlatformSkillSourcePreviewStreamErrorServerSentEventTypedDict, +) +from .platformskillsourcepreviewstreamprogressserversentevent import ( + PlatformSkillSourcePreviewStreamProgressServerSentEvent, + PlatformSkillSourcePreviewStreamProgressServerSentEventTypedDict, +) +from .platformskillsourcepreviewstreamresultserversentevent import ( + PlatformSkillSourcePreviewStreamResultServerSentEvent, + PlatformSkillSourcePreviewStreamResultServerSentEventTypedDict, +) +from .platformskillsourcepreviewstreamscanserversentevent import ( + PlatformSkillSourcePreviewStreamScanServerSentEvent, + PlatformSkillSourcePreviewStreamScanServerSentEventTypedDict, +) +from .platformskillsourcepreviewstreamskillserversentevent import ( + PlatformSkillSourcePreviewStreamSkillServerSentEvent, + PlatformSkillSourcePreviewStreamSkillServerSentEventTypedDict, +) +from pydantic import Field +from typing import Union +from typing_extensions import Annotated, TypeAliasType + + +PlatformSkillSourcePreviewStreamEventServerSentEventTypedDict = TypeAliasType( + "PlatformSkillSourcePreviewStreamEventServerSentEventTypedDict", + Union[ + PlatformSkillSourcePreviewStreamScanServerSentEventTypedDict, + PlatformSkillSourcePreviewStreamProgressServerSentEventTypedDict, + PlatformSkillSourcePreviewStreamSkillServerSentEventTypedDict, + PlatformSkillSourcePreviewStreamResultServerSentEventTypedDict, + PlatformSkillSourcePreviewStreamErrorServerSentEventTypedDict, + ], +) +r"""A typed server-sent event.""" + + +PlatformSkillSourcePreviewStreamEventServerSentEvent = Annotated[ + Union[ + PlatformSkillSourcePreviewStreamScanServerSentEvent, + PlatformSkillSourcePreviewStreamProgressServerSentEvent, + PlatformSkillSourcePreviewStreamSkillServerSentEvent, + PlatformSkillSourcePreviewStreamResultServerSentEvent, + PlatformSkillSourcePreviewStreamErrorServerSentEvent, + ], + Field(discriminator="EVENT"), +] +r"""A typed server-sent event.""" diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamprogress.py b/src/glean/api_client/models/platformskillsourcepreviewstreamprogress.py new file mode 100644 index 00000000..ecca3b70 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamprogress.py @@ -0,0 +1,41 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillSourcePreviewStreamProgressType(str, Enum): + r"""Event type, also sent as the SSE `event` name.""" + + PROGRESS = "PROGRESS" + + +class PlatformSkillSourcePreviewStreamProgressTypedDict(TypedDict): + r"""One skill finished inspecting; names the skill in progress.""" + + type: PlatformSkillSourcePreviewStreamProgressType + r"""Event type, also sent as the SSE `event` name.""" + completed: int + r"""Number of skills inspected so far.""" + total: int + r"""Number of skills to inspect.""" + current_skill: str + r"""Path of the skill being inspected.""" + + +class PlatformSkillSourcePreviewStreamProgress(BaseModel): + r"""One skill finished inspecting; names the skill in progress.""" + + type: PlatformSkillSourcePreviewStreamProgressType + r"""Event type, also sent as the SSE `event` name.""" + + completed: int + r"""Number of skills inspected so far.""" + + total: int + r"""Number of skills to inspect.""" + + current_skill: str + r"""Path of the skill being inspected.""" diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamprogressserversentevent.py b/src/glean/api_client/models/platformskillsourcepreviewstreamprogressserversentevent.py new file mode 100644 index 00000000..60c2dbed --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamprogressserversentevent.py @@ -0,0 +1,55 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewstreamprogress import ( + PlatformSkillSourcePreviewStreamProgress, + PlatformSkillSourcePreviewStreamProgressTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillSourcePreviewStreamProgressServerSentEventTypedDict(TypedDict): + data: PlatformSkillSourcePreviewStreamProgressTypedDict + r"""One skill finished inspecting; names the skill in progress.""" + id: NotRequired[str] + event: Literal["PROGRESS"] + + +class PlatformSkillSourcePreviewStreamProgressServerSentEvent(BaseModel): + data: PlatformSkillSourcePreviewStreamProgress + r"""One skill finished inspecting; names the skill in progress.""" + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[Literal["PROGRESS"], AfterValidator(validate_const("PROGRESS"))], + pydantic.Field(alias="event"), + ] = "PROGRESS" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + 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: + PlatformSkillSourcePreviewStreamProgressServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamresult.py b/src/glean/api_client/models/platformskillsourcepreviewstreamresult.py new file mode 100644 index 00000000..df6d3b6e --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamresult.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewresponse import ( + PlatformSkillSourcePreviewResponse, + PlatformSkillSourcePreviewResponseTypedDict, +) +from enum import Enum +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillSourcePreviewStreamResultType(str, Enum): + r"""Event type, also sent as the SSE `event` name.""" + + RESULT = "RESULT" + + +class PlatformSkillSourcePreviewStreamResultTypedDict(TypedDict): + r"""Terminal success event carrying the fully assembled preview.""" + + type: PlatformSkillSourcePreviewStreamResultType + r"""Event type, also sent as the SSE `event` name.""" + response: PlatformSkillSourcePreviewResponseTypedDict + + +class PlatformSkillSourcePreviewStreamResult(BaseModel): + r"""Terminal success event carrying the fully assembled preview.""" + + type: PlatformSkillSourcePreviewStreamResultType + r"""Event type, also sent as the SSE `event` name.""" + + response: PlatformSkillSourcePreviewResponse diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamresultserversentevent.py b/src/glean/api_client/models/platformskillsourcepreviewstreamresultserversentevent.py new file mode 100644 index 00000000..0741143e --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamresultserversentevent.py @@ -0,0 +1,55 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewstreamresult import ( + PlatformSkillSourcePreviewStreamResult, + PlatformSkillSourcePreviewStreamResultTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillSourcePreviewStreamResultServerSentEventTypedDict(TypedDict): + data: PlatformSkillSourcePreviewStreamResultTypedDict + r"""Terminal success event carrying the fully assembled preview.""" + id: NotRequired[str] + event: Literal["RESULT"] + + +class PlatformSkillSourcePreviewStreamResultServerSentEvent(BaseModel): + data: PlatformSkillSourcePreviewStreamResult + r"""Terminal success event carrying the fully assembled preview.""" + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[Literal["RESULT"], AfterValidator(validate_const("RESULT"))], + pydantic.Field(alias="event"), + ] = "RESULT" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + 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: + PlatformSkillSourcePreviewStreamResultServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamscan.py b/src/glean/api_client/models/platformskillsourcepreviewstreamscan.py new file mode 100644 index 00000000..a8fd4229 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamscan.py @@ -0,0 +1,37 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PlatformSkillSourcePreviewStreamScanType(str, Enum): + r"""Event type, also sent as the SSE `event` name.""" + + SCAN = "SCAN" + + +class PlatformSkillSourcePreviewStreamScanTypedDict(TypedDict): + r"""Repository scan started; names every skill path found.""" + + type: PlatformSkillSourcePreviewStreamScanType + r"""Event type, also sent as the SSE `event` name.""" + total: int + r"""Number of skill paths found in the scan.""" + skill_paths: List[str] + r"""Skill paths found in the scan.""" + + +class PlatformSkillSourcePreviewStreamScan(BaseModel): + r"""Repository scan started; names every skill path found.""" + + type: PlatformSkillSourcePreviewStreamScanType + r"""Event type, also sent as the SSE `event` name.""" + + total: int + r"""Number of skill paths found in the scan.""" + + skill_paths: List[str] + r"""Skill paths found in the scan.""" diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamscanserversentevent.py b/src/glean/api_client/models/platformskillsourcepreviewstreamscanserversentevent.py new file mode 100644 index 00000000..aa588667 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamscanserversentevent.py @@ -0,0 +1,55 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewstreamscan import ( + PlatformSkillSourcePreviewStreamScan, + PlatformSkillSourcePreviewStreamScanTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillSourcePreviewStreamScanServerSentEventTypedDict(TypedDict): + data: PlatformSkillSourcePreviewStreamScanTypedDict + r"""Repository scan started; names every skill path found.""" + id: NotRequired[str] + event: Literal["SCAN"] + + +class PlatformSkillSourcePreviewStreamScanServerSentEvent(BaseModel): + data: PlatformSkillSourcePreviewStreamScan + r"""Repository scan started; names every skill path found.""" + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[Literal["SCAN"], AfterValidator(validate_const("SCAN"))], + pydantic.Field(alias="event"), + ] = "SCAN" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + 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: + PlatformSkillSourcePreviewStreamScanServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamskill.py b/src/glean/api_client/models/platformskillsourcepreviewstreamskill.py new file mode 100644 index 00000000..937205e3 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamskill.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreview import ( + PlatformSkillSourcePreview, + PlatformSkillSourcePreviewTypedDict, +) +from enum import Enum +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillSourcePreviewStreamSkillType(str, Enum): + r"""Event type, also sent as the SSE `event` name.""" + + SKILL = "SKILL" + + +class PlatformSkillSourcePreviewStreamSkillTypedDict(TypedDict): + r"""One skill previewed; carries the previewed skill.""" + + type: PlatformSkillSourcePreviewStreamSkillType + r"""Event type, also sent as the SSE `event` name.""" + skill: PlatformSkillSourcePreviewTypedDict + + +class PlatformSkillSourcePreviewStreamSkill(BaseModel): + r"""One skill previewed; carries the previewed skill.""" + + type: PlatformSkillSourcePreviewStreamSkillType + r"""Event type, also sent as the SSE `event` name.""" + + skill: PlatformSkillSourcePreview diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamskillserversentevent.py b/src/glean/api_client/models/platformskillsourcepreviewstreamskillserversentevent.py new file mode 100644 index 00000000..6197d06d --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamskillserversentevent.py @@ -0,0 +1,55 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewstreamskill import ( + PlatformSkillSourcePreviewStreamSkill, + PlatformSkillSourcePreviewStreamSkillTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillSourcePreviewStreamSkillServerSentEventTypedDict(TypedDict): + data: PlatformSkillSourcePreviewStreamSkillTypedDict + r"""One skill previewed; carries the previewed skill.""" + id: NotRequired[str] + event: Literal["SKILL"] + + +class PlatformSkillSourcePreviewStreamSkillServerSentEvent(BaseModel): + data: PlatformSkillSourcePreviewStreamSkill + r"""One skill previewed; carries the previewed skill.""" + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[Literal["SKILL"], AfterValidator(validate_const("SKILL"))], + pydantic.Field(alias="event"), + ] = "SKILL" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + 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: + PlatformSkillSourcePreviewStreamSkillServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformskillstatus.py b/src/glean/api_client/models/platformskillstatus.py index d57185fb..d7058723 100644 --- a/src/glean/api_client/models/platformskillstatus.py +++ b/src/glean/api_client/models/platformskillstatus.py @@ -6,7 +6,7 @@ class PlatformSkillStatus(str, Enum, metaclass=utils.OpenEnumMeta): - r"""Current skill status.""" + r"""The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy.""" DRAFT = "DRAFT" ENABLED = "ENABLED" diff --git a/src/glean/api_client/models/platformskillsyncresponse.py b/src/glean/api_client/models/platformskillsyncresponse.py index 731c531d..8fe7526e 100644 --- a/src/glean/api_client/models/platformskillsyncresponse.py +++ b/src/glean/api_client/models/platformskillsyncresponse.py @@ -1,30 +1,24 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from .platformskillsyncresultstatus import PlatformSkillSyncResultStatus from glean.api_client.types import BaseModel from typing_extensions import TypedDict class PlatformSkillSyncResponseTypedDict(TypedDict): - sync_status: PlatformSkillSyncResultStatus - r"""Synchronization status after a successful refresh.""" commit_sha: str r"""Git commit SHA now associated with the skill.""" - updated: bool + is_updated: bool r"""Whether this request created a new skill version.""" request_id: str r"""Platform-generated request ID for support correlation.""" class PlatformSkillSyncResponse(BaseModel): - sync_status: PlatformSkillSyncResultStatus - r"""Synchronization status after a successful refresh.""" - commit_sha: str r"""Git commit SHA now associated with the skill.""" - updated: bool + is_updated: bool r"""Whether this request created a new skill version.""" request_id: str diff --git a/src/glean/api_client/models/platformskillsyncresultstatus.py b/src/glean/api_client/models/platformskillsyncresultstatus.py deleted file mode 100644 index b85415a1..00000000 --- a/src/glean/api_client/models/platformskillsyncresultstatus.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum - - -class PlatformSkillSyncResultStatus(str, Enum): - r"""Synchronization status after a successful refresh.""" - - UP_TO_DATE = "UP_TO_DATE" diff --git a/src/glean/api_client/models/platformskillupdaterequest.py b/src/glean/api_client/models/platformskillupdaterequest.py index 0d87a591..77732fcd 100644 --- a/src/glean/api_client/models/platformskillupdaterequest.py +++ b/src/glean/api_client/models/platformskillupdaterequest.py @@ -8,9 +8,13 @@ class PlatformSkillUpdateRequestTypedDict(TypedDict): status: PlatformSkillUpdateStatus - r"""New status for the skill.""" + r"""Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. + + """ class PlatformSkillUpdateRequest(BaseModel): status: PlatformSkillUpdateStatus - r"""New status for the skill.""" + r"""Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. + + """ diff --git a/src/glean/api_client/models/platformskillupdatestatus.py b/src/glean/api_client/models/platformskillupdatestatus.py index ede7b308..50cf71de 100644 --- a/src/glean/api_client/models/platformskillupdatestatus.py +++ b/src/glean/api_client/models/platformskillupdatestatus.py @@ -5,7 +5,7 @@ class PlatformSkillUpdateStatus(str, Enum): - r"""New status for the skill.""" + r"""Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting.""" ENABLED = "ENABLED" DISABLED = "DISABLED" diff --git a/src/glean/api_client/models/platformskillversionslistresponse.py b/src/glean/api_client/models/platformskillversionslistresponse.py index 2ae04090..37b4b1c8 100644 --- a/src/glean/api_client/models/platformskillversionslistresponse.py +++ b/src/glean/api_client/models/platformskillversionslistresponse.py @@ -9,7 +9,7 @@ class PlatformSkillVersionsListResponseTypedDict(TypedDict): - versions: List[PlatformSkillVersionTypedDict] + results: List[PlatformSkillVersionTypedDict] r"""Versions available for the skill.""" has_more: bool r"""Whether additional results are available.""" @@ -20,7 +20,7 @@ class PlatformSkillVersionsListResponseTypedDict(TypedDict): class PlatformSkillVersionsListResponse(BaseModel): - versions: List[PlatformSkillVersion] + results: List[PlatformSkillVersion] r"""Versions available for the skill.""" has_more: bool diff --git a/src/glean/api_client/skills.py b/src/glean/api_client/skills.py index 89e97e10..952c87d5 100644 --- a/src/glean/api_client/skills.py +++ b/src/glean/api_client/skills.py @@ -1,20 +1,14 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .basesdk import BaseSDK -from enum import Enum from glean.api_client import errors, models, utils from glean.api_client._hooks import HookContext from glean.api_client.types import OptionalNullable, UNSET -from glean.api_client.utils import get_security_from_env +from glean.api_client.utils import eventstreaming, get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response from typing import Any, Iterable, List, Mapping, Optional, Union -class PreviewSourceAcceptEnum(str, Enum): - APPLICATION_JSON = "application/json" - TEXT_EVENT_STREAM = "text/event-stream" - - class Skills(BaseSDK): def create( self, @@ -30,7 +24,7 @@ def create( ) -> models.PlatformSkillCreateResponse: r"""Create skill - Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version. + Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version, unless it is source-managed: a same-name create over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. Two concurrent same-name creates can still produce two skills. :param file: SKILL.md, .zip, or .skill bundle to create. @@ -105,11 +99,11 @@ def create( ) response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response(models.PlatformSkillCreateResponse, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "413", "429"], + ["400", "401", "403", "404", "408", "409", "413", "429"], "application/problem+json", ): response_data = unmarshal_json_response( @@ -144,7 +138,7 @@ async def create_async( ) -> models.PlatformSkillCreateResponse: r"""Create skill - Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version. + Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version, unless it is source-managed: a same-name create over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. Two concurrent same-name creates can still produce two skills. :param file: SKILL.md, .zip, or .skill bundle to create. @@ -219,11 +213,11 @@ async def create_async( ) response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response(models.PlatformSkillCreateResponse, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "413", "429"], + ["400", "401", "403", "404", "408", "409", "413", "429"], "application/problem+json", ): response_data = unmarshal_json_response( @@ -247,7 +241,7 @@ async def create_async( def list( self, *, - page_size: Optional[int] = None, + page_size: Optional[int] = 20, cursor: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -256,10 +250,10 @@ def list( ) -> models.PlatformSkillsListResponse: r"""List skills - List skills available to the authenticated user. + List every custom skill the authenticated caller can access. Built-in skills are excluded: they have no versions, content download, update, or delete, so their identifiers would fail most skill operations. Chat-authored skills shared with the caller without a listed grant are omitted: they stay retrievable by identifier when it is known, but this list does not discover them. - :param page_size: Maximum number of skills to return. + :param page_size: Maximum number of skills to return. Defaults to 20. Maximum is 100. :param cursor: Opaque pagination cursor from a previous response. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -358,7 +352,7 @@ def list( async def list_async( self, *, - page_size: Optional[int] = None, + page_size: Optional[int] = 20, cursor: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -367,10 +361,10 @@ async def list_async( ) -> models.PlatformSkillsListResponse: r"""List skills - List skills available to the authenticated user. + List every custom skill the authenticated caller can access. Built-in skills are excluded: they have no versions, content download, update, or delete, so their identifiers would fail most skill operations. Chat-authored skills shared with the caller without a listed grant are omitted: they stay retrievable by identifier when it is known, but this list does not discover them. - :param page_size: Maximum number of skills to return. + :param page_size: Maximum number of skills to return. Defaults to 20. Maximum is 100. :param cursor: Opaque pagination cursor from a previous response. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -553,8 +547,15 @@ def import_( ) response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response(models.PlatformSkillImportResponse, http_res) + if utils.match_response(http_res, "422", "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, http_res + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res + ) if utils.match_response( http_res, ["400", "401", "403", "408", "409", "413", "429"], @@ -665,8 +666,15 @@ async def import__async( ) response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response(models.PlatformSkillImportResponse, http_res) + if utils.match_response(http_res, "422", "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, http_res + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res + ) if utils.match_response( http_res, ["400", "401", "403", "408", "409", "413", "429"], @@ -938,24 +946,20 @@ def preview_source( self, *, source_url: str, - stream: Optional[bool] = False, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - accept_header_override: Optional[PreviewSourceAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.PlatformSkillsPreviewSourceResponse: + ) -> models.PlatformSkillSourcePreviewResponse: r"""Preview a GitHub skill source Inspect a GitHub URL without persisting a source or any discovered skills. Set stream to true to receive repository scan progress as server-sent events; otherwise the response contains the completed preview. :param source_url: GitHub URL for a skill directory, SKILL.md file, or repository to inspect. - :param stream: Whether to stream repository scan progress using server-sent events. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -968,9 +972,8 @@ def preview_source( else: base_url = self._get_url(base_url, url_variables) - request = models.PlatformSkillSourcePreviewRequest( + request = models.PlatformSkillsPreviewSourceRequest( source_url=source_url, - stream=stream, ) req = self._build_request( @@ -983,13 +986,11 @@ def preview_source( request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value=accept_header_override.value - if accept_header_override is not None - else "application/json;q=1, text/event-stream;q=0", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.PlatformSkillSourcePreviewRequest + request, False, False, "json", models.PlatformSkillsPreviewSourceRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1032,8 +1033,13 @@ def preview_source( return unmarshal_json_response( models.PlatformSkillSourcePreviewResponse, http_res ) - if utils.match_response(http_res, "200", "text/event-stream"): - return http_res.text + if utils.match_response(http_res, "422", "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, http_res + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res + ) if utils.match_response( http_res, ["400", "401", "403", "408", "413", "429"], @@ -1061,24 +1067,20 @@ async def preview_source_async( self, *, source_url: str, - stream: Optional[bool] = False, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - accept_header_override: Optional[PreviewSourceAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.PlatformSkillsPreviewSourceResponse: + ) -> models.PlatformSkillSourcePreviewResponse: r"""Preview a GitHub skill source Inspect a GitHub URL without persisting a source or any discovered skills. Set stream to true to receive repository scan progress as server-sent events; otherwise the response contains the completed preview. :param source_url: GitHub URL for a skill directory, SKILL.md file, or repository to inspect. - :param stream: Whether to stream repository scan progress using server-sent events. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -1091,9 +1093,8 @@ async def preview_source_async( else: base_url = self._get_url(base_url, url_variables) - request = models.PlatformSkillSourcePreviewRequest( + request = models.PlatformSkillsPreviewSourceRequest( source_url=source_url, - stream=stream, ) req = self._build_request_async( @@ -1106,13 +1107,11 @@ async def preview_source_async( request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value=accept_header_override.value - if accept_header_override is not None - else "application/json;q=1, text/event-stream;q=0", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.PlatformSkillSourcePreviewRequest + request, False, False, "json", models.PlatformSkillsPreviewSourceRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1155,8 +1154,13 @@ async def preview_source_async( return unmarshal_json_response( models.PlatformSkillSourcePreviewResponse, http_res ) - if utils.match_response(http_res, "200", "text/event-stream"): - return http_res.text + if utils.match_response(http_res, "422", "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, http_res + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res + ) if utils.match_response( http_res, ["400", "401", "403", "408", "413", "429"], @@ -1192,11 +1196,12 @@ def update( ) -> models.PlatformSkillUpdateResponse: r"""Update skill - Update mutable metadata for a skill. V1 supports enabling or disabling a skill without changing its content. + Enable or disable the skill for the authenticated caller without changing its content. The owner's update sets the skill's stored status. Any other caller's update applies only to that caller. :param skill_id: Glean skill ID. - :param status: New status for the skill. + :param status: Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. + :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -1312,11 +1317,12 @@ async def update_async( ) -> models.PlatformSkillUpdateResponse: r"""Update skill - Update mutable metadata for a skill. V1 supports enabling or disabling a skill without changing its content. + Enable or disable the skill for the authenticated caller without changing its content. The owner's update sets the skill's stored status. Any other caller's update applies only to that caller. :param skill_id: Glean skill ID. - :param status: New status for the skill. + :param status: Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. + :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -2173,9 +2179,16 @@ def sync( response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.PlatformSkillSyncResponse, http_res) + if utils.match_response(http_res, "422", "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, http_res + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res + ) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413", "429"], + ["400", "401", "403", "404", "408", "409", "429"], "application/problem+json", ): response_data = unmarshal_json_response( @@ -2281,9 +2294,16 @@ async def sync_async( response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.PlatformSkillSyncResponse, http_res) + if utils.match_response(http_res, "422", "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, http_res + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res + ) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413", "429"], + ["400", "401", "403", "404", "408", "409", "429"], "application/problem+json", ): response_data = unmarshal_json_response( @@ -2319,7 +2339,7 @@ def create_version( ) -> models.PlatformSkillVersionCreateResponse: r"""Create skill version - Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. + Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. A create-version over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. :param skill_id: Glean skill ID. @@ -2404,7 +2424,7 @@ def create_version( ) response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response( models.PlatformSkillVersionCreateResponse, http_res ) @@ -2446,7 +2466,7 @@ async def create_version_async( ) -> models.PlatformSkillVersionCreateResponse: r"""Create skill version - Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. + Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. A create-version over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. :param skill_id: Glean skill ID. @@ -2531,7 +2551,7 @@ async def create_version_async( ) response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response( models.PlatformSkillVersionCreateResponse, http_res ) @@ -2562,7 +2582,7 @@ def list_versions( self, *, skill_id: str, - page_size: Optional[int] = None, + page_size: Optional[int] = 20, cursor: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -2575,7 +2595,7 @@ def list_versions( :param skill_id: Glean skill ID. - :param page_size: Maximum number of versions to return. + :param page_size: Maximum number of versions to return. Defaults to 20. Maximum is 100. :param cursor: Opaque pagination cursor from a previous response. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -2678,7 +2698,7 @@ async def list_versions_async( self, *, skill_id: str, - page_size: Optional[int] = None, + page_size: Optional[int] = 20, cursor: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -2691,7 +2711,7 @@ async def list_versions_async( :param skill_id: Glean skill ID. - :param page_size: Maximum number of versions to return. + :param page_size: Maximum number of versions to return. Defaults to 20. Maximum is 100. :param cursor: Opaque pagination cursor from a previous response. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -3257,3 +3277,291 @@ async def retrieve_version_content_async( http_res_text = await utils.stream_to_text_async(http_res) raise errors.GleanError("Unexpected response received", http_res, http_res_text) + + def preview_source_stream( + self, + *, + source_url: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> eventstreaming.EventStream[ + models.PlatformSkillSourcePreviewStreamEventServerSentEvent + ]: + r"""Preview a GitHub skill source as events + + SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Inspect a GitHub URL as server-sent events. HTTP clients request this mode by setting `stream` to true in the JSON body. + + + :param source_url: GitHub URL for a skill directory, SKILL.md file, or repository to inspect. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.PlatformSkillsPreviewSourceStreamRequest( + source_url=source_url, + ) + + req = self._build_request( + method="POST", + path="/api/skills/sources/preview#stream", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="text/event-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, + False, + False, + "json", + models.PlatformSkillsPreviewSourceStreamRequest, + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="platform-skills-preview-source-stream", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-codegen-request-body-name": "request", + "x-glean-experimental": { + "id": "1629009b-244a-400a-bf55-c441dfbc586c", + "introduced": "2026-07-23", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "text/event-stream"): + return eventstreaming.EventStream( + http_res, + lambda raw: unmarshal_json_response( + models.PlatformSkillSourcePreviewStreamEventServerSentEvent, + http_res, + raw, + ), + client_ref=self, + ) + if utils.match_response(http_res, "422", "application/problem+json"): + http_res_text = utils.stream_to_text(http_res) + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, + http_res, + http_res_text, + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res, http_res_text + ) + if utils.match_response( + http_res, + ["400", "401", "403", "408", "413", "429"], + "application/problem+json", + ): + http_res_text = utils.stream_to_text(http_res) + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res, http_res_text + ) + raise errors.PlatformProblemDetailError( + response_data, http_res, http_res_text + ) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + http_res_text = utils.stream_to_text(http_res) + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res, http_res_text + ) + raise errors.PlatformProblemDetailError( + response_data, http_res, http_res_text + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("Unexpected response received", http_res, http_res_text) + + async def preview_source_stream_async( + self, + *, + source_url: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> eventstreaming.EventStreamAsync[ + models.PlatformSkillSourcePreviewStreamEventServerSentEvent + ]: + r"""Preview a GitHub skill source as events + + SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Inspect a GitHub URL as server-sent events. HTTP clients request this mode by setting `stream` to true in the JSON body. + + + :param source_url: GitHub URL for a skill directory, SKILL.md file, or repository to inspect. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.PlatformSkillsPreviewSourceStreamRequest( + source_url=source_url, + ) + + req = self._build_request_async( + method="POST", + path="/api/skills/sources/preview#stream", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="text/event-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, + False, + False, + "json", + models.PlatformSkillsPreviewSourceStreamRequest, + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="platform-skills-preview-source-stream", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-codegen-request-body-name": "request", + "x-glean-experimental": { + "id": "1629009b-244a-400a-bf55-c441dfbc586c", + "introduced": "2026-07-23", + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "text/event-stream"): + return eventstreaming.EventStreamAsync( + http_res, + lambda raw: unmarshal_json_response( + models.PlatformSkillSourcePreviewStreamEventServerSentEvent, + http_res, + raw, + ), + client_ref=self, + ) + if utils.match_response(http_res, "422", "application/problem+json"): + http_res_text = await utils.stream_to_text_async(http_res) + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, + http_res, + http_res_text, + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res, http_res_text + ) + if utils.match_response( + http_res, + ["400", "401", "403", "408", "413", "429"], + "application/problem+json", + ): + http_res_text = await utils.stream_to_text_async(http_res) + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res, http_res_text + ) + raise errors.PlatformProblemDetailError( + response_data, http_res, http_res_text + ) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + http_res_text = await utils.stream_to_text_async(http_res) + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res, http_res_text + ) + raise errors.PlatformProblemDetailError( + response_data, http_res, http_res_text + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("Unexpected response received", http_res, http_res_text) diff --git a/tests/mockserver/internal/handler/pathgetapiskills.go b/tests/mockserver/internal/handler/pathgetapiskills.go index 7baa51e7..7eb2a3a1 100644 --- a/tests/mockserver/internal/handler/pathgetapiskills.go +++ b/tests/mockserver/internal/handler/pathgetapiskills.go @@ -47,7 +47,7 @@ func testPlatformSkillsListPlatformSkillsList0(w http.ResponseWriter, req *http. return } var respBody *components.PlatformSkillsListResponse = &components.PlatformSkillsListResponse{ - Skills: []components.PlatformSkill{}, + Results: []components.PlatformSkill{}, HasMore: true, NextCursor: types.String(""), RequestID: "", diff --git a/tests/mockserver/internal/handler/pathgetapiskillsskillid.go b/tests/mockserver/internal/handler/pathgetapiskillsskillid.go index 4f097d84..7e0b98d7 100644 --- a/tests/mockserver/internal/handler/pathgetapiskillsskillid.go +++ b/tests/mockserver/internal/handler/pathgetapiskillsskillid.go @@ -48,7 +48,7 @@ func testPlatformSkillsGetPlatformSkillsGet0(w http.ResponseWriter, req *http.Re } var respBody *components.PlatformSkillGetResponse = &components.PlatformSkillGetResponse{ Skill: components.PlatformSkill{ - ID: "", + SkillID: "", DisplayName: "Chad_Herzog", Description: "whenever up aha controvert", LatestVersion: 151495, diff --git a/tests/mockserver/internal/handler/pathgetapiskillsskillidversions.go b/tests/mockserver/internal/handler/pathgetapiskillsskillidversions.go index 878e7567..41840fae 100644 --- a/tests/mockserver/internal/handler/pathgetapiskillsskillidversions.go +++ b/tests/mockserver/internal/handler/pathgetapiskillsskillidversions.go @@ -47,7 +47,7 @@ func testPlatformSkillsListVersionsPlatformSkillsListVersions0(w http.ResponseWr return } var respBody *components.PlatformSkillVersionsListResponse = &components.PlatformSkillVersionsListResponse{ - Versions: []components.PlatformSkillVersion{}, + Results: []components.PlatformSkillVersion{}, HasMore: false, NextCursor: types.String(""), RequestID: "", diff --git a/tests/mockserver/internal/handler/pathpatchapiskillsskillid.go b/tests/mockserver/internal/handler/pathpatchapiskillsskillid.go index 2b4d9db5..abc15386 100644 --- a/tests/mockserver/internal/handler/pathpatchapiskillsskillid.go +++ b/tests/mockserver/internal/handler/pathpatchapiskillsskillid.go @@ -53,7 +53,7 @@ func testPlatformSkillsUpdatePlatformSkillsUpdate0(w http.ResponseWriter, req *h } var respBody *components.PlatformSkillUpdateResponse = &components.PlatformSkillUpdateResponse{ Skill: components.PlatformSkill{ - ID: "", + SkillID: "", DisplayName: "Afton14", Description: "taut netsuke duh sonata boastfully elegantly management come", LatestVersion: 425795, diff --git a/tests/mockserver/internal/handler/pathpostapiskills.go b/tests/mockserver/internal/handler/pathpostapiskills.go index dfe54aaf..d6998289 100644 --- a/tests/mockserver/internal/handler/pathpostapiskills.go +++ b/tests/mockserver/internal/handler/pathpostapiskills.go @@ -53,7 +53,7 @@ func testPlatformSkillsCreatePlatformSkillsCreate0(w http.ResponseWriter, req *h } var respBody *components.PlatformSkillCreateResponse = &components.PlatformSkillCreateResponse{ Skill: components.PlatformSkill{ - ID: "", + SkillID: "", DisplayName: "Merl18", Description: "rural ugh unexpectedly excepting livid", LatestVersion: 504149, @@ -63,8 +63,8 @@ func testPlatformSkillsCreatePlatformSkillsCreate0(w http.ResponseWriter, req *h Owner: components.PlatformPersonReference{ Name: "", }, - CreatedAt: types.MustTimeFromString("2025-01-04T03:16:16.951Z"), - UpdatedAt: types.MustTimeFromString("2025-09-10T16:05:46.046Z"), + CreatedAt: types.MustTimeFromString("2025-09-10T16:05:46.046Z"), + UpdatedAt: types.MustTimeFromString("2025-08-13T23:05:45.737Z"), }, RequestID: "", } @@ -79,6 +79,6 @@ func testPlatformSkillsCreatePlatformSkillsCreate0(w http.ResponseWriter, req *h return } w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) + w.WriteHeader(http.StatusCreated) _, _ = w.Write(respBodyBytes) } diff --git a/tests/mockserver/internal/handler/pathpostapiskillsimport.go b/tests/mockserver/internal/handler/pathpostapiskillsimport.go index cdcc73da..6c82be5d 100644 --- a/tests/mockserver/internal/handler/pathpostapiskillsimport.go +++ b/tests/mockserver/internal/handler/pathpostapiskillsimport.go @@ -65,6 +65,6 @@ func testPlatformSkillsImportPlatformSkillsImport0(w http.ResponseWriter, req *h return } w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) + w.WriteHeader(http.StatusCreated) _, _ = w.Write(respBodyBytes) } diff --git a/tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go b/tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go index 0cab544f..c54314fa 100644 --- a/tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go +++ b/tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go @@ -46,10 +46,9 @@ func testPlatformSkillsSyncPlatformSkillsSync0(w http.ResponseWriter, req *http. return } var respBody *components.PlatformSkillSyncResponse = &components.PlatformSkillSyncResponse{ - SyncStatus: components.PlatformSkillSyncResultStatusUpToDate, - CommitSha: "", - Updated: false, - RequestID: "", + CommitSha: "", + IsUpdated: false, + RequestID: "", } respBodyBytes, err := utils.MarshalJSON(respBody, "", true) diff --git a/tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go b/tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go index 1f3d1fde..664245fc 100644 --- a/tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go +++ b/tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go @@ -76,6 +76,6 @@ func testPlatformSkillsCreateVersionPlatformSkillsCreateVersion0(w http.Response return } w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) + w.WriteHeader(http.StatusCreated) _, _ = w.Write(respBodyBytes) } diff --git a/tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go b/tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go index 11e0efca..f8a79c8f 100644 --- a/tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go +++ b/tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go @@ -40,7 +40,7 @@ func testPlatformSkillsPreviewSourcePlatformSkillsPreviewSource0(w http.Response http.Error(w, err.Error(), http.StatusBadRequest) return } - if err := assert.AcceptHeader(req, []string{"application/json;q=1", "text/event-stream;q=0"}); err != nil { + if err := assert.AcceptHeader(req, []string{"application/json"}); err != nil { log.Printf("assertion error: %s\n", err) http.Error(w, err.Error(), http.StatusBadRequest) return diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go b/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go index 75fb8eb7..469bd6e6 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: "motionless whenever paintwork import over cuckoo", + Description: "whole busily jive hawk gee basic minus hence", AddedRoles: []components.UserRoleSpecification{ components.UserRoleSpecification{ Person: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", }, - Role: components.UserRoleOwner, + Role: components.UserRoleAnswerModerator, }, }, RemovedRoles: []components.UserRoleSpecification{ @@ -90,7 +90,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ID: 363711, + ID: 158969, 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: 570197, + CollectionID: 110375, CreatedBy: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -278,13 +278,13 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ Name: "George Clooney", ObfuscatedID: "abc123", }, - Role: components.UserRoleAnswerModerator, + Role: components.UserRoleEditor, }, }, }, Collection: &components.Collection{ Name: "", - Description: "athwart skateboard newsstand farm bourgeoisie ah how elliptical aha well-to-do", + Description: "wedge colorfully orientate rally", AudienceFilters: []components.FacetFilter{ components.FacetFilter{ FieldName: types.String("type"), @@ -300,7 +300,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ID: 643990, + ID: 131797, Creator: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -312,7 +312,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ Children: []components.Collection{ components.Collection{ Name: "", - Description: "woot purse salty even as advanced", + Description: "outside yippee sidetrack mature regularly mouser inject worth", AudienceFilters: []components.FacetFilter{ components.FacetFilter{ FieldName: types.String("type"), @@ -328,7 +328,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ID: 359978, + ID: 149448, Creator: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -340,7 +340,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ItemType: components.CollectionItemItemTypeURL, + ItemType: components.CollectionItemItemTypeCollection, }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go b/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go index 87401958..96d4127e 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.DocumentSpecUgcType1Shortcuts, - ContentID: 602763, + UgcType: components.DocumentSpecUgcType1Announcements, + ContentID: 848009, }, )), SourceType: components.AnswerSourceTypeAssistant.ToPointer(), diff --git a/tests/mockserver/internal/sdk/models/components/autocompleterequest.go b/tests/mockserver/internal/sdk/models/components/autocompleterequest.go index 2b02c414..d3de9d57 100644 --- a/tests/mockserver/internal/sdk/models/components/autocompleterequest.go +++ b/tests/mockserver/internal/sdk/models/components/autocompleterequest.go @@ -13,12 +13,12 @@ const ( AutocompleteRequestResultTypeAdditionalDocument AutocompleteRequestResultType = "ADDITIONAL_DOCUMENT" AutocompleteRequestResultTypeApp AutocompleteRequestResultType = "APP" AutocompleteRequestResultTypeBrowserHistory AutocompleteRequestResultType = "BROWSER_HISTORY" + AutocompleteRequestResultTypeChatHistory AutocompleteRequestResultType = "CHAT_HISTORY" AutocompleteRequestResultTypeDatasource AutocompleteRequestResultType = "DATASOURCE" AutocompleteRequestResultTypeDocument AutocompleteRequestResultType = "DOCUMENT" AutocompleteRequestResultTypeEntity AutocompleteRequestResultType = "ENTITY" AutocompleteRequestResultTypeGolink AutocompleteRequestResultType = "GOLINK" AutocompleteRequestResultTypeHistory AutocompleteRequestResultType = "HISTORY" - AutocompleteRequestResultTypeChatHistory AutocompleteRequestResultType = "CHAT_HISTORY" AutocompleteRequestResultTypeNewChat AutocompleteRequestResultType = "NEW_CHAT" AutocompleteRequestResultTypeOperator AutocompleteRequestResultType = "OPERATOR" AutocompleteRequestResultTypeOperatorValue AutocompleteRequestResultType = "OPERATOR_VALUE" @@ -41,6 +41,8 @@ func (e *AutocompleteRequestResultType) UnmarshalJSON(data []byte) error { fallthrough case "BROWSER_HISTORY": fallthrough + case "CHAT_HISTORY": + fallthrough case "DATASOURCE": fallthrough case "DOCUMENT": @@ -51,8 +53,6 @@ func (e *AutocompleteRequestResultType) UnmarshalJSON(data []byte) error { fallthrough case "HISTORY": fallthrough - case "CHAT_HISTORY": - fallthrough case "NEW_CHAT": fallthrough case "OPERATOR": diff --git a/tests/mockserver/internal/sdk/models/components/feedentry.go b/tests/mockserver/internal/sdk/models/components/feedentry.go index 44f5dfe7..17af2d4e 100644 --- a/tests/mockserver/internal/sdk/models/components/feedentry.go +++ b/tests/mockserver/internal/sdk/models/components/feedentry.go @@ -124,6 +124,7 @@ const ( JustificationTypeShareArtifact JustificationType = "SHARE_ARTIFACT" JustificationTypeCreateAgent JustificationType = "CREATE_AGENT" JustificationTypeManagerInvite JustificationType = "MANAGER_INVITE" + JustificationTypeOnboardingAuthorization JustificationType = "ONBOARDING_AUTHORIZATION" ) func (e JustificationType) ToPointer() *JustificationType { @@ -270,6 +271,8 @@ func (e *JustificationType) UnmarshalJSON(data []byte) error { case "CREATE_AGENT": fallthrough case "MANAGER_INVITE": + fallthrough + case "ONBOARDING_AUTHORIZATION": *e = JustificationType(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/feedrequest.go b/tests/mockserver/internal/sdk/models/components/feedrequest.go index 9489bdd5..0802edf0 100644 --- a/tests/mockserver/internal/sdk/models/components/feedrequest.go +++ b/tests/mockserver/internal/sdk/models/components/feedrequest.go @@ -64,6 +64,7 @@ const ( FeedRequestCategoryShareArtifact FeedRequestCategory = "SHARE_ARTIFACT" FeedRequestCategoryCreateAgent FeedRequestCategory = "CREATE_AGENT" FeedRequestCategoryManagerInvite FeedRequestCategory = "MANAGER_INVITE" + FeedRequestCategoryOnboardingAuthorization FeedRequestCategory = "ONBOARDING_AUTHORIZATION" ) func (e FeedRequestCategory) ToPointer() *FeedRequestCategory { @@ -182,6 +183,8 @@ func (e *FeedRequestCategory) UnmarshalJSON(data []byte) error { case "CREATE_AGENT": fallthrough case "MANAGER_INVITE": + fallthrough + case "ONBOARDING_AUTHORIZATION": *e = FeedRequestCategory(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/feedresult.go b/tests/mockserver/internal/sdk/models/components/feedresult.go index 4d9a33d3..bfabbe25 100644 --- a/tests/mockserver/internal/sdk/models/components/feedresult.go +++ b/tests/mockserver/internal/sdk/models/components/feedresult.go @@ -65,6 +65,7 @@ const ( FeedResultCategoryShareArtifact FeedResultCategory = "SHARE_ARTIFACT" FeedResultCategoryCreateAgent FeedResultCategory = "CREATE_AGENT" FeedResultCategoryManagerInvite FeedResultCategory = "MANAGER_INVITE" + FeedResultCategoryOnboardingAuthorization FeedResultCategory = "ONBOARDING_AUTHORIZATION" ) func (e FeedResultCategory) ToPointer() *FeedResultCategory { @@ -183,6 +184,8 @@ func (e *FeedResultCategory) UnmarshalJSON(data []byte) error { case "CREATE_AGENT": fallthrough case "MANAGER_INVITE": + fallthrough + case "ONBOARDING_AUTHORIZATION": *e = FeedResultCategory(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/peoplerequest.go b/tests/mockserver/internal/sdk/models/components/peoplerequest.go index 1240c00e..4d75414b 100644 --- a/tests/mockserver/internal/sdk/models/components/peoplerequest.go +++ b/tests/mockserver/internal/sdk/models/components/peoplerequest.go @@ -5,6 +5,7 @@ package components import ( "encoding/json" "fmt" + "mockserver/internal/sdk/utils" ) type PeopleRequestIncludeField string @@ -84,6 +85,8 @@ func (e *IncludeType) UnmarshalJSON(data []byte) error { } type PeopleRequest struct { + // If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup. + FallbackToAuthenticatedIdentity *bool `default:"false" json:"fallbackToAuthenticatedIdentity"` // The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. TimezoneOffset *int64 `json:"timezoneOffset,omitempty"` // The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. @@ -98,6 +101,24 @@ type PeopleRequest struct { Source *string `json:"source,omitempty"` } +func (p PeopleRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PeopleRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, nil); err != nil { + return err + } + return nil +} + +func (o *PeopleRequest) GetFallbackToAuthenticatedIdentity() *bool { + if o == nil { + return nil + } + return o.FallbackToAuthenticatedIdentity +} + func (o *PeopleRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/person.go b/tests/mockserver/internal/sdk/models/components/person.go index ab2c5f86..e3bd9441 100644 --- a/tests/mockserver/internal/sdk/models/components/person.go +++ b/tests/mockserver/internal/sdk/models/components/person.go @@ -11,6 +11,8 @@ type Person struct { Name string `json:"name"` // An opaque identifier that can be used to request metadata for a Person. ObfuscatedID string `json:"obfuscatedId"` + // True when this is an authenticated identity fallback rather than a people profile. Directory metadata is unavailable. + IdentityOnly *bool `json:"identityOnly,omitempty"` // A list of documents related to this person. RelatedDocuments []RelatedDocuments `json:"relatedDocuments,omitempty"` Metadata *PersonMetadata `json:"metadata,omitempty"` @@ -41,6 +43,13 @@ func (o *Person) GetObfuscatedID() string { return o.ObfuscatedID } +func (o *Person) GetIdentityOnly() *bool { + if o == nil { + return nil + } + return o.IdentityOnly +} + func (o *Person) GetRelatedDocuments() []RelatedDocuments { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go b/tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go index 58281ae6..30dae6db 100644 --- a/tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go +++ b/tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + // PlatformAuthenticationSuggestion - One tool the caller must authorize before the agent can run. type PlatformAuthenticationSuggestion struct { // Human-readable tool name. @@ -10,6 +14,17 @@ type PlatformAuthenticationSuggestion struct { ServerID string `json:"server_id"` } +func (p PlatformAuthenticationSuggestion) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformAuthenticationSuggestion) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"server_id"}); err != nil { + return err + } + return nil +} + func (o *PlatformAuthenticationSuggestion) GetToolName() *string { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/platformproblemdetail.go b/tests/mockserver/internal/sdk/models/components/platformproblemdetail.go new file mode 100644 index 00000000..f4cb5aa3 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformproblemdetail.go @@ -0,0 +1,94 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +// PlatformProblemDetail - Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation. +type PlatformProblemDetail struct { + // URI identifying the error type. + Type string `json:"type"` + // Short, human-readable summary of the error. + Title string `json:"title"` + // HTTP status code mirrored from the response. + Status int64 `json:"status"` + // Human-readable explanation specific to this occurrence. + Detail string `json:"detail"` + // Stable machine-readable error code. + Code PlatformProblemDetailCode `json:"code"` + // Direct URL to documentation for this error code. + DocumentationURL *string `json:"documentation_url,omitempty"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` + // Field-level validation problems, one entry per offending field. + Errors []PlatformProblemDetailError `json:"errors,omitempty"` +} + +func (p PlatformProblemDetail) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformProblemDetail) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "title", "status", "detail", "code", "request_id"}); err != nil { + return err + } + return nil +} + +func (o *PlatformProblemDetail) GetType() string { + if o == nil { + return "" + } + return o.Type +} + +func (o *PlatformProblemDetail) GetTitle() string { + if o == nil { + return "" + } + return o.Title +} + +func (o *PlatformProblemDetail) GetStatus() int64 { + if o == nil { + return 0 + } + return o.Status +} + +func (o *PlatformProblemDetail) GetDetail() string { + if o == nil { + return "" + } + return o.Detail +} + +func (o *PlatformProblemDetail) GetCode() PlatformProblemDetailCode { + if o == nil { + return PlatformProblemDetailCode("") + } + return o.Code +} + +func (o *PlatformProblemDetail) GetDocumentationURL() *string { + if o == nil { + return nil + } + return o.DocumentationURL +} + +func (o *PlatformProblemDetail) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} + +func (o *PlatformProblemDetail) GetErrors() []PlatformProblemDetailError { + if o == nil { + return nil + } + return o.Errors +} diff --git a/tests/mockserver/internal/sdk/models/components/platformproblemdetailerror.go b/tests/mockserver/internal/sdk/models/components/platformproblemdetailerror.go index 058f5e62..e013d644 100644 --- a/tests/mockserver/internal/sdk/models/components/platformproblemdetailerror.go +++ b/tests/mockserver/internal/sdk/models/components/platformproblemdetailerror.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + // PlatformProblemDetailError - Field-level validation problem for a single offending field. type PlatformProblemDetailError struct { // RFC 6901 JSON Pointer to the offending field. @@ -12,6 +16,17 @@ type PlatformProblemDetailError struct { Code *PlatformProblemDetailCode `json:"code,omitempty"` } +func (p PlatformProblemDetailError) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformProblemDetailError) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"pointer", "detail"}); err != nil { + return err + } + return nil +} + func (o *PlatformProblemDetailError) GetPointer() string { if o == nil { return "" diff --git a/tests/mockserver/internal/sdk/models/components/platformskill.go b/tests/mockserver/internal/sdk/models/components/platformskill.go index 8397a899..a507f97f 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskill.go +++ b/tests/mockserver/internal/sdk/models/components/platformskill.go @@ -9,7 +9,7 @@ import ( type PlatformSkill struct { // Glean skill ID. - ID string `json:"id"` + SkillID string `json:"skill_id"` // Human-readable skill name. DisplayName string `json:"display_name"` // Human-readable skill description. @@ -18,7 +18,8 @@ type PlatformSkill struct { LatestVersion int64 `json:"latest_version"` // Latest minor version number for the skill. LatestMinorVersion int64 `json:"latest_minor_version"` - // Current skill status. + // The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy. + // Status PlatformSkillStatus `json:"status"` // Source category for the skill. Origin PlatformSkillOrigin `json:"origin"` @@ -36,17 +37,17 @@ func (p PlatformSkill) MarshalJSON() ([]byte, error) { } func (p *PlatformSkill) UnmarshalJSON(data []byte) error { - if err := utils.UnmarshalJSON(data, &p, "", false, []string{"id", "display_name", "description", "latest_version", "latest_minor_version", "status", "origin", "owner", "created_at", "updated_at"}); err != nil { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"skill_id", "display_name", "description", "latest_version", "latest_minor_version", "status", "origin", "owner", "created_at", "updated_at"}); err != nil { return err } return nil } -func (o *PlatformSkill) GetID() string { +func (o *PlatformSkill) GetSkillID() string { if o == nil { return "" } - return o.ID + return o.SkillID } func (o *PlatformSkill) GetDisplayName() string { diff --git a/tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go index 262df2a7..796e0f2e 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go @@ -3,7 +3,8 @@ package components type PlatformSkillImportResponse struct { - // Independently persisted skills in request order. + // Imported skills in request order. The import is atomic: either every source persists or none does. + // Skills []PlatformSkill `json:"skills"` // Platform-generated request ID for support correlation. RequestID string `json:"request_id"` diff --git a/tests/mockserver/internal/sdk/models/components/platformskillorigin.go b/tests/mockserver/internal/sdk/models/components/platformskillorigin.go index e0a00449..1afff274 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillorigin.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillorigin.go @@ -12,6 +12,7 @@ type PlatformSkillOrigin string const ( PlatformSkillOriginCustom PlatformSkillOrigin = "CUSTOM" + PlatformSkillOriginGithub PlatformSkillOrigin = "GITHUB" ) func (e PlatformSkillOrigin) ToPointer() *PlatformSkillOrigin { @@ -24,6 +25,8 @@ func (e *PlatformSkillOrigin) UnmarshalJSON(data []byte) error { } switch v { case "CUSTOM": + fallthrough + case "GITHUB": *e = PlatformSkillOrigin(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go index 566d5351..55a8d69a 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go @@ -4,7 +4,7 @@ package components type PlatformSkillsListResponse struct { // Skills available to the user. - Skills []PlatformSkill `json:"skills"` + Results []PlatformSkill `json:"results"` // Whether additional results are available. HasMore bool `json:"has_more"` // Cursor for the next page, or null when no more results are available. @@ -13,11 +13,11 @@ type PlatformSkillsListResponse struct { RequestID string `json:"request_id"` } -func (o *PlatformSkillsListResponse) GetSkills() []PlatformSkill { +func (o *PlatformSkillsListResponse) GetResults() []PlatformSkill { if o == nil { return []PlatformSkill{} } - return o.Skills + return o.Results } func (o *PlatformSkillsListResponse) GetHasMore() bool { diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go index f7a467f1..85b419fd 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + type PlatformSkillSourcePreview struct { // Skill name parsed from SKILL.md frontmatter. DisplayName string `json:"display_name"` @@ -19,6 +23,17 @@ type PlatformSkillSourcePreview struct { FileTree []string `json:"file_tree"` } +func (p PlatformSkillSourcePreview) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreview) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"display_name", "description", "source_url", "commit_sha", "main_content", "files", "file_tree"}); err != nil { + return err + } + return nil +} + func (o *PlatformSkillSourcePreview) GetDisplayName() string { if o == nil { return "" diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go index 5a6c6fe8..92ed2f8b 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + type PlatformSkillSourcePreviewFailure struct { // Resolved URL for the entry that could not be previewed. SourceURL string `json:"source_url"` @@ -11,6 +15,17 @@ type PlatformSkillSourcePreviewFailure struct { Detail string `json:"detail"` } +func (p PlatformSkillSourcePreviewFailure) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewFailure) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"source_url", "code", "detail"}); err != nil { + return err + } + return nil +} + func (o *PlatformSkillSourcePreviewFailure) GetSourceURL() string { if o == nil { return "" diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfile.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfile.go index 43503cfb..7622555e 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfile.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfile.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + type PlatformSkillSourcePreviewFile struct { // Relative path within the skill bundle. Path string `json:"path"` @@ -9,6 +13,17 @@ type PlatformSkillSourcePreviewFile struct { Content string `json:"content"` } +func (p PlatformSkillSourcePreviewFile) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewFile) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"path", "content"}); err != nil { + return err + } + return nil +} + func (o *PlatformSkillSourcePreviewFile) GetPath() string { if o == nil { return "" diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewrequest.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewrequest.go deleted file mode 100644 index 506e0c09..00000000 --- a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewrequest.go +++ /dev/null @@ -1,39 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -import ( - "mockserver/internal/sdk/utils" -) - -type PlatformSkillSourcePreviewRequest struct { - // GitHub URL for a skill directory, SKILL.md file, or repository to inspect. - SourceURL string `json:"source_url"` - // Whether to stream repository scan progress using server-sent events. - Stream *bool `default:"false" json:"stream"` -} - -func (p PlatformSkillSourcePreviewRequest) MarshalJSON() ([]byte, error) { - return utils.MarshalJSON(p, "", false) -} - -func (p *PlatformSkillSourcePreviewRequest) UnmarshalJSON(data []byte) error { - if err := utils.UnmarshalJSON(data, &p, "", false, []string{"source_url"}); err != nil { - return err - } - return nil -} - -func (o *PlatformSkillSourcePreviewRequest) GetSourceURL() string { - if o == nil { - return "" - } - return o.SourceURL -} - -func (o *PlatformSkillSourcePreviewRequest) GetStream() *bool { - if o == nil { - return nil - } - return o.Stream -} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewresponse.go index 0607598d..597fec46 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewresponse.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewresponse.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + type PlatformSkillSourcePreviewResponse struct { // Valid skills discovered at the source URL. Skills []PlatformSkillSourcePreview `json:"skills"` @@ -11,6 +15,17 @@ type PlatformSkillSourcePreviewResponse struct { RequestID string `json:"request_id"` } +func (p PlatformSkillSourcePreviewResponse) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewResponse) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"skills", "failures", "request_id"}); err != nil { + return err + } + return nil +} + func (o *PlatformSkillSourcePreviewResponse) GetSkills() []PlatformSkillSourcePreview { if o == nil { return []PlatformSkillSourcePreview{} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerror.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerror.go new file mode 100644 index 00000000..e1b0e86e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerror.go @@ -0,0 +1,76 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +// PlatformSkillSourcePreviewStreamErrorType - Event type, also sent as the SSE `event` name. +type PlatformSkillSourcePreviewStreamErrorType string + +const ( + PlatformSkillSourcePreviewStreamErrorTypeError PlatformSkillSourcePreviewStreamErrorType = "ERROR" +) + +func (e PlatformSkillSourcePreviewStreamErrorType) ToPointer() *PlatformSkillSourcePreviewStreamErrorType { + return &e +} +func (e *PlatformSkillSourcePreviewStreamErrorType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "ERROR": + *e = PlatformSkillSourcePreviewStreamErrorType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillSourcePreviewStreamErrorType: %v", v) + } +} + +// PlatformSkillSourcePreviewStreamError - Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present. +type PlatformSkillSourcePreviewStreamError struct { + // Event type, also sent as the SSE `event` name. + Type PlatformSkillSourcePreviewStreamErrorType `json:"type"` + // Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation. + // + Error PlatformProblemDetail `json:"error"` + // Present only when `error.code` is `tools_unauthorized`. Names the GitHub action pack to authorize, with the same retry flow as the 422 response. + AuthenticationSuggestions []PlatformAuthenticationSuggestion `json:"authentication_suggestions,omitempty"` +} + +func (p PlatformSkillSourcePreviewStreamError) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamError) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "error"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamError) GetType() PlatformSkillSourcePreviewStreamErrorType { + if o == nil { + return PlatformSkillSourcePreviewStreamErrorType("") + } + return o.Type +} + +func (o *PlatformSkillSourcePreviewStreamError) GetError() PlatformProblemDetail { + if o == nil { + return PlatformProblemDetail{} + } + return o.Error +} + +func (o *PlatformSkillSourcePreviewStreamError) GetAuthenticationSuggestions() []PlatformAuthenticationSuggestion { + if o == nil { + return nil + } + return o.AuthenticationSuggestions +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerrorserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerrorserversentevent.go new file mode 100644 index 00000000..548ebf7a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerrorserversentevent.go @@ -0,0 +1,43 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformSkillSourcePreviewStreamErrorServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"ERROR" json:"event"` + // Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present. + Data PlatformSkillSourcePreviewStreamError `json:"data"` +} + +func (p PlatformSkillSourcePreviewStreamErrorServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamErrorServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamErrorServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformSkillSourcePreviewStreamErrorServerSentEvent) GetEvent() string { + return "ERROR" +} + +func (o *PlatformSkillSourcePreviewStreamErrorServerSentEvent) GetData() PlatformSkillSourcePreviewStreamError { + if o == nil { + return PlatformSkillSourcePreviewStreamError{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreameventserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreameventserversentevent.go new file mode 100644 index 00000000..3451e409 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreameventserversentevent.go @@ -0,0 +1,178 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "errors" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformSkillSourcePreviewStreamEventServerSentEventType string + +const ( + PlatformSkillSourcePreviewStreamEventServerSentEventTypeScan PlatformSkillSourcePreviewStreamEventServerSentEventType = "SCAN" + PlatformSkillSourcePreviewStreamEventServerSentEventTypeProgress PlatformSkillSourcePreviewStreamEventServerSentEventType = "PROGRESS" + PlatformSkillSourcePreviewStreamEventServerSentEventTypeSkill PlatformSkillSourcePreviewStreamEventServerSentEventType = "SKILL" + PlatformSkillSourcePreviewStreamEventServerSentEventTypeResult PlatformSkillSourcePreviewStreamEventServerSentEventType = "RESULT" + PlatformSkillSourcePreviewStreamEventServerSentEventTypeError PlatformSkillSourcePreviewStreamEventServerSentEventType = "ERROR" +) + +// PlatformSkillSourcePreviewStreamEventServerSentEvent - A typed server-sent event. +type PlatformSkillSourcePreviewStreamEventServerSentEvent struct { + PlatformSkillSourcePreviewStreamScanServerSentEvent *PlatformSkillSourcePreviewStreamScanServerSentEvent `queryParam:"inline"` + PlatformSkillSourcePreviewStreamProgressServerSentEvent *PlatformSkillSourcePreviewStreamProgressServerSentEvent `queryParam:"inline"` + PlatformSkillSourcePreviewStreamSkillServerSentEvent *PlatformSkillSourcePreviewStreamSkillServerSentEvent `queryParam:"inline"` + PlatformSkillSourcePreviewStreamResultServerSentEvent *PlatformSkillSourcePreviewStreamResultServerSentEvent `queryParam:"inline"` + PlatformSkillSourcePreviewStreamErrorServerSentEvent *PlatformSkillSourcePreviewStreamErrorServerSentEvent `queryParam:"inline"` + + Type PlatformSkillSourcePreviewStreamEventServerSentEventType +} + +func CreatePlatformSkillSourcePreviewStreamEventServerSentEventScan(scan PlatformSkillSourcePreviewStreamScanServerSentEvent) PlatformSkillSourcePreviewStreamEventServerSentEvent { + typ := PlatformSkillSourcePreviewStreamEventServerSentEventTypeScan + + return PlatformSkillSourcePreviewStreamEventServerSentEvent{ + PlatformSkillSourcePreviewStreamScanServerSentEvent: &scan, + Type: typ, + } +} + +func CreatePlatformSkillSourcePreviewStreamEventServerSentEventProgress(progress PlatformSkillSourcePreviewStreamProgressServerSentEvent) PlatformSkillSourcePreviewStreamEventServerSentEvent { + typ := PlatformSkillSourcePreviewStreamEventServerSentEventTypeProgress + + return PlatformSkillSourcePreviewStreamEventServerSentEvent{ + PlatformSkillSourcePreviewStreamProgressServerSentEvent: &progress, + Type: typ, + } +} + +func CreatePlatformSkillSourcePreviewStreamEventServerSentEventSkill(skill PlatformSkillSourcePreviewStreamSkillServerSentEvent) PlatformSkillSourcePreviewStreamEventServerSentEvent { + typ := PlatformSkillSourcePreviewStreamEventServerSentEventTypeSkill + + return PlatformSkillSourcePreviewStreamEventServerSentEvent{ + PlatformSkillSourcePreviewStreamSkillServerSentEvent: &skill, + Type: typ, + } +} + +func CreatePlatformSkillSourcePreviewStreamEventServerSentEventResult(result PlatformSkillSourcePreviewStreamResultServerSentEvent) PlatformSkillSourcePreviewStreamEventServerSentEvent { + typ := PlatformSkillSourcePreviewStreamEventServerSentEventTypeResult + + return PlatformSkillSourcePreviewStreamEventServerSentEvent{ + PlatformSkillSourcePreviewStreamResultServerSentEvent: &result, + Type: typ, + } +} + +func CreatePlatformSkillSourcePreviewStreamEventServerSentEventError(errorT PlatformSkillSourcePreviewStreamErrorServerSentEvent) PlatformSkillSourcePreviewStreamEventServerSentEvent { + typ := PlatformSkillSourcePreviewStreamEventServerSentEventTypeError + + return PlatformSkillSourcePreviewStreamEventServerSentEvent{ + PlatformSkillSourcePreviewStreamErrorServerSentEvent: &errorT, + Type: typ, + } +} + +func (u *PlatformSkillSourcePreviewStreamEventServerSentEvent) UnmarshalJSON(data []byte) error { + + type discriminator struct { + Event string `json:"event"` + } + + dis := new(discriminator) + if err := json.Unmarshal(data, &dis); err != nil { + return fmt.Errorf("could not unmarshal discriminator: %w", err) + } + + switch dis.Event { + case "SCAN": + platformSkillSourcePreviewStreamScanServerSentEvent := new(PlatformSkillSourcePreviewStreamScanServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformSkillSourcePreviewStreamScanServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == SCAN) type PlatformSkillSourcePreviewStreamScanServerSentEvent within PlatformSkillSourcePreviewStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformSkillSourcePreviewStreamScanServerSentEvent = platformSkillSourcePreviewStreamScanServerSentEvent + u.Type = PlatformSkillSourcePreviewStreamEventServerSentEventTypeScan + return nil + case "PROGRESS": + platformSkillSourcePreviewStreamProgressServerSentEvent := new(PlatformSkillSourcePreviewStreamProgressServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformSkillSourcePreviewStreamProgressServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == PROGRESS) type PlatformSkillSourcePreviewStreamProgressServerSentEvent within PlatformSkillSourcePreviewStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformSkillSourcePreviewStreamProgressServerSentEvent = platformSkillSourcePreviewStreamProgressServerSentEvent + u.Type = PlatformSkillSourcePreviewStreamEventServerSentEventTypeProgress + return nil + case "SKILL": + platformSkillSourcePreviewStreamSkillServerSentEvent := new(PlatformSkillSourcePreviewStreamSkillServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformSkillSourcePreviewStreamSkillServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == SKILL) type PlatformSkillSourcePreviewStreamSkillServerSentEvent within PlatformSkillSourcePreviewStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformSkillSourcePreviewStreamSkillServerSentEvent = platformSkillSourcePreviewStreamSkillServerSentEvent + u.Type = PlatformSkillSourcePreviewStreamEventServerSentEventTypeSkill + return nil + case "RESULT": + platformSkillSourcePreviewStreamResultServerSentEvent := new(PlatformSkillSourcePreviewStreamResultServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformSkillSourcePreviewStreamResultServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == RESULT) type PlatformSkillSourcePreviewStreamResultServerSentEvent within PlatformSkillSourcePreviewStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformSkillSourcePreviewStreamResultServerSentEvent = platformSkillSourcePreviewStreamResultServerSentEvent + u.Type = PlatformSkillSourcePreviewStreamEventServerSentEventTypeResult + return nil + case "ERROR": + platformSkillSourcePreviewStreamErrorServerSentEvent := new(PlatformSkillSourcePreviewStreamErrorServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformSkillSourcePreviewStreamErrorServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == ERROR) type PlatformSkillSourcePreviewStreamErrorServerSentEvent within PlatformSkillSourcePreviewStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformSkillSourcePreviewStreamErrorServerSentEvent = platformSkillSourcePreviewStreamErrorServerSentEvent + u.Type = PlatformSkillSourcePreviewStreamEventServerSentEventTypeError + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for PlatformSkillSourcePreviewStreamEventServerSentEvent", string(data)) +} + +func (u PlatformSkillSourcePreviewStreamEventServerSentEvent) MarshalJSON() ([]byte, error) { + if u.PlatformSkillSourcePreviewStreamScanServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformSkillSourcePreviewStreamScanServerSentEvent, "", true) + } + + if u.PlatformSkillSourcePreviewStreamProgressServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformSkillSourcePreviewStreamProgressServerSentEvent, "", true) + } + + if u.PlatformSkillSourcePreviewStreamSkillServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformSkillSourcePreviewStreamSkillServerSentEvent, "", true) + } + + if u.PlatformSkillSourcePreviewStreamResultServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformSkillSourcePreviewStreamResultServerSentEvent, "", true) + } + + if u.PlatformSkillSourcePreviewStreamErrorServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformSkillSourcePreviewStreamErrorServerSentEvent, "", true) + } + + return nil, errors.New("could not marshal union type PlatformSkillSourcePreviewStreamEventServerSentEvent: all fields are null") +} + +func (o PlatformSkillSourcePreviewStreamEventServerSentEvent) GetEventEncoding(event string) (string, error) { + switch event { + case "SCAN": + return "application/json", nil + case "PROGRESS": + return "application/json", nil + case "SKILL": + return "application/json", nil + case "RESULT": + return "application/json", nil + case "ERROR": + return "application/json", nil + } + return "string", nil +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogress.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogress.go new file mode 100644 index 00000000..20885b77 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogress.go @@ -0,0 +1,84 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +// PlatformSkillSourcePreviewStreamProgressType - Event type, also sent as the SSE `event` name. +type PlatformSkillSourcePreviewStreamProgressType string + +const ( + PlatformSkillSourcePreviewStreamProgressTypeProgress PlatformSkillSourcePreviewStreamProgressType = "PROGRESS" +) + +func (e PlatformSkillSourcePreviewStreamProgressType) ToPointer() *PlatformSkillSourcePreviewStreamProgressType { + return &e +} +func (e *PlatformSkillSourcePreviewStreamProgressType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "PROGRESS": + *e = PlatformSkillSourcePreviewStreamProgressType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillSourcePreviewStreamProgressType: %v", v) + } +} + +// PlatformSkillSourcePreviewStreamProgress - One skill finished inspecting; names the skill in progress. +type PlatformSkillSourcePreviewStreamProgress struct { + // Event type, also sent as the SSE `event` name. + Type PlatformSkillSourcePreviewStreamProgressType `json:"type"` + // Number of skills inspected so far. + Completed int64 `json:"completed"` + // Number of skills to inspect. + Total int64 `json:"total"` + // Path of the skill being inspected. + CurrentSkill string `json:"current_skill"` +} + +func (p PlatformSkillSourcePreviewStreamProgress) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamProgress) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "completed", "total", "current_skill"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamProgress) GetType() PlatformSkillSourcePreviewStreamProgressType { + if o == nil { + return PlatformSkillSourcePreviewStreamProgressType("") + } + return o.Type +} + +func (o *PlatformSkillSourcePreviewStreamProgress) GetCompleted() int64 { + if o == nil { + return 0 + } + return o.Completed +} + +func (o *PlatformSkillSourcePreviewStreamProgress) GetTotal() int64 { + if o == nil { + return 0 + } + return o.Total +} + +func (o *PlatformSkillSourcePreviewStreamProgress) GetCurrentSkill() string { + if o == nil { + return "" + } + return o.CurrentSkill +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogressserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogressserversentevent.go new file mode 100644 index 00000000..76ee67dd --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogressserversentevent.go @@ -0,0 +1,43 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformSkillSourcePreviewStreamProgressServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"PROGRESS" json:"event"` + // One skill finished inspecting; names the skill in progress. + Data PlatformSkillSourcePreviewStreamProgress `json:"data"` +} + +func (p PlatformSkillSourcePreviewStreamProgressServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamProgressServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamProgressServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformSkillSourcePreviewStreamProgressServerSentEvent) GetEvent() string { + return "PROGRESS" +} + +func (o *PlatformSkillSourcePreviewStreamProgressServerSentEvent) GetData() PlatformSkillSourcePreviewStreamProgress { + if o == nil { + return PlatformSkillSourcePreviewStreamProgress{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresult.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresult.go new file mode 100644 index 00000000..b3070c67 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresult.go @@ -0,0 +1,65 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +// PlatformSkillSourcePreviewStreamResultType - Event type, also sent as the SSE `event` name. +type PlatformSkillSourcePreviewStreamResultType string + +const ( + PlatformSkillSourcePreviewStreamResultTypeResult PlatformSkillSourcePreviewStreamResultType = "RESULT" +) + +func (e PlatformSkillSourcePreviewStreamResultType) ToPointer() *PlatformSkillSourcePreviewStreamResultType { + return &e +} +func (e *PlatformSkillSourcePreviewStreamResultType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "RESULT": + *e = PlatformSkillSourcePreviewStreamResultType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillSourcePreviewStreamResultType: %v", v) + } +} + +// PlatformSkillSourcePreviewStreamResult - Terminal success event carrying the fully assembled preview. +type PlatformSkillSourcePreviewStreamResult struct { + // Event type, also sent as the SSE `event` name. + Type PlatformSkillSourcePreviewStreamResultType `json:"type"` + Response PlatformSkillSourcePreviewResponse `json:"response"` +} + +func (p PlatformSkillSourcePreviewStreamResult) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamResult) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "response"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamResult) GetType() PlatformSkillSourcePreviewStreamResultType { + if o == nil { + return PlatformSkillSourcePreviewStreamResultType("") + } + return o.Type +} + +func (o *PlatformSkillSourcePreviewStreamResult) GetResponse() PlatformSkillSourcePreviewResponse { + if o == nil { + return PlatformSkillSourcePreviewResponse{} + } + return o.Response +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresultserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresultserversentevent.go new file mode 100644 index 00000000..9320bc5f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresultserversentevent.go @@ -0,0 +1,43 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformSkillSourcePreviewStreamResultServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"RESULT" json:"event"` + // Terminal success event carrying the fully assembled preview. + Data PlatformSkillSourcePreviewStreamResult `json:"data"` +} + +func (p PlatformSkillSourcePreviewStreamResultServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamResultServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamResultServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformSkillSourcePreviewStreamResultServerSentEvent) GetEvent() string { + return "RESULT" +} + +func (o *PlatformSkillSourcePreviewStreamResultServerSentEvent) GetData() PlatformSkillSourcePreviewStreamResult { + if o == nil { + return PlatformSkillSourcePreviewStreamResult{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscan.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscan.go new file mode 100644 index 00000000..118e1273 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscan.go @@ -0,0 +1,75 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +// PlatformSkillSourcePreviewStreamScanType - Event type, also sent as the SSE `event` name. +type PlatformSkillSourcePreviewStreamScanType string + +const ( + PlatformSkillSourcePreviewStreamScanTypeScan PlatformSkillSourcePreviewStreamScanType = "SCAN" +) + +func (e PlatformSkillSourcePreviewStreamScanType) ToPointer() *PlatformSkillSourcePreviewStreamScanType { + return &e +} +func (e *PlatformSkillSourcePreviewStreamScanType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "SCAN": + *e = PlatformSkillSourcePreviewStreamScanType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillSourcePreviewStreamScanType: %v", v) + } +} + +// PlatformSkillSourcePreviewStreamScan - Repository scan started; names every skill path found. +type PlatformSkillSourcePreviewStreamScan struct { + // Event type, also sent as the SSE `event` name. + Type PlatformSkillSourcePreviewStreamScanType `json:"type"` + // Number of skill paths found in the scan. + Total int64 `json:"total"` + // Skill paths found in the scan. + SkillPaths []string `json:"skill_paths"` +} + +func (p PlatformSkillSourcePreviewStreamScan) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamScan) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "total", "skill_paths"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamScan) GetType() PlatformSkillSourcePreviewStreamScanType { + if o == nil { + return PlatformSkillSourcePreviewStreamScanType("") + } + return o.Type +} + +func (o *PlatformSkillSourcePreviewStreamScan) GetTotal() int64 { + if o == nil { + return 0 + } + return o.Total +} + +func (o *PlatformSkillSourcePreviewStreamScan) GetSkillPaths() []string { + if o == nil { + return []string{} + } + return o.SkillPaths +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscanserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscanserversentevent.go new file mode 100644 index 00000000..f1b62054 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscanserversentevent.go @@ -0,0 +1,43 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformSkillSourcePreviewStreamScanServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"SCAN" json:"event"` + // Repository scan started; names every skill path found. + Data PlatformSkillSourcePreviewStreamScan `json:"data"` +} + +func (p PlatformSkillSourcePreviewStreamScanServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamScanServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamScanServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformSkillSourcePreviewStreamScanServerSentEvent) GetEvent() string { + return "SCAN" +} + +func (o *PlatformSkillSourcePreviewStreamScanServerSentEvent) GetData() PlatformSkillSourcePreviewStreamScan { + if o == nil { + return PlatformSkillSourcePreviewStreamScan{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskill.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskill.go new file mode 100644 index 00000000..2be741fc --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskill.go @@ -0,0 +1,65 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +// PlatformSkillSourcePreviewStreamSkillType - Event type, also sent as the SSE `event` name. +type PlatformSkillSourcePreviewStreamSkillType string + +const ( + PlatformSkillSourcePreviewStreamSkillTypeSkill PlatformSkillSourcePreviewStreamSkillType = "SKILL" +) + +func (e PlatformSkillSourcePreviewStreamSkillType) ToPointer() *PlatformSkillSourcePreviewStreamSkillType { + return &e +} +func (e *PlatformSkillSourcePreviewStreamSkillType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "SKILL": + *e = PlatformSkillSourcePreviewStreamSkillType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillSourcePreviewStreamSkillType: %v", v) + } +} + +// PlatformSkillSourcePreviewStreamSkill - One skill previewed; carries the previewed skill. +type PlatformSkillSourcePreviewStreamSkill struct { + // Event type, also sent as the SSE `event` name. + Type PlatformSkillSourcePreviewStreamSkillType `json:"type"` + Skill PlatformSkillSourcePreview `json:"skill"` +} + +func (p PlatformSkillSourcePreviewStreamSkill) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamSkill) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "skill"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamSkill) GetType() PlatformSkillSourcePreviewStreamSkillType { + if o == nil { + return PlatformSkillSourcePreviewStreamSkillType("") + } + return o.Type +} + +func (o *PlatformSkillSourcePreviewStreamSkill) GetSkill() PlatformSkillSourcePreview { + if o == nil { + return PlatformSkillSourcePreview{} + } + return o.Skill +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskillserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskillserversentevent.go new file mode 100644 index 00000000..7b53e037 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskillserversentevent.go @@ -0,0 +1,43 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformSkillSourcePreviewStreamSkillServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"SKILL" json:"event"` + // One skill previewed; carries the previewed skill. + Data PlatformSkillSourcePreviewStreamSkill `json:"data"` +} + +func (p PlatformSkillSourcePreviewStreamSkillServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamSkillServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamSkillServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformSkillSourcePreviewStreamSkillServerSentEvent) GetEvent() string { + return "SKILL" +} + +func (o *PlatformSkillSourcePreviewStreamSkillServerSentEvent) GetData() PlatformSkillSourcePreviewStreamSkill { + if o == nil { + return PlatformSkillSourcePreviewStreamSkill{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillstatus.go b/tests/mockserver/internal/sdk/models/components/platformskillstatus.go index a218b760..d47da9c0 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillstatus.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillstatus.go @@ -7,7 +7,7 @@ import ( "fmt" ) -// PlatformSkillStatus - Current skill status. +// PlatformSkillStatus - The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy. type PlatformSkillStatus string const ( diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsyncresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillsyncresponse.go index 773dec5b..cd8c8278 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillsyncresponse.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillsyncresponse.go @@ -3,23 +3,14 @@ package components type PlatformSkillSyncResponse struct { - // Synchronization status after a successful refresh. - SyncStatus PlatformSkillSyncResultStatus `json:"sync_status"` // Git commit SHA now associated with the skill. CommitSha string `json:"commit_sha"` // Whether this request created a new skill version. - Updated bool `json:"updated"` + IsUpdated bool `json:"is_updated"` // Platform-generated request ID for support correlation. RequestID string `json:"request_id"` } -func (o *PlatformSkillSyncResponse) GetSyncStatus() PlatformSkillSyncResultStatus { - if o == nil { - return PlatformSkillSyncResultStatus("") - } - return o.SyncStatus -} - func (o *PlatformSkillSyncResponse) GetCommitSha() string { if o == nil { return "" @@ -27,11 +18,11 @@ func (o *PlatformSkillSyncResponse) GetCommitSha() string { return o.CommitSha } -func (o *PlatformSkillSyncResponse) GetUpdated() bool { +func (o *PlatformSkillSyncResponse) GetIsUpdated() bool { if o == nil { return false } - return o.Updated + return o.IsUpdated } func (o *PlatformSkillSyncResponse) GetRequestID() string { diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsyncresultstatus.go b/tests/mockserver/internal/sdk/models/components/platformskillsyncresultstatus.go deleted file mode 100644 index 93f6e9ed..00000000 --- a/tests/mockserver/internal/sdk/models/components/platformskillsyncresultstatus.go +++ /dev/null @@ -1,32 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -import ( - "encoding/json" - "fmt" -) - -// PlatformSkillSyncResultStatus - Synchronization status after a successful refresh. -type PlatformSkillSyncResultStatus string - -const ( - PlatformSkillSyncResultStatusUpToDate PlatformSkillSyncResultStatus = "UP_TO_DATE" -) - -func (e PlatformSkillSyncResultStatus) ToPointer() *PlatformSkillSyncResultStatus { - return &e -} -func (e *PlatformSkillSyncResultStatus) UnmarshalJSON(data []byte) error { - var v string - if err := json.Unmarshal(data, &v); err != nil { - return err - } - switch v { - case "UP_TO_DATE": - *e = PlatformSkillSyncResultStatus(v) - return nil - default: - return fmt.Errorf("invalid value for PlatformSkillSyncResultStatus: %v", v) - } -} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillupdaterequest.go b/tests/mockserver/internal/sdk/models/components/platformskillupdaterequest.go index 16b5b625..1b120482 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillupdaterequest.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillupdaterequest.go @@ -3,7 +3,8 @@ package components type PlatformSkillUpdateRequest struct { - // New status for the skill. + // Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. + // Status PlatformSkillUpdateStatus `json:"status"` } diff --git a/tests/mockserver/internal/sdk/models/components/platformskillupdatestatus.go b/tests/mockserver/internal/sdk/models/components/platformskillupdatestatus.go index d40a5b9f..46eaa67f 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillupdatestatus.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillupdatestatus.go @@ -7,7 +7,7 @@ import ( "fmt" ) -// PlatformSkillUpdateStatus - New status for the skill. +// PlatformSkillUpdateStatus - Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. type PlatformSkillUpdateStatus string const ( diff --git a/tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go index e6eac47b..cc6af7a3 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go @@ -4,7 +4,7 @@ package components type PlatformSkillVersionsListResponse struct { // Versions available for the skill. - Versions []PlatformSkillVersion `json:"versions"` + Results []PlatformSkillVersion `json:"results"` // Whether additional results are available. HasMore bool `json:"has_more"` // Cursor for the next page, or null when no more results are available. @@ -13,11 +13,11 @@ type PlatformSkillVersionsListResponse struct { RequestID string `json:"request_id"` } -func (o *PlatformSkillVersionsListResponse) GetVersions() []PlatformSkillVersion { +func (o *PlatformSkillVersionsListResponse) GetResults() []PlatformSkillVersion { if o == nil { return []PlatformSkillVersion{} } - return o.Versions + return o.Results } func (o *PlatformSkillVersionsListResponse) GetHasMore() bool { diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillscreate.go b/tests/mockserver/internal/sdk/models/operations/platformskillscreate.go index 7018793f..f5a35851 100644 --- a/tests/mockserver/internal/sdk/models/operations/platformskillscreate.go +++ b/tests/mockserver/internal/sdk/models/operations/platformskillscreate.go @@ -8,7 +8,7 @@ import ( type PlatformSkillsCreateResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` - // Successful response. + // Skill created. PlatformSkillCreateResponse *components.PlatformSkillCreateResponse } diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go b/tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go index 554b0438..6a55d73d 100644 --- a/tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go +++ b/tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go @@ -28,7 +28,7 @@ func (o *PlatformSkillsCreateVersionRequest) GetBody() components.PlatformSkillV type PlatformSkillsCreateVersionResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` - // Successful response. + // Skill version created. PlatformSkillVersionCreateResponse *components.PlatformSkillVersionCreateResponse } diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillslist.go b/tests/mockserver/internal/sdk/models/operations/platformskillslist.go index 40f74199..2286c481 100644 --- a/tests/mockserver/internal/sdk/models/operations/platformskillslist.go +++ b/tests/mockserver/internal/sdk/models/operations/platformskillslist.go @@ -4,15 +4,27 @@ package operations import ( "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" ) type PlatformSkillsListRequest struct { - // Maximum number of skills to return. - PageSize *int64 `queryParam:"style=form,explode=true,name=page_size"` + // Maximum number of skills to return. Defaults to 20. Maximum is 100. + PageSize *int64 `default:"20" queryParam:"style=form,explode=true,name=page_size"` // Opaque pagination cursor from a previous response. Cursor *string `queryParam:"style=form,explode=true,name=cursor"` } +func (p PlatformSkillsListRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillsListRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, nil); err != nil { + return err + } + return nil +} + func (o *PlatformSkillsListRequest) GetPageSize() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go b/tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go index 3853971f..dcea3d13 100644 --- a/tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go +++ b/tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go @@ -4,17 +4,29 @@ package operations import ( "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" ) type PlatformSkillsListVersionsRequest struct { // Glean skill ID. SkillID string `pathParam:"style=simple,explode=false,name=skill_id"` - // Maximum number of versions to return. - PageSize *int64 `queryParam:"style=form,explode=true,name=page_size"` + // Maximum number of versions to return. Defaults to 20. Maximum is 100. + PageSize *int64 `default:"20" queryParam:"style=form,explode=true,name=page_size"` // Opaque pagination cursor from a previous response. Cursor *string `queryParam:"style=form,explode=true,name=cursor"` } +func (p PlatformSkillsListVersionsRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillsListVersionsRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"skill_id"}); err != nil { + return err + } + return nil +} + func (o *PlatformSkillsListVersionsRequest) GetSkillID() string { if o == nil { return "" diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go b/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go index a32c6102..a189b4a3 100644 --- a/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go +++ b/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go @@ -4,14 +4,42 @@ package operations import ( "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" ) +type PlatformSkillsPreviewSourceRequest struct { + // GitHub URL for a skill directory, SKILL.md file, or repository to inspect. + SourceURL string `json:"source_url"` + stream *bool `const:"false" json:"stream"` +} + +func (p PlatformSkillsPreviewSourceRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillsPreviewSourceRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"source_url"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillsPreviewSourceRequest) GetSourceURL() string { + if o == nil { + return "" + } + return o.SourceURL +} + +func (o *PlatformSkillsPreviewSourceRequest) GetStream() *bool { + return types.Bool(false) +} + type PlatformSkillsPreviewSourceResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // Successful response. PlatformSkillSourcePreviewResponse *components.PlatformSkillSourcePreviewResponse - // Successful response. - Res *string } func (o *PlatformSkillsPreviewSourceResponse) GetHTTPMeta() components.HTTPMetadata { @@ -27,10 +55,3 @@ func (o *PlatformSkillsPreviewSourceResponse) GetPlatformSkillSourcePreviewRespo } return o.PlatformSkillSourcePreviewResponse } - -func (o *PlatformSkillsPreviewSourceResponse) GetRes() *string { - if o == nil { - return nil - } - return o.Res -} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsourcestream.go b/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsourcestream.go new file mode 100644 index 00000000..f89eab8b --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsourcestream.go @@ -0,0 +1,58 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/types/stream" + "mockserver/internal/sdk/utils" +) + +type PlatformSkillsPreviewSourceStreamRequest struct { + // GitHub URL for a skill directory, SKILL.md file, or repository to inspect. + SourceURL string `json:"source_url"` + stream *bool `const:"true" json:"stream"` +} + +func (p PlatformSkillsPreviewSourceStreamRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillsPreviewSourceStreamRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"source_url"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillsPreviewSourceStreamRequest) GetSourceURL() string { + if o == nil { + return "" + } + return o.SourceURL +} + +func (o *PlatformSkillsPreviewSourceStreamRequest) GetStream() *bool { + return types.Bool(true) +} + +type PlatformSkillsPreviewSourceStreamResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSkillSourcePreviewStreamEventServerSentEvent *stream.EventStream[components.PlatformSkillSourcePreviewStreamEventServerSentEvent] +} + +func (o *PlatformSkillsPreviewSourceStreamResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsPreviewSourceStreamResponse) GetPlatformSkillSourcePreviewStreamEventServerSentEvent() *stream.EventStream[components.PlatformSkillSourcePreviewStreamEventServerSentEvent] { + if o == nil { + return nil + } + return o.PlatformSkillSourcePreviewStreamEventServerSentEvent +} diff --git a/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go index bdf1155c..6d3eff53 100644 --- a/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go +++ b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go @@ -248,3 +248,29 @@ func AsOptionalNullable(v reflect.Value) (OptionalNullableInterface, bool) { } return nil, false } + +var optionalNullableInterfaceType = reflect.TypeOf((*OptionalNullableInterface)(nil)).Elem() + +// IsOptionalNullableType reports whether typ is an OptionalNullable[T] type. +// It is the type-level counterpart to AsOptionalNullable, for reflection-based +// code that only has a reflect.Type (e.g. when deciding how to decode into a +// zero value). +func IsOptionalNullableType(typ reflect.Type) bool { + return typ != nil && + typ.Kind() == reflect.Map && + typ.Key().Kind() == reflect.Bool && + typ.Elem().Kind() == reflect.Ptr && + typ.Implements(optionalNullableInterfaceType) +} + +// FromReflect is the reflection-based counterpart to From: it returns a new +// OptionalNullable value of type typ (which must satisfy IsOptionalNullableType) +// set to the value innerPtr points at. innerPtr must be assignable to typ's +// element type (*T); pass a nil *T to set the value to null. +func FromReflect(typ reflect.Type, innerPtr reflect.Value) reflect.Value { + m := reflect.MakeMapWithSize(typ, 1) + key := reflect.New(typ.Key()).Elem() + key.SetBool(true) + m.SetMapIndex(key, innerPtr) + return m +} diff --git a/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go index 52fb11f9..cfddc167 100644 --- a/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go +++ b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go @@ -1857,3 +1857,96 @@ func TestAsOptionalNullable(t *testing.T) { assert.Equal(t, "test", value) }) } + +func TestIsOptionalNullableType(t *testing.T) { + t.Parallel() + tests := []struct { + name string + typ reflect.Type + want bool + }{ + { + name: "OptionalNullable of scalar", + typ: reflect.TypeOf(OptionalNullable[string]{}), + want: true, + }, + { + name: "OptionalNullable of pointer", + typ: reflect.TypeOf(OptionalNullable[*int]{}), + want: true, + }, + { + name: "OptionalNullable of slice", + typ: reflect.TypeOf(OptionalNullable[[]string]{}), + want: true, + }, + { + name: "plain string map", + typ: reflect.TypeOf(map[string]string{}), + want: false, + }, + { + name: "bool-keyed map with non-pointer values", + typ: reflect.TypeOf(map[bool]string{}), + want: false, + }, + { + name: "bool-keyed pointer map without the interface method", + typ: reflect.TypeOf(map[bool]*string{}), + want: false, + }, + { + name: "non-map type", + typ: reflect.TypeOf(""), + want: false, + }, + { + name: "pointer to OptionalNullable", + typ: reflect.TypeOf(&OptionalNullable[string]{}), + want: false, + }, + { + name: "nil type", + typ: nil, + want: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + assert.Equal(t, tt.want, IsOptionalNullableType(tt.typ)) + }) + } +} + +func TestFromReflect(t *testing.T) { + t.Parallel() + typ := reflect.TypeOf(OptionalNullable[string]{}) + + t.Run("with value", func(t *testing.T) { + t.Parallel() + inner := reflect.New(reflect.TypeOf("")) + inner.Elem().SetString("hello") + + got, ok := FromReflect(typ, inner).Interface().(OptionalNullable[string]) + require.True(t, ok) + assert.True(t, got.IsSet()) + assert.False(t, got.IsNull()) + v, set := got.Get() + require.True(t, set) + require.NotNil(t, v) + assert.Equal(t, "hello", *v) + assert.Equal(t, From(ptrFrom("hello")), got) + }) + + t.Run("with nil pointer sets null", func(t *testing.T) { + t.Parallel() + nilPtr := reflect.Zero(typ.Elem()) + + got, ok := FromReflect(typ, nilPtr).Interface().(OptionalNullable[string]) + require.True(t, ok) + assert.True(t, got.IsSet()) + assert.True(t, got.IsNull()) + assert.Equal(t, From[string](nil), got) + }) +} diff --git a/tests/mockserver/internal/sdk/utils/json.go b/tests/mockserver/internal/sdk/utils/json.go index e5aafa7b..6ec0f844 100644 --- a/tests/mockserver/internal/sdk/utils/json.go +++ b/tests/mockserver/internal/sdk/utils/json.go @@ -13,6 +13,7 @@ import ( "time" "unsafe" + "mockserver/internal/sdk/optionalnullable" "mockserver/internal/sdk/types" "github.com/ericlagergren/decimal" @@ -306,6 +307,25 @@ func marshalValue(v interface{}, tag reflect.StructTag) (json.RawMessage, error) return []byte("null"), nil } + // optionalnullable.OptionalNullable[T] must be unwrapped here rather than + // delegated to its own MarshalJSON, so tag-driven wire formats on the field + // (e.g. bigint:"string", decimal:"number") reach the inner value. The + // stored *T is redispatched as-is so pointer-receiver marshalers on T + // stay reachable. + if optionalnullable.IsOptionalNullableType(typ) { + for _, key := range val.MapKeys() { + if key.Bool() { + if inner := val.MapIndex(key); !inner.IsNil() { + if _, innerVal := dereferencePointers(inner.Type(), inner); innerVal.IsValid() { + return marshalValue(inner.Interface(), tag) + } + } + break + } + } + return []byte("null"), nil + } + if implementsJSONMarshaler(v) { return json.Marshal(v) } @@ -410,6 +430,9 @@ func handleDefaultConstValue(tagValue string, val interface{}, tag reflect.Struc } typ := dereferenceTypePointer(reflect.TypeOf(val)) + if optionalnullable.IsOptionalNullableType(typ) { + typ = dereferenceTypePointer(typ.Elem()) + } switch typ { case reflect.TypeOf(time.Time{}): return []byte(fmt.Sprintf(`"%s"`, tagValue)) @@ -511,6 +534,27 @@ func unmarshalValue(value json.RawMessage, v reflect.Value, tag reflect.StructTa return nil } case reflect.Map: + // optionalnullable.OptionalNullable[T] is unwrapped like on the marshal + // side, so tag-driven wire formats reach the inner value. A JSON null + // never gets this far: it is handled at the top of this function, where + // the wrapper's own UnmarshalJSON records the explicit null state. + if optionalnullable.IsOptionalNullableType(typ) { + innerPtr := reflect.New(typ.Elem().Elem()) + + if err := unmarshalValue(value, innerPtr, tag); err != nil { + return err + } + + if v.Kind() == reflect.Ptr { + if v.IsNil() { + v.Set(reflect.New(typ)) + } + v = v.Elem() + } + v.Set(optionalnullable.FromReflect(typ, innerPtr)) + return nil + } + if bytes.Equal(value, []byte("null")) || !isComplexValueType(dereferenceTypePointer(typ.Elem())) { if v.CanAddr() { return json.Unmarshal(value, v.Addr().Interface()) diff --git a/tests/test_entities.py b/tests/test_entities.py index b6c97f06..1dac6d8f 100644 --- a/tests/test_entities.py +++ b/tests/test_entities.py @@ -52,10 +52,11 @@ def test_entities_people(): assert glean is not None res = glean.client.entities.read_people( + fallback_to_authenticated_identity=False, obfuscated_ids=[ "abc123", "abc456", - ] + ], ) assert res is not None diff --git a/tests/test_skills.py b/tests/test_skills.py index 63587d5a..1c854370 100644 --- a/tests/test_skills.py +++ b/tests/test_skills.py @@ -34,7 +34,7 @@ def test_skills_platform_skills_list(): ) as glean: assert glean is not None - res = glean.skills.list() + res = glean.skills.list(page_size=20) assert res is not None @@ -115,7 +115,7 @@ def test_skills_platform_skills_list_versions(): ) as glean: assert glean is not None - res = glean.skills.list_versions(skill_id="") + res = glean.skills.list_versions(skill_id="", page_size=20) assert res is not None @@ -176,7 +176,7 @@ def test_skills_platform_skills_preview_source(): assert glean is not None res = glean.skills.preview_source( - source_url="https://github.com/anthropics/skills", stream=False + source_url="https://github.com/anthropics/skills" ) assert res is not None diff --git a/tests/test_summarize.py b/tests/test_summarize.py index cac8e978..73486833 100644 --- a/tests/test_summarize.py +++ b/tests/test_summarize.py @@ -19,11 +19,11 @@ def test_summarize_summarize(): document_specs=[ { "ugc_type": models.DocumentSpecUgcType1.SHORTCUTS, - "content_id": 602763, + "content_id": 564062, }, { - "ugc_type": models.DocumentSpecUgcType1.SHORTCUTS, - "content_id": 602763, + "ugc_type": models.DocumentSpecUgcType2.COLLECTIONS, + "ugc_id": "", }, ] ) From 44b584a4967889845e352a9504ac3efb3bbe9173 Mon Sep 17 00:00:00 2001 From: "speakeasy-github[bot]" <128539517+speakeasy-github[bot]@users.noreply.github.com> Date: Sat, 26 Sep 2026 03:57:35 +0000 Subject: [PATCH 2/2] empty commit to trigger [run-tests] workflow